Бывает, при разных ошибках в коде возникают исключения. Переход по некорректному адресу, чтение или запись куда-то не туда, неправильная инструкция, да мало ли проблем. Как найти среди мешанины кода то место, где всё сломалось? Напрямую Кейл ничего не пишет, Список в Call Stack обычно пуст и не содержит ничего полезного (хотя иногда и обратное верно). Окошечек с информацией тоже нема. Грусть-печаль-тоска.
Но всегда можно вспомнить, что исключение — тоже вполне себе прерывание и действует, как и любое другое прерывание. То есть кладёт в стек копию 8 регистров: R0-R3, R12, LR, PC, CPSR. Нам нужен только PC, где содержится адрес инструкции, следующей за сбойной.
Вот как это можно подглядеть.
А ещё можно в поле Command записать
И получить ответ числом, как оно есть, не ползая по окну памяти.
Капитаню, конечно, но не всегда можно догадаться об этом сразу.
STM32. Определение положения сбойного кода.
teplofizik
| пятница, 02 августа 2013