Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cortex M3 stack trace
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
andrewlekar
Ищу код для стек трейсов для Cortex M3 для IAR. Ничего толкового не могу найти.
Сейчас используется вот такой код. PC там похож на правду, но как и почему это работает, я не понимаю.

Код
uint32_t amsp   =      __get_MSP();
  uint32_t apsp   =      __get_PSP();
  
  debug_hard("MSP = ");
  debug_print_stack((uint32_t *)(amsp + 0x24));
  
  debug_hard("PSP = ");
  debug_print_stack((uint32_t *)(apsp + 0x24));


Кроме того, хотелось бы знать, насколько реально сделать stack unwinding и наблюдать цепочку вызовов, вызвавших исключение. Ну и до кучи, нужно ли выделять стек для исключений процессора (HardFault) при условии, что там вызывается только отладочный вывод и бесконечный цикл?
maksimp
Вполне можно стек разобрать вручную, если выгнать его весь в компьютер и смотреть в шестнадцатеричном коде. Найти адрес возврата, отсчитать по ассемблерному листингу сколько в стек ещё всякого положили, найти следующий адрес возврата и так далее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.