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

 
 
> 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
Ответов
Baser
сообщение May 24 2018, 08:34
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(jcxz @ May 24 2018, 01:31) *
А какой смысл в замене SysTick на TIM3? В Ваш МК SysTick впаять забыли? biggrin.gif

Цитата(volodya @ May 24 2018, 07:27) *
Вот не копал глубоко - при использовании мастера CubeMX + FreeRtos
ПО советует использовать другой кроме SysTic таймер.

При использовании STMовского HAL (CubeMX) + FreeRTOS нужно назначать системный таймер HALа (который формирует сетку 1 мс) на любой другой свободный таймер кроме SysTick. Потому что SysTick монопольно занимает FreeRTOS.
И приоритеты на них назначаются соответственно.
Это подробно описано в доках на HAL, целая глава есть.

А по минимальному тику FreeRTOS тоже встречал рекомендации не делать частоту больше 1000 гц
Из доки на FreeRTOS v9.0 :
Цитата
configTICK_RATE_HZ
Sets the tick interrupt frequency. The value is specified in Hz.
The pdMS_TO_TICKS() macro can be used to convert a time specified in milliseconds to a time specified in ticks. Block times specified this way will remain constant even when the configTICK_RATE_HZ definition is changed. pdMS_TO_TICKS() can only be used when configTICK_RATE_HZ is less than or equal to 1000. The standard demo tasks make extensive use of pdMS_TO_TICKS(), so they too can only be used when configTICK_RATE_HZ is less than or equal to 1000.

То есть, если в ваших библиотеках применяется макрос pdMS_TO_TICKS(), то он будет неправильно считать время.
Go to the top of the page
 
+Quote Post
Turnaev Sergey
сообщение May 24 2018, 13:25
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 562
Регистрация: 25-07-06
Из: Зеленоград, Новосибирск
Пользователь №: 19 088



Цитата(Baser @ May 24 2018, 11:34) *
А по минимальному тику FreeRTOS тоже встречал рекомендации не делать частоту больше 1000 гц
Из доки на FreeRTOS v9.0 :

То есть, если в ваших библиотеках применяется макрос pdMS_TO_TICKS(), то он будет неправильно считать время.

На самом деле, сделать частоту тиков выше не проблема. Ну да, придётся переписать пару простых макросов и на этом всё.
Использую в сложном проекте где порядка 60 задач, частоту тиков почти 13кГц, при тактовой 96МГц, отлично работает.

Зачем это надо. Объясняю. Если используете энергосберегающие режимы и режим ticklessIdle, т.е. пропуск тиков, то в сон контроллер уходит не ранее чем через один тик, соответственно чем тик меньше, тем быстрее после выполнения задачи контроллер уснёт.

Цитата(maxntf @ May 24 2018, 11:26) *
Это все хорошо.
Только мне не понятен один момент, откинув всю лирику о приоритетах задач, концепции FreeRTOS и т.д.
Планировщик, очень сокращенно - это функция которая управляет регистром PC, то есть выбирает куда перекинуть ход выполнения программы.
Он вызывается по прерыванию таймера на котором он работает - SysTick, или через API функции FreeRTOSа.
У меня 3 задачи, не в одной нет никаких API функций, даже делай.
1-я вызывает функцию, которая отключает SysTick и по какой то причине он не включается. Каким образом моя программа оказывается во второй задачи и там висит, потому как SysTick отключен и планировщик больше не вызывается, а API функций в задачах нет, чтоб вызвать планировщик.

P.S. Остается только один вариант - когда 1-я задача включает SysTick, срабатывает прерывание, мы попадаем в планировщик, он передает управление 2-й задаче, и тут по какой то причине SysTick отключается (уже в планировщике).

Я правильно понял, что в задачах нет вызовов vTaskDelay()?
В таком случае они всегда будут подвешивать планировщик.
vTaskDelay() обязателен в любой задаче FreeRTOS.
Хотя вру, не обязателен, вместо него может быть ожидание очереди или семафора, но что-то подобное обязано быть внутри бесконечного цикла каждой задачи.


--------------------
"Отсутствие вашей судимости - это не ваша заслуга, а наша недоработка."
Ф.Дзержинский.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение May 25 2018, 07:31
Сообщение #4


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Turnaev Sergey @ May 24 2018, 16:25) *
Я правильно понял, что в задачах нет вызовов vTaskDelay()?
В таком случае они всегда будут подвешивать планировщик.

Нет. Если задачи одного приоритета, они будут переключаться по кругу с периодом SYSTICK.
Не самая лучшая идея, но работает.

Заодно мы решили загадку топикстартера. Переключение задач у него не привязано к выполнению задачи никак, и в какой-то "счастливый" момент оно срабатывает посреди критической секции. Один раз.
В общем, это никуда не годится. Если есть RTOS, надо ей пользоваться. Нужна задержка - delay() операционки. Нужно подождать, пока сработает прерывание - выкинуть вечный цикл с флажком, сделать очередь или семафор.

Цитата(jcxz @ May 24 2018, 14:11) *
Нафига козе баян Зачем кста кубу это прерывание? Там своя ОС внутри уже что-ль? wacko.gif


Классика. Пастернака не читал, но осуждаю. Извините.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 25 2018, 19:29
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(esaulenka @ May 25 2018, 10:31) *
Классика. Пастернака не читал, но осуждаю. Извините.

Я конечно извиняю за ваше незнание Пастернака. Но какое он имеет отношение к моему вопросу? wacko.gif
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
- - k155la3   Кроме всего, проверьте значения стеков задач (не п...   May 22 2018, 11:43
|- - maxntf   Цитата(k155la3 @ May 22 2018, 14:43) Можн...   May 22 2018, 11:53
|- - k155la3   Цитата(maxntf @ May 22 2018, 14:53) В Кеи...   May 22 2018, 12:02
|- - maxntf   Цитата(k155la3 @ May 22 2018, 15:02) Апп....   May 22 2018, 12:27
|- - esaulenka   Цитата(maxntf @ May 22 2018, 15:27) В общ...   May 22 2018, 12:44
|- - k155la3   Цитата(maxntf @ May 22 2018, 15:27) Не по...   May 22 2018, 13:19
- - 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
- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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