Jump to content
    

Release v5.1.0 и поддержка в openOCD

Всем привет!

 

Собственно сабж.

 

Подробности по ссылке

 

Из заметного:

  • добавлен Blackfin/GCC порт и примеры;
  • отладочные фичи - можно задавать в режиме отладки строковые имена процессам и появилась возможность совместно с openOCD вести отладку с поддержкой RTOS, т.е. в отладчике видны процессы, их статусы, контексты, стеки вызовов. Работает это пока только для Cortex-M0/M3, GCC порт. openOCD из главного репозитория пока (надеюсь, что только пока) это не поддерживает, т.к. мы ещё не отправляли туда соответствующие добавление (ждём разрешения ситуации с M4). Для работы нужно скачать openOCD из этого репозитория и собрать. Проверялось на GDB, Insight и Eclipse.

Share this post


Link to post
Share on other sites

:1111493779:

У меня такое впечатление, что никто не понял, в чём состоит новая отладочная функциональность. Я, в общем-то, тоже этого не понял, пока не посмотрел на картинку. Поэтому прилагаю картинку отладчика, чтоб все могли оценить.

Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно.

post-29684-1461317955_thumb.png

Share this post


Link to post
Share on other sites

Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно.

А вот так выглядит это в gdb-insight. Видно четыре процесса - их приоритеты, имена и состояния, видно, что активный IdleProc, остальные в саспенде.

 

post-1343-1461319096_thumb.png

 

Можно посмотреть, чего ждут неактивные процессы: MainProc (слева) и Terminal (справа):

 

post-1343-1461319138_thumb.pngpost-1343-1461319150_thumb.png

 

Как видно, MainProc находится в слипе, а процесс Terminal ждёт флага событий.

 

Теперь ставим брейкпоинт на функции, вызываемой из процесса Terminal, посылаем через терминал команду, попадаем в останов:

 

post-1343-1461319109_thumb.png

 

Теперь видно, что IdleProc находится в состоянии Preempted, активный - Terminal.

 

Ну, и на всех картинках видно, что помимо состояния процесса и его стека вызовов отображается также и его контекст - содержимое регистров.

 

В общем, вся эта информация может оказаться весьма полезной. Лично для самым ценным является стек вызовов процесса - бывает, что какой-то процесс не проявляет признаков жизни, где-то залип, что-то ждёт, а что - не ясно. И вот эта фича как раз позволяет быстро увидеть, где он там пророс, т.е. локализовать направление поиска.

Share this post


Link to post
Share on other sites

Исправил ошибки в нашем клоне openOCD:

- в прерываниях, возникших во время передачи управления неверно определялся активный процесс, что вводило gdb в шок и он рвал соединение.

- поменял местами маркирование вытесненного (preempted) и приостановленного (suspended) состояний процесса. Теперь процесс, отдавший управление сам, помечается как приостановленный, а тот, управление у которого отобрал более приоритетный процесс - как вытесненный.

 

Поправка к первому сообщению темы: работает не только с Cortex-M0/M3, но и с ARM7TDMI (хотя это сейчас уже мало кому может быть интересно).

 

По опыту работы в течении двух лет: поддержка ОС в отладчике существенно облегчает отладку.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...