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

Keil RTX

Пытаюсь перевести проект на 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

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


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

Не включен ли Trace в дебаггере? Не пробовали свести содержимое задач к минимуму: пустой бесконечный цикл?

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


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

Не включен ли Trace в дебаггере? Не пробовали свести содержимое задач к минимуму: пустой бесконечный цикл?

И включал, и отключал - одинаково. Это, вроде, как os_idle_demon работает.

Буду пробовать простейший проект на плате STM32VLDiscovery, там Trace нет. (Раньше на ней экспериментировал, все работало)

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


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

Насколько я понял Trace позволяет передавать информацию в раздел Debugl->OS Support->RTX Kernel->Events. Я прбовал ее включать, но после этого проект перестает работать и в Events ничего не отображается.

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


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

Насколько я понял 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. Перезапустил отладку - названия появились. Чудо!

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


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

Подскажите, Event Viewer работает только с U(J)LINK'ом, или с ST-Link тоже может? Разбираю простенький пример на STM32VLDiscovery, соответственно отладчик - встроенный ST-Link. Так в Event Viewer'е нет ничего, хотя RTX Tasks and System работает, задачи отображаются.

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


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

Через встроенный ST-Link работать не будет. Для EventViewer еще нужен проводок SWO.

C внешним ST-Link в режиме SWD и полным разъемом JTAG работает.

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


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

Пользуюсь ST-LINK, который на STMDISCOVERYF4. Там на 6-ногий разъем выведен и сигнал SWO. Вижу переключение задач в RTX.

При инициализации отладки в ini файле запускается строчка

_WDWORD(0xE0042004, 0x00000027); // Set DBGMCU_CR

 

P.S. Всего на своей плате для программирования-отладки имею 3 контакта + земля.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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