Перейти к содержанию
    

STM32 independent watchdog и дебаг в IAR

Подскажите пожалуйста с одним вопросом.

 

Как я понимаю independent watchdog, однажды заведенный, остановить невозможно. Но когда отлаживаю код в IAR, попадает на точку останова и там может находиться бесконечно долго, причем в это время даже таймеры стоят.

 

Оно то и правильно, но беспокоит один вопрос. А как же вочдог, каким образом он отключается во время дебага?

 

Подробности:

 

IAR 7.20, STM32F205, J-LINK (китайский)

 

В рабочем режиме (не в дебаге) вочдог работает, никаких проблем нет. Заводится вот так:

 

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

IWDG_SetPrescaler(IWDG_Prescaler_256);

IWDG_SetReload(0xFFF);

IWDG_Enable();

 

В задаче FreeRTOS периодически вызываю IWDG_ReloadCounter().

Изменено пользователем turnon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DBGMCU

Спасибо, прояснилось. А вот еще вопрос. Если в проекте есть брекпоинты, проект в IAR c factory settings: Debug и прошивка залита в МК, возможен ли останов на брекпоинтах (и в итоге зависание), если J-Link не подключен, или J-Link подключен но IAR закрыт?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если в проекте есть брекпоинты, проект в IAR c factory settings: Debug и прошивка залита в МК, возможен ли останов на брекпоинтах (и в итоге зависание), если J-Link не подключен, или J-Link подключен но IAR закрыт?

Если речь про программные бряки, то разве Вы не замечаете как IAR прошивает их во флешь после прошивки отлаживаемого образа, и удаляет при отключении отладки? Это трудно не заметить.

Если программный бряк по каким-то причинам остался во флешь, то будет вызываться соответствующее исключение (fault) при его достижении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если речь про программные бряки, то разве Вы не замечаете как IAR прошивает их во флешь после прошивки отлаживаемого образа, и удаляет при отключении отладки? Это трудно не заметить.

Да, замечал. Это вы дали ответ на еще один вопрос. Подразумевал что это бряки прошиваются, но не был уверен.

 

Если программный бряк по каким-то причинам остался во флешь, то будет вызываться соответствующее исключение (fault) при его достижении.

Ну например, просто убили процесс IAR и в МК осталась прошивка с бряками. Будет вызван HardFault_Handler ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если речь про программные бряки, то разве Вы не замечаете как IAR прошивает их во флешь после прошивки отлаживаемого образа, и удаляет при отключении отладки? Это трудно не заметить.

Если программный бряк по каким-то причинам остался во флешь, то будет вызываться соответствующее исключение (fault) при его достижении.

 

Брекпойнты бывают хардварные (небольшое количество, зависит от конкретного АРМа) и софтварные (скоко угодно, если софт позволяет).

Харварные, АФАИК, не во флэше

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

The BKPT instruction causes the processor to enter Debug state. Debug tools can use this

to investigate system state when the instruction at a particular address is reached.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну например, просто убили процесс IAR и в МК осталась прошивка с бряками. Будет вызван HardFault_Handler ?

Там есть спец. вектор для отладочного исключения. Откройте мануал - я точно не помню. Если оно запрещено, то очевидно будет эскалация до ХардФаулта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там есть спец. вектор для отладочного исключения. Откройте мануал - я точно не помню. Если оно запрещено, то очевидно будет эскалация до ХардФаулта.

Проверил. Поставил брекпоинт с зарубил процесс IAR'а. После ресета доходит до точки останова и виснет мертво, вочдог не работает. Отсюда мораль - никогда не заливать релиз из среды разработки, или проверять что это не дебаг версия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил. Поставил брекпоинт с зарубил процесс IAR'а. После ресета доходит до точки останова и виснет мертво, вочдог не работает. Отсюда мораль - никогда не заливать релиз из среды разработки, или проверять что это не дебаг версия.

Не преувеличивайте. Достаточно корректно отключить отладчик, а не выдёргивать кабель JTAG на ходу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...