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

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

Всем привет!

 

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

 

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

 

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

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

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


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

:1111493779:

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

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

post-29684-1461317955_thumb.png

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


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

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

А вот так выглядит это в 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.

 

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

 

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

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


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

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

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

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

 

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

 

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

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


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

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

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

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

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

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

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

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

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

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