Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Release v5.1.0 и поддержка в openOCD
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > scmRTOS
dxp
Всем привет!

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

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

Из заметного:
  • добавлен Blackfin/GCC порт и примеры;
  • отладочные фичи - можно задавать в режиме отладки строковые имена процессам и появилась возможность совместно с openOCD вести отладку с поддержкой RTOS, т.е. в отладчике видны процессы, их статусы, контексты, стеки вызовов. Работает это пока только для Cortex-M0/M3, GCC порт. openOCD из главного репозитория пока (надеюсь, что только пока) это не поддерживает, т.к. мы ещё не отправляли туда соответствующие добавление (ждём разрешения ситуации с M4). Для работы нужно скачать openOCD из этого репозитория и собрать. Проверялось на GDB, Insight и Eclipse.
AHTOXA
1111493779.gif
У меня такое впечатление, что никто не понял, в чём состоит новая отладочная функциональность. Я, в общем-то, тоже этого не понял, пока не посмотрел на картинку. Поэтому прилагаю картинку отладчика, чтоб все могли оценить.
Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно.
dxp
QUOTE (AHTOXA @ Apr 22 2016, 15:44) *
Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно.

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

Нажмите для просмотра прикрепленного файла

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

Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла

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

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

Нажмите для просмотра прикрепленного файла

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

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

В общем, вся эта информация может оказаться весьма полезной. Лично для самым ценным является стек вызовов процесса - бывает, что какой-то процесс не проявляет признаков жизни, где-то залип, что-то ждёт, а что - не ясно. И вот эта фича как раз позволяет быстро увидеть, где он там пророс, т.е. локализовать направление поиска.
Сергей Борщ
Исправил ошибки в нашем клоне openOCD:
- в прерываниях, возникших во время передачи управления неверно определялся активный процесс, что вводило gdb в шок и он рвал соединение.
- поменял местами маркирование вытесненного (preempted) и приостановленного (suspended) состояний процесса. Теперь процесс, отдавший управление сам, помечается как приостановленный, а тот, управление у которого отобрал более приоритетный процесс - как вытесненный.

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

По опыту работы в течении двух лет: поддержка ОС в отладчике существенно облегчает отладку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.