реклама на сайте
подробности

 
 
> Прерывания в пошаговом режиме Keil
Arlleex
сообщение Oct 24 2016, 23:45
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Доброй ночи.

Интересует вопрос, почему в Keil uVision Cortex M4 (STM32F4) в режиме отладки по SWD (ST-Link) не заходит в прерывания в пошаговом режиме? Да не только даже в пошаговом. В режиме Step Over тоже, при этом в регистрах NVIC контроллера и в регистрах флагов прерываний самой периферии (SPI) вижу, что прерывание генерируется, в NVIC оно в состоянии Pending, но прерываний больше никаких нет, все разрешены, казалось бы, пожалуйста - бери на себя процессорное время да выполняйся, а нет, не хочет - причем так глюкованно ведет себя, что совсем не понятно.
В режиме пошаговой отладки прерывания не вызываются НИКОГДА.
В режиме Step Over они вызываются при вызове функции, в которой при записи регистра вызывается прерывание по завершению передачи. Я его ловлю когда делаю Step Over над этой функцией. Ну а если выполнить запись в регистр Single Step-ом, увидеть в NVIC что прерывание ушло в Pending (при этом в периферии тоже видно, что флажок установился на запрос прерывания), то стоит разместить чуть дальше (да хоть на следующей строчке) брэкпоинт, или выполнить до курсора - то прерывание выполняется.

С чем связано такое поведение?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KnightIgor
сообщение Oct 25 2016, 14:06
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Arlleex @ Oct 25 2016, 01:45) *
В режиме пошаговой отладки прерывания не вызываются НИКОГДА.

Определите, что такое "не вызываются"? Вообще не исполняется код обработчика прерывания, или отладчик не входит в код обработчика прерывания при пошаге, хотя таковое наверняка щелкает?
Если первое - не верю. Даже объяснять не буду, почему. Если второе - то слава провидению и программистам отладчика! Если при пожаговом исполнении попадать в прерывания, то НИКОГДА не получится отладить "синхронный" код, поскольку будете только и делать, что попадать в прерывания. И я на такое наткнулся: использовал какую-то плату Discovery со встроенным, как известно, ST-Link. Так вот (как раскопал и устанил), из-за старой версии драйвера ST-Link и новой прошивки последнего при каждом шаге отладки влетал в какую-нибудь процедуру IRQ.

Хотите стать в IRQ - поставьте там точку останова.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 03:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01597 секунд с 7
ELECTRONIX ©2004-2016