Инструменты пользователя

Инструменты сайта


ob:o7:debug

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ob:o7:debug [2017/04/06 23:08]
иван_денисов [Пример отладчика]
ob:o7:debug [2020/10/29 07:08] (текущий)
Строка 59: Строка 59:
  
  
-===== Пример отладчика=====+===== Пример отладчика =====
  
 Чтобы осуществлять отладку микроконтроллера необходимо обмениваться сообщениями. Более подробно организация обмена описана в заметке [[ob:o7:trimble|Обмен сообщениями с контроллером]]. Чтобы осуществлять отладку микроконтроллера необходимо обмениваться сообщениями. Более подробно организация обмена описана в заметке [[ob:o7:trimble|Обмен сообщениями с контроллером]].
Строка 191: Строка 191:
 <code>^Q "MobxDebug.Open('COM1')"</code> <code>^Q "MobxDebug.Open('COM1')"</code>
  
-For Linux+Для Linux будет следующая команда:
 <code>^Q "MobxDebug.Open('/dev/ttyUSB0')"</code> <code>^Q "MobxDebug.Open('/dev/ttyUSB0')"</code>
  
Строка 198: Строка 198:
  
 В журнал Блэкбокса будет выведена информация: В журнал Блэкбокса будет выведена информация:
-<code>pc:  3028 +<code>pc:  3155 
-pos:  309+pos:  337
 code:  7</code> code:  7</code>
  
-Program Counter (pc) равен 3028, что больше 3019 (см. информацию при сборке), а значит аварийная остановка произошла в модуле MobxAssert в положении 309 с кодом 7.+Program Counter (pc) равен 3155, что больше 3146 (см. информацию при сборке), а значит аварийная остановка произошла в модуле MobxAssert в положении 337 с кодом 7.
  
 Чтобы перейти к положению ошибки в модуле, удобно воспользоваться инструментом **O7->Position**. Чтобы перейти к положению ошибки в модуле, удобно воспользоваться инструментом **O7->Position**.
 +
 +
 +===== Сторожевой таймер =====
 +
 +Чтобы определить, когда микроконтроллер «завис» в бесконечном цикле, полезным инструментом является сторожевой таймер **MicroARMv7MSTM32F4WWDG** ([[https://github.com/aixp/O7/blob/master/Micro/Files/STM32F4IWDG.odc|github]]).
 +
 +Чтобы его использовать, сначала необходимо выполнить процедуру **Init**, и затем периодически вызывать процедуру **Update**. Тогда, при «зависании» микроконтроллера сработает **аварийная остановка с кодом 20**, и возможно определить место в программе, где это произошло (**Traps.trap.pc**)
 +
 +Более универсальный сторожевой таймер не имеет возможности определения места остановки: **MicroSTM32FxIWDG** ([[https://github.com/aixp/O7/blob/master/Micro/Files/STM32FxIWDG.odc|github]]). Но зато он работает на любых типах микроконтроллеров моделей STM32F.
 +
 +
 +----
 +
 +Авторы заметки: [[http://iadenisov.ru|И. А. Денисов]], А. В. Ширяев
  
ob/o7/debug.1491509316.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)