Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil RTX
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > Keil
ViKo
Пытаюсь перевести проект на RTOS. Сделал из функций 4 задачи, первая создает 3 оставшихся и удаляет себя. Но вопрос где-то еще до того - при вызове этой первой задачи os_sys_init залетаю куда-то в... вот туда, в коде показано. И "висю" там. Видел подобный вопрос в форуме Keil, но в ответ там предлагают обращаться по e-mail. Может быть, ОЗУ не хватает? Этот адрес 0xe000007c - какой-то ITM, Stimulus Port... Что делать?

Код
                 dbg_task_notify:
0x080050BC F04F4260  MOV      r2,#0xE0000000
0x080050C0 6FD3      LDR      r3,[r2,#0x7C]
0x080050C2 2B00      CMP      r3,#0x00
0x080050C4 D0FC      BEQ      0x080050C0
uriy
Не включен ли Trace в дебаггере? Не пробовали свести содержимое задач к минимуму: пустой бесконечный цикл?
ViKo
Цитата(uriy @ Feb 21 2012, 22:42) *
Не включен ли Trace в дебаггере? Не пробовали свести содержимое задач к минимуму: пустой бесконечный цикл?

И включал, и отключал - одинаково. Это, вроде, как os_idle_demon работает.
Буду пробовать простейший проект на плате STM32VLDiscovery, там Trace нет. (Раньше на ней экспериментировал, все работало)
uriy
Насколько я понял Trace позволяет передавать информацию в раздел Debugl->OS Support->RTX Kernel->Events. Я прбовал ее включать, но после этого проект перестает работать и в Events ничего не отображается.
ViKo
Цитата(uriy @ Feb 22 2012, 07:58) *
Насколько я понял Trace позволяет передавать информацию в раздел Debugl->OS Support->RTX Kernel->Events. Я прбовал ее включать, но после этого проект перестает работать и в Events ничего не отображается.

После разных экспериментов по интернет сообщениям (все и не упомнить) получается следующее.
Если разрешить в конфигурации RTX "Run in priveleged mode", то программа не вылетает в dbg_task_notify, задачи переключаются (сделал таймаут не бесконечный для проверки). И в Event Viewer я их вижу. Trace Events все отключил (это не события RTX, а события микроконтроллера), но тут можно еще поэкспериментировать, что-то работает совместно, что-то нет.
Отладчик - Keil ULINK-ME.
И еще, кажется, нужно такую хрень запускать при отладке. Добавить ее в file.ini, и использовать его при отладке. Показываю часть файла.
Код
/*-------------------------------------------------------------------
* Define the function to enable the trace port
*-----------------------------------------------------------------*/
FUNC void EnableTPIU(void) {
  _WDWORD(0xE0042004, 0x00000020);    // Set asynchronuous communication via DBGMCU_CR
}
G , main
/*-------------------------------------------------------------------
* Invoke the function at debugger startup
*-----------------------------------------------------------------*/
EnableTPIU();

Правда, моя программа так и не хочет работать, как нужно. Буду разбираться с задачами дальше.
P.S. А еще все мои задачи в Event Viewer отображаются как <Error> (2), <Error> (3), <Error> (4)
P.P.S. Перезапустил отладку - названия появились. Чудо!
Drunya
Подскажите, Event Viewer работает только с U(J)LINK'ом, или с ST-Link тоже может? Разбираю простенький пример на STM32VLDiscovery, соответственно отладчик - встроенный ST-Link. Так в Event Viewer'е нет ничего, хотя RTX Tasks and System работает, задачи отображаются.
uriy
Через встроенный ST-Link работать не будет. Для EventViewer еще нужен проводок SWO.
C внешним ST-Link в режиме SWD и полным разъемом JTAG работает.
ViKo
Пользуюсь ST-LINK, который на STMDISCOVERYF4. Там на 6-ногий разъем выведен и сигнал SWO. Вижу переключение задач в RTX.
При инициализации отладки в ini файле запускается строчка
_WDWORD(0xE0042004, 0x00000027); // Set DBGMCU_CR

P.S. Всего на своей плате для программирования-отладки имею 3 контакта + земля.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.