Комментарии 5
и ST тут ни при чём, но в документации на тест DSP про это ни слова
Но, почему ни при чём? Eсли это их библиотека для тестирования, и она предполагает, что флаги в регистре будут в состоянии 0000, но сама их в это состояние не переводит, то я бы написал баг-репорт.
Кроме того непонятна необходимость сброса этих флагов в основном коде, а не в коде, который крутится в диагностическом потоке.
Спасибо за разбор, особенно за кусок про то, как ошибка пропадала под отладчиком.
Ваш GE — частный случай очень противной категории: самопроверка молча считает, что стартует с чистого состояния, а состояние ей досталось от предыдущей работы. У меня недавно был тот же по духу случай на несколько этажей выше: обёртка над базой подставляла запрос через JS-замену, где `$$` означает один `$`. Долларовые кавычки схлопывались, запрос не выполнялся, а обёртка отвечала HTTP 200 с телом-ошибкой. Проверка «уже делали это?» читала пустоту и всегда отвечала «нет».
Общее у наших историй в том, что тест проверял свой участок и радовался, а сломан был контракт со слоем, в который никто не заглядывал.
Вопрос по вашему выходу из ситуации: вы в итоге остановились на сбросе GE перед диагностикой или совсем отказались от SIMD в этом месте? Интересно, насколько дорого обошёлся отказ по времени выполнения.
На обычном коде без DSP-инструкций это были бы
CMP+ ветвление на каждый отсчёт
Строго говоря, и обычными средствами можно обойтись без переходов, используя команду IT, но, понятно дело, в специализированных случаях специализированные средства эффективнее -- команды DSP не просто так ввели.
У ST существует официальный ES0647 — X-CUBE-CLASSB self-test library software errata, где описана буквально эта самая ошибка:
APSR register content is incorrectly assumed to have all GE bits cleared during the test.
И ST прямо пишет, что при GE != 0 функция CPU TMCB способна вернуть STL_FAILED на полностью исправном процессоре. Это классифицировано как false positive.
Не понимаю зачем так мусолить повествование о примитивном баге про который знает любая заштатная модель. Или на подписке экономите?

История одного бага