Comments 19
Очень любопытно, особенно asm(«BKPT #0»); возьму на вооружение. Ваш код UART контрастирует с кодом UART из соседней статьи.
Так тот код студенты писали.
То преподавателей писал
Вам обязательно быть токсичными засранцами?
Нет, но правда она такая.
Правда о том, что ты докопался до забора, автор той статьи тебя не понял и ты теперь ходишь и рассказываешь даже в соседних темах какой он неразумный? На твой вопрос, к слову, дальше дали ответ, а встречный вопрос ты проигнорировал. Ту статью я считаю достаточно качественной, а твоё поведение (и ещё пары товарищей из комментов) — неадекватным и деструктивным.
Идея интересная, буду ждать продолжения!
Пара ремарок:
Spoiler header
Если вы пользуетесь HAL'ом, то вы автоматически пользуетесь и библиотекой CMSIS, которая дает следующие возможности:
- вместо ассемблерной вставки можно использовать псевдоним __BKPT; аналогичные псевдонимы есть для большинства ассемблерных команд
- адреса отладочных регистров можно не определять самостоятельно, к ним есть доступ через "структуру" CoreDebug —
CoreDebug->DEMCR, например
Находим адрес любой инструкции в цикле функции main средствами IDE и активируем точку останова:
FP->FP_COMP[0] = 0x080017CC | 1; // адрес середины бесконечного цикла = 0x080017CC
И так при каждой компиляции программы узнавать через отладку адреса всех нужных точек остановки? Не проще ли breakpoint поставить? Ну или можно как-то «автоматизировать» выдергивание адресов нужных инструкций?
P.S. DebugMon на самом деле идеально не для инструкций использовать, а для переменных, чьи адреса всегда известны. Жду продолжения.
Ожидал статью про то, как прикрутить gdb агент...

В самом деле у ARM Cortex-M4 есть такие регистры (Flash Patch and Breakpoint Unit).
Получается можно из UART-CLI ставить и проверять точки останова.
А где можно посмотреть бинарную структуру регистра FP_CTRL ?
0xE0002000 FP_CTRL FlashPatch Control Register
В доке Cortex-M4 Technical Reference Manual Revision r0p0 (который 117 стр)
Эта информация отсутствует.
Sign up to leave a comment.
Отладка микроконтроллеров ARM Cortex-M по UART