реклама на сайте
подробности

 
 
> FreeRTOS - минимальное время тика?
maxntf
сообщение May 22 2018, 09:36
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008



Всем привет.
На FreeRTOS вертятся 3 задачи, больше ничего из инструментария ОС не пользую.
Так вот когда configTICK_RATE_HZ установлен 1000Hz, все работает без проблем. Меняю это значение на 10000Hz, после ресета все задачи какое то время работают, а потом работает только одна - 2-я задача (скорее работает просто функция). Шедуллер перестает работать вовсе - vApplicationTickHook перестает вызываться и задачи не переключаются.
МК STM32L152rc работает на 16MHz.
В чем может быть дело?
Как отследить где планировщик заткнулся и почему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
k155la3
сообщение May 22 2018, 11:43
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Кроме всего, проверьте значения стеков задач (не помню, в FreeRTOS он общий или индивидуальные).
В настройках ОС задайте максимум, насколько позволит RAM. Если используются библиотеки - трудно сказать, как они потребляют стековую память.
Вместо "библиотечной" клавиатуры поставьте обычные кнопки или софт-эмулятор или эмулятор через USART.
Клавиатурная задача - самый низкий приоритет. Когда заработает "как надо" - прикрутите.
Цитата
Сразу оговорюсь, с ARM только начал разбираться, так что некоторые мои рассуждения могут быть глупые, не судите строго . . .
Аналогично sm.gif
Цитата
Сейчас просматриваю не использует ли она какие то аппаратные ресурсы что и ОС, например SysTickTimer.
Если есть осцилограф - ловится "на-раз" ногодрыгом.
Можно также под отладчиком поставить контрольную точку по состоянию (изменение) на требуемый регистр.
Go to the top of the page
 
+Quote Post
maxntf
сообщение May 22 2018, 11:53
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008



Цитата(k155la3 @ May 22 2018, 14:43) *
Можно также под отладчиком поставить контрольную точку по состоянию (изменение) на требуемый регистр.

В Кеил брекпоинт можно поставить только на весь регистр, вот если бы на изменение бита.sm.gif
Глючит из за библиотеки, там в прерывании таймера, у меня TIM3, вызывается некая функция обработчика этих кнопок. Вот тут то и происходит баг.

Сообщение отредактировал maxntf - May 22 2018, 11:58
Go to the top of the page
 
+Quote Post
k155la3
сообщение May 22 2018, 12:02
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(maxntf @ May 22 2018, 14:53) *
В Кеил брекпоинт можно поставить только на весь регистр, вот если бы на изменение бита.sm.gif
Глючит из за библиотеки, там в прерывании таймера, у меня TIM3, вызывается некая функция обработчика этих кнопок. Вот тут то и происходит баг.
Апп. прерывания надо переносить под FreeRTOS иначе . . .
Соотв-но "напрямую" использовать библиотеки с апп. прерываниями без адаптации - могут быть "варианты". IMHO (чтобы не подрались с прерыванием планировщика).


Go to the top of the page
 
+Quote Post
maxntf
сообщение May 22 2018, 12:27
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008



Цитата(k155la3 @ May 22 2018, 15:02) *
Апп. прерывания надо переносить под FreeRTOS иначе . . .
Соотв-но "напрямую" использовать библиотеки с апп. прерываниями без адаптации - могут быть "варианты". IMHO (чтобы не подрались с прерыванием планировщика).

Не понял что значит переносить под FreeRTOS?
Какие могут быть коллизии, если FreeRTOS использует прерывания с самыми высокими приоритетами? Я же обработчик делаю на низкоприоритетных TIM3 приоритет 36, а SysTick приоритет 6;

В общем из за малого опыта, тажело судить что происходит, но причина выявлена - 100% перестает работать SysTick, а соответственно и scheduler который крутится на этом таймере.
Вот только что происходит с SysTick, понять не могу.

Кто может, опишите регистры SysTick или ткните где посмотреть.

PS:
Судя по функции SysTick_Config там всего 3 бита, интуитивно по названиям дефайнов SysTick_CTRL_CLKSOURCE_Msk, SysTick_CTRL_TICKINT_Msk, SysTick_CTRL_ENABLE_Msk. один включает тактирование, второй инициализирует и третий запускает. Вот этот SysTick_CTRL_TICKINT_Msk и сбрасывается. Где не могу поймать. если бы в Кеил можно было установить брекпоинт на запись в бит. Кто знает можно такое?

Сообщение отредактировал maxntf - May 22 2018, 12:43
Go to the top of the page
 
+Quote Post
k155la3
сообщение May 22 2018, 13:19
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(maxntf @ May 22 2018, 15:27) *
Не понял что значит переносить под FreeRTOS? Какие могут быть коллизии, если FreeRTOS использует прерывания с самыми высокими приоритетами? Я же обработчик делаю на низкоприоритетных TIM3 приоритет 36, а SysTick приоритет 6; . . .
Очевидно, это процессор-зависимое требование. Возможно для ARM и не требуется.
В Demo FreeRTOS serial.c для STM32L152 в обработчике используется макрос portEND_SWITCHING_ISR( . . . ).
Код
void USART3_IRQHandler( void )
{
  . . . . . . . .
    /* If sending or receiving from a queue has caused a task to unblock, and
    the unblocked task has a priority equal to or higher than the currently
    running task (the task this ISR interrupted), then xHigherPriorityTaskWoken
    will have automatically been set to pdTRUE within the queue send or receive
    function.  portEND_SWITCHING_ISR() will then ensure that this ISR returns    <<<
    directly to the higher priority unblocked task. */                                             <<<
    portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
}

Код
#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired != pdFALSE ) portYIELD_WITHIN_API()
#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )





Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- maxntf   FreeRTOS - минимальное время тика?   May 22 2018, 09:36
- - nanorobot   Цитата(maxntf @ May 22 2018, 14:36) Всем ...   May 22 2018, 09:57
- - haker_fox   QUOTE (maxntf @ May 22 2018, 17:36) Как о...   May 22 2018, 10:24
|- - maxntf   Цитата(haker_fox @ May 22 2018, 13:24) 1....   May 22 2018, 11:27
- - k155la3   Цитата(maxntf @ May 22 2018, 12:36) . . ....   May 22 2018, 10:31
|- - haker_fox   QUOTE (k155la3 @ May 22 2018, 18:31) Рабо...   May 22 2018, 10:34
|- - esaulenka   Цитата(maxntf @ May 22 2018, 15:27) В общ...   May 22 2018, 12:44
- - maxntf   Я функцию TSL_tim_ProcessIT перенес в TIM3. Возмож...   May 22 2018, 12:58
|- - esaulenka   Цитата(maxntf @ May 22 2018, 15:58) Я фун...   May 22 2018, 14:21
- - haker_fox   QUOTE (k155la3 @ May 22 2018, 19:43) Кром...   May 22 2018, 13:08
|- - maxntf   Цитата(haker_fox @ May 22 2018, 16:08) Кс...   May 23 2018, 10:57
- - Forger   Цитата(maxntf @ May 22 2018, 12:36) Меняю...   May 22 2018, 17:56
- - uriy   Тоже никогда не делал меньше 1 мс. Зачем вам это п...   May 23 2018, 04:19
|- - k155la3   Цитата(uriy @ May 23 2018, 07:19) Тоже ни...   May 23 2018, 08:55
|- - Forger   Цитата(k155la3 @ May 23 2018, 11:55) Зада...   May 23 2018, 09:01
- - maxntf   Нашел костыль. В функции обработка кнопок есть деф...   May 23 2018, 12:16
|- - Forger   Цитата(maxntf @ May 23 2018, 15:16) Нашел...   May 23 2018, 12:25
||- - maxntf   Цитата(Forger @ May 23 2018, 15:25) Это е...   May 23 2018, 12:46
||- - Forger   Цитата(maxntf @ May 23 2018, 15:46) Нужны...   May 23 2018, 12:49
|- - esaulenka   Цитата(maxntf @ May 23 2018, 15:16) Нашел...   May 23 2018, 19:46
||- - maxntf   Цитата(esaulenka @ May 23 2018, 22:46) Со...   May 24 2018, 08:26
||- - Forger   Цитата(maxntf @ May 24 2018, 11:26) Тольк...   May 24 2018, 09:59
|- - jcxz   Цитата(maxntf @ May 23 2018, 15:16) , а я...   May 23 2018, 22:31
|- - volodya   Цитата(jcxz @ May 24 2018, 01:31) А какой...   May 24 2018, 04:27
|- - jcxz   Цитата(volodya @ May 24 2018, 07:27) Вот ...   May 24 2018, 06:17
|- - Forger   Цитата(jcxz @ May 24 2018, 09:17) вместе ...   May 24 2018, 06:27
|- - jcxz   Цитата(Forger @ May 24 2018, 09:27) вся о...   May 24 2018, 11:11
|- - Forger   Цитата(jcxz @ May 24 2018, 14:11) Мне тож...   May 24 2018, 12:03
|- - jcxz   Цитата(Forger @ May 24 2018, 15:03) Работ...   May 24 2018, 13:59
|- - Forger   Цитата(jcxz @ May 24 2018, 16:59) Что зна...   May 24 2018, 14:14
- - Arlleex   FreeRTOS работает хорошо и правильно, если с ней п...   May 24 2018, 07:28
- - Baser   Цитата(jcxz @ May 24 2018, 01:31) А какой...   May 24 2018, 08:34
|- - Turnaev Sergey   Цитата(Baser @ May 24 2018, 11:34) А по м...   May 24 2018, 13:25
|- - esaulenka   Цитата(Turnaev Sergey @ May 24 2018, 16:2...   May 25 2018, 07:31
|- - jcxz   Цитата(esaulenka @ May 25 2018, 10:31) Кл...   May 25 2018, 19:29
- - maxntf   Что то кажется мне, что дело не в тачлиб, во второ...   May 24 2018, 09:14
- - uriy   ЦитатаНо есть и минус (для меня): пока что нет у S...   May 25 2018, 05:04
|- - Forger   Цитата(uriy @ May 25 2018, 08:04) А про э...   May 25 2018, 05:14
- - uriy   У меня было такое же мнение о вертикальной прокрут...   May 25 2018, 06:12
|- - Forger   Цитата(uriy @ May 25 2018, 09:12) А J-lin...   May 25 2018, 06:17
- - maxntf   Потихоньку разбираюсь далее с FreeRTOS. Возникла н...   May 29 2018, 10:17
|- - jcxz   Цитата(maxntf @ May 29 2018, 13:17) Есть ...   May 29 2018, 10:26
||- - maxntf   Цитата(jcxz @ May 29 2018, 13:26) Чтобы н...   May 29 2018, 10:33
||- - jcxz   Цитата(maxntf @ May 29 2018, 13:33) P.S. ...   May 29 2018, 10:44
||- - ViKo   Цитата(jcxz @ May 29 2018, 13:44) у Вас в...   May 29 2018, 11:04
||- - jcxz   Цитата(ViKo @ May 29 2018, 14:04) 1600 А ...   May 29 2018, 11:07
||- - ViKo   Цитата(jcxz @ May 29 2018, 14:07) А если ...   May 29 2018, 11:11
||- - jcxz   Цитата(ViKo @ May 29 2018, 14:11) 10 кГц ...   May 29 2018, 11:17
||- - ViKo   Я думал, речь идет по-прежнему про частоту работы ...   May 29 2018, 11:24
|- - Forger   Любого ждет анафема, кто замечен за подобными злод...   May 29 2018, 11:11
|- - jcxz   Цитата(Forger @ May 29 2018, 14:11) Любог...   May 29 2018, 11:29
|- - Forger   Я же все объяснил на конкретном примере. Еще раз,...   May 29 2018, 13:01
|- - jcxz   Цитата(Forger @ May 29 2018, 16:01) а тут...   May 29 2018, 13:37
|- - Forger   Цитата(jcxz @ May 29 2018, 16:37) В прогр...   May 29 2018, 13:51
|- - jcxz   Цитата(Forger @ May 29 2018, 16:51) Или В...   May 29 2018, 14:00
|- - Forger   Цитата(jcxz @ May 29 2018, 17:00) Ещё раз...   May 29 2018, 14:15
|- - maxntf   Цитата(jcxz @ May 29 2018, 17:00) PPS: ТС...   May 29 2018, 14:27
||- - Forger   Цитата(maxntf @ May 29 2018, 17:27) Пробл...   May 29 2018, 14:39
||- - maxntf   Цитата(Forger @ May 29 2018, 17:39) Для н...   May 29 2018, 14:44
|- - Arlleex   Цитата(jcxz @ May 29 2018, 18:00) PS: Кто...   May 29 2018, 14:50
|- - jcxz   Цитата(Arlleex @ May 29 2018, 17:50) ... ...   May 29 2018, 15:27
|- - Forger   Цитата(jcxz @ May 29 2018, 18:27) Где там...   May 29 2018, 16:51
- - maxntf   В общем выкинул все лишнее из программы. ТО таймер...   May 30 2018, 07:05
|- - Forger   Цитата(maxntf @ May 30 2018, 10:05) В общ...   May 30 2018, 07:13
||- - maxntf   Цитата(Forger @ May 30 2018, 10:13) Помен...   May 30 2018, 07:17
||- - Forger   Цитата(maxntf @ May 30 2018, 10:17) ну в ...   May 30 2018, 07:23
||- - maxntf   Цитата(Forger @ May 30 2018, 10:23) Если ...   May 30 2018, 07:25
||- - Forger   Цитата(maxntf @ May 30 2018, 10:25) Не в ...   May 30 2018, 07:32
||- - maxntf   Цитата(Forger @ May 30 2018, 10:32) Я смо...   May 30 2018, 07:51
||- - Arlleex   Цитата(maxntf @ May 30 2018, 11:51) Да та...   May 30 2018, 08:05
|- - jcxz   Цитата(maxntf @ May 30 2018, 10:05) Если ...   May 30 2018, 07:36
- - maxntf   Привожу проблемные участки кода (инициализация та ...   May 30 2018, 07:35
- - maxntf   Все разобрался, не верно обрабатывал семафор. Нужн...   May 30 2018, 08:06
- - Arlleex   Кодif(xSemaphoreGiveFromISR(xSemNx, &x...   May 30 2018, 08:17
|- - maxntf   Цитата(Arlleex @ May 30 2018, 11:17) Кодi...   May 30 2018, 08:25
|- - jcxz   Цитата(maxntf @ May 30 2018, 11:25) На св...   May 30 2018, 08:32
- - maxntf   На семафоре полностью развязать задачу я не смог, ...   May 30 2018, 13:03
|- - Forger   Цитата(maxntf @ May 30 2018, 16:03) Если ...   May 30 2018, 13:06
|- - maxntf   Цитата(Forger @ May 30 2018, 16:06) Очере...   May 30 2018, 13:29
||- - Forger   Цитата(maxntf @ May 30 2018, 16:29) Я спр...   May 30 2018, 13:33
||- - maxntf   Цитата(Forger @ May 30 2018, 16:33) Напос...   May 30 2018, 13:50
||- - Forger   Цитата(maxntf @ May 30 2018, 16:50) xHigh...   May 30 2018, 14:14
|- - esaulenka   Цитата(Forger @ May 30 2018, 16:06) Очере...   May 30 2018, 15:30
|- - Forger   Цитата(esaulenka @ May 30 2018, 18:30) Ра...   May 30 2018, 15:34
- - maxntf   Не тот пример был.   May 30 2018, 14:30
- - esaulenka   Никакой конкретики. Отлично. Ещё раз. Пожалуйста, ...   May 30 2018, 17:15
|- - Forger   Цитата(esaulenka @ May 30 2018, 20:15) .....   May 30 2018, 17:31
|- - maxntf   Цитата(esaulenka @ May 30 2018, 20:15) Ни...   May 30 2018, 17:58
|- - Forger   Цитата(maxntf @ May 30 2018, 20:58) Чтоб ...   May 30 2018, 18:27
- - Arlleex   Взял отладку на STM32F429, повторил код автора топ...   May 30 2018, 19:41
|- - jcxz   Цитата(Arlleex @ May 30 2018, 22:41) Взял...   May 30 2018, 20:05
|- - Arlleex   Цитата(jcxz @ May 30 2018, 23:05) Пролист...   May 30 2018, 20:15
- - maxntf   Всем участникам спасибо за помощь и в некоторых сл...   May 31 2018, 13:15
- - Arlleex   Цитата(maxntf @ May 31 2018, 17:15) В нач...   May 31 2018, 13:44
- - maxntf   Цитата(Arlleex @ May 31 2018, 16:44) Еще ...   May 31 2018, 13:46
2 страниц V   1 2 >


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 10:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01531 секунд с 7
ELECTRONIX ©2004-2016