Кто-нибудь разбирался как на RISC-V/GCC можно размотать стек
вызовов (сделать stack trace)? Для AVR/IAR это было элементарно и
очень полезно временами - при перезапуске в результате сбоя моя
прошивка сохраняла и показывала стек вызовов и либо сразу было
видно, где в программе произошел сбой, либо видно, что в стеке был
мусор и это какое-то переполнение. Пробую портировать на RISC-V/GCC один давний проект сделанный изначально на AVR/IAR и перед этим портированный на ARM/IAR, но не полностью. GCC взят так как IAR для RISC-V не ломается до рабочего состояния, на сколько я знаю.
В проете накопилось много всякого полезного, удобного и завязанного на компилятор и архитектуру:
- экран смерти с дампом стека вызовов
- не инициализируемые переменные
- переменные уложенные до заданному адресу
- атомарно выполняемые функции
- подмена библиотечных функций работы со временем на модифицированные
- прозрачная работа c EEPROM/эмуляция EEPROM.
- обновление прошивки