ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
9 июля
1528829
Nikolay_Po (07.07.2025 19:10, просмотров: 736)
Не получается побороть отладку FreeRTOS OpenOCD+GDB. Начало в ветке товарища Клёна про починку OpenOCD (ссылка). 

https://caxapa.ru/1486732.html


Добился устойчивого запуска отладки с потоками, но только без полного выполнения стартапа. Если запускать отладку и не вполнять, то видно всё прекрасно. Выполняется переход в стартап и начинается инициализация. Отладка шагает. Всё хорошо, но связь OpenOCD с потоками теряется в ходе инициализации .bss.

Вот так оно пока работает (до кода инициализации bss):


Начинает шагать от a0 и до a1 и не доходя до конца инициализации .bss. Ставлю точку останова на строке 351 sw.zero 356, там:


/* Configure pipelining and instruction prediction */
li t0, 0x1f
csrw 0xbc0, t0

и отладка отказывает с сообщением OCD:
"
Error: Error: null stack pointer in thread

Error: RTOS: failed to get register list
"
Далее, отладка не работает, точки останова не срабатывают. При нажатии "Паузы" - ошибка уже от GDB: "Interrupt failed". И можно только остановить отладку, тогда в OCD проходит команда shutdown и всё тихо-мирно сворачивается.
Куда копать?
Может, я ошибаюсь, и инициализация bss не при чём, а проблема в последующем доступе к csrw?