STM32Cube IDE Тот же код в конечном итоге запускается или находится в жестком сбое ... Русский рулет

Я столкнулся с проблемой, когда моя IDE меня троллит.

У меня есть простой проект, в котором я отслеживаю обратную связь с mcu через ITM (SWO), и в основном то, что происходит, - это когда я запускаю отладчик STlink, он подключается к программе мигания устройства, а затем IDE игнорирует все точки останова. Я останавливаю его вручную, чтобы обнаружить, что я перешел от обработчика сброса к обработчику по умолчанию, я присвоил ему псевдонимы всех обработчиков, кроме жесткого сбоя.

И тогда начали происходить странные вещи. я проверил свой код... ничего криминального. вообще.. проверил память, все там где положено быть. проверил память для таблицы векторов... снова сначала указатель стека, затем адрес обработчика сброса (режим большого пальца). все в порядке. Я снова запускаю отладчик, и он работает как шарм.

Поэтому я решил снова перезапустить отладчик, ничего не меняя в коде, и я оказался в состоянии жесткого сбоя... затем я снова запускаю его без жесткого сбоя, но я использую обработчик по умолчанию. и он случайно выходит из строя или работает. Я потратил 2-3 часа, проверяя каждый бит и инструкции, чтобы увидеть, что может пойти не так. но похоже, что он случайным образом выбирает, куда идти - hardfault, запускать нормально или решил, что ему нужен обработчик по умолчанию.

Согласно этой памяти он должен хотя бы попытаться перейти к обработчику сброса

0x20010000 Указатель стека - адрес правильный, проверил.

0x080001D5 указывает на сброс обработчика 0x080001D4.

0x080001C9 Адрес обработчика по умолчанию, следующий - hardfault.

Теперь еще более странные вещи... Я переключил отладчик на OPENOCD и...

xPSR: 0x61000000 pc: 0x20000084 msp: 0x20010000

он явно пытается загрузиться из ОЗУ, не знаю, почему и что происходит, мой обработчик сброса ясно говорит ему искать что-то еще. а затем после нескольких перезапусков отладчика он работает нормально.

ОБНОВИТЬ:

Теперь я на 100% уверен, что это фанковое поведение IDE. Я просматриваю всю программу в отдельном клиенте openOCD, и она работает как шарм. никаких аппаратных сбоев или других неожиданных переходов к обработчикам.

0 ответов

Другие вопросы по тегам