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

 
 
> Прерывания в пошаговом режиме 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
jcxz
сообщение Oct 26 2016, 20:08
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(KnightIgor @ Oct 25 2016, 17:06) *
Если первое - не верю. Даже объяснять не буду, почему.

Верьте - не верьте, но в IAR например даже галка такая специальная есть: "Запрет прерываний в пошаговом режиме" (как то так называется). И, если её поставить, именно вызываться ISR не будет. Всегда её ставлю.
Но только при "шагании"; при step over функции прерывание может успеть обработаться.
Как я понимаю, при каждом шаге, отладчик просто делает временный запрет прерываний.
Вероятно подобная галка может быть где-нить и в Keil.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Oct 27 2016, 20:50
Сообщение #4


Знающий
****

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



Цитата(jcxz @ Oct 26 2016, 22:08) *
Верьте - не верьте, но в IAR например даже галка такая специальная есть: "Запрет прерываний в пошаговом режиме" (как то так называется).
Вероятно подобная галка может быть где-нить и в Keil.

Галки такой в KEIL не наблюдал.
По поводу "не верю". Из текста ТС было не ясно, что именно в ISR происходит. " Не верю" касалось варианта, что, якобы, код ISR вообще никак не отрабатывается.
Go to the top of the page
 
+Quote Post



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

 


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


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