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

 
 
> Сравнение RTOS для STM32 по времени реакции
ArtDenis
сообщение Nov 7 2014, 15:22
Сообщение #1


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Приветствую всех. Для проекта выбираю RTOS с вытесняющей многозадачностью. Основной критерий выбора - скорость реакции. Не хочется пробовать друг за другом все популярные RTOS для замера времени реакции, т.к. это займёт какое-то время. Может существует уже готовое сравнение времени реакции различных RTOS на STM32 (не важно для какого семейства)? Заранее спасибо.

Сообщение отредактировал ArtDenis - Nov 7 2014, 15:24


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ArtDenis
сообщение Nov 10 2014, 16:03
Сообщение #2


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



С горем пополам запустил scmRTOS и померил время реакции на том же камне - 5.52 мкс
Спасибо AHTOX-е за его консультации при запуске )


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 12 2014, 13:13
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ArtDenis @ Nov 10 2014, 18:03) *
С горем пополам запустил scmRTOS и померил время реакции на том же камне - 5.52 мкс
Спасибо AHTOX-е за его консультации при запуске )


На Kinetis MK60 120 МГц RTOS MQX при переключении контекста через сервис флагов получается время 3 мкс (369 тактов)

При этом:
-флаги могут быть с автоматическим сбросом или без,
-время не зависит от маски флагов,
-не запрещаются прерывания ядра,
-у задач разрешен планировщик time slice,
-на ожидании флага может стоять очередь задач.

Т.е. сервис остается еще довольно навороченным.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 13 2014, 20:48
Сообщение #4


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(AlexandrY @ Nov 12 2014, 15:13) *
На Kinetis MK60 120 МГц RTOS MQX при переключении контекста через сервис флагов получается время 3 мкс (369 тактов)

Интересно, я смотрел MQX несколько лет назад, операционка хороша развитым middleware, но само ядро там слишком громоздкое и не может быть быстрым, имхо. Как бы цифра вызывает сомнения, но я смотрел давно, еще версию 3.7, надо будет собрать и погонять на STM32. Ну или К60 сам по себе фантастически быстрый, что тоже маловероятно. Или цифра 3 мкс никак не коррелирует с теми тестами по переключению контекста что мы с AHTOXA когда-то проводили. В-общем, у меня не сходится sm.gif

Цитата(AlexandrY @ Nov 12 2014, 15:13) *
-не запрещаются прерывания ядра,

А что такое прерывания ядра?
Сейчас специально скачал свежую версию 4.1.0 для K60. Посмотрел функцию sem_post(), там все те же макросы _INT_ENABLE, _INT_DISABLE которые выливаются для CortexM3 в инструкции cpsie и cpsid. Да еще оно считает уровень вложенности запрета прерываний, что тоже скорости не добавляет. Так что все там банально в MQX, запрещает она прерывания как миленькая. Или я куда-то не туда посмотрел?

Цитата(AlexandrY @ Nov 12 2014, 15:13) *
-у задач разрешен планировщик time slice,
-на ожидании флага может стоять очередь задач.

Т.е. сервис остается еще довольно навороченным.

Ну этим уже тыщу лет никого не удивишь, это многие старенькие RTOS типа TNKernel/FreeRTOS давно умеют.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 13 2014, 21:45
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(VslavX @ Nov 13 2014, 22:48) *
А что такое прерывания ядра?
Сейчас специально скачал свежую версию 4.1.0 для K60. Посмотрел функцию sem_post(), там все те же макросы _INT_ENABLE, _INT_DISABLE которые выливаются для CortexM3 в инструкции cpsie и cpsid. Да еще оно считает уровень вложенности запрета прерываний, что тоже скорости не добавляет. Так что все там банально в MQX, запрещает она прерывания как миленькая. Или я куда-то не туда посмотрел?



Сильны же вы макросы смотреть.
Там без поллитра ничего не высмотришь.
Только пошаговая отладка позволяет понять какой там из кучи вариантов макросов реально выполняется.
В моей тестовой конфигурации просто повышался приоритет разрешенных прерываний.
На прерывания ядра (т.е. не проходящие через планировщик RTOS) у MQX выделено 4-е верхних уровня.
Полное запрещение прерываний не производится.

На STM32 порта MQX вообще-то нет. Забавно будет если кто-то его сделает. biggrin.gif

Цитата(VslavX @ Nov 13 2014, 22:48) *
Ну этим уже тыщу лет никого не удивишь, это многие старенькие RTOS типа TNKernel/FreeRTOS давно умеют.


Умеют они там или не умеют не так важно. Важно в честном сравнении это упоминать.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 13 2014, 22:40
Сообщение #6


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(AlexandrY @ Nov 13 2014, 23:45) *
Сильны же вы макросы смотреть.
Там без поллитра ничего не высмотришь.

Да ладно, все просто. В моей сегодня-скачанной версии 4.1.0:
_INT_DISABLE/_INT_ENABLE определяются в одном файле mqx_prv.h, в итоге они или вызывают функции _int_disable/_int_enable определенные в int.c. Вариант когда MQX работает без прерываний (MQX_USE_INTERRUPTS == 0) не рассматриваем как вырожденный, поэтому интересующие нас макросы всегда приводят к макросам _INT_DISABLE_CODE/_INT_DISABLE_CODE в инлайновом или вынесенном в функции варианте. Эти макросы юзают _PSP_SET_DISABLE_SR и _PSP_SET_ENABLE_SR.

Цитата(AlexandrY @ Nov 13 2014, 23:45) *
Только пошаговая отладка позволяет понять какой там из кучи вариантов макросов реально выполняется.
В моей тестовой конфигурации просто повышался приоритет разрешенных прерываний.


Да, там действительно просмотрел ветвление между Cortex-M0 и Cortex-M4. Для Cortex-M4 производится модификация регистра BASEPRI. Это еще медленнее чем cpsie/cpsid (тем более там дополнительные обращения к памяти за значениями приоритета, так и за счетчиком вложенности), но, при некотором извращении позволяет оставлять разрешенными прерывания с приоритетом выше заданного. Обработчики таких прерываний будут ограниченными по функционалу, но чисто формально можно заявить что прерывания полностью не запрещаются.

Цитата(AlexandrY @ Nov 13 2014, 23:45) *
На STM32 порта MQX вообще-то нет. Забавно будет если кто-то его сделает. biggrin.gif

Не, мне лениво, у меня сейчас полное ретро - PDP-11 всякий разный в качестве хобби.

Цитата(AlexandrY @ Nov 13 2014, 23:45) *
Умеют они там или не умеют не так важно. Важно в честном сравнении это упоминать.

Ну так тут пробегала ссылка в начале на тему с тестами, там и исходник приложения тестового был, кажется, прогнали бы, да назвали реальные цифры - вот и честное сравнение. Я сейчас просмотрел подробно sem_post, ну ничего нового, все та же банальщина - убрать задачу из двойного списка ожидающих таймер, убрать из ожидающих, добавить в активные, и все это сопровождается всякими относительно избыточными (относительно предельно вылизанных TNKernel или scmRTOS) телодвижениями - модификацией размера очереди и прочим. Хм, переключатель контекста сделан вообще громоздко - или сразу PendSV ставит, или выполняет svc где в обработчике опять таки PendSV ставится. Ну и cpsid/cpsie в перекллючателе контекста все-таки есть.

Update: перечитал тему по "мерянью" временем переключения контекста, там цифра 1.30 мкс на STM32F205 120МНz, 3WS, IAR6.30. ScmRTOS еще чуток быстрее. То есть ~3мкс для MQX на 120МГц К60 вполне реалистична. Теперь верю sm.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ArtDenis   Сравнение RTOS для STM32 по времени реакции   Nov 7 2014, 15:22
- - AHTOXA   Вот тут мы сравнивали scmRTOS и TNKernel.   Nov 7 2014, 15:30
- - ArtDenis   Спасибо за ссылку, но сравнения всего двух RTOS ма...   Nov 7 2014, 15:33
- - ViKo   Здесь можно посмотреть временные характеристики дл...   Nov 7 2014, 16:37
- - Lagman   Скорость реакции, надо чтобы ОСРВ отработала или д...   Nov 7 2014, 20:23
- - ArtDenis   Lagman, под скоростью реакции я имею ввиду промежу...   Nov 8 2014, 04:47
|- - AlexandrY   Цитата(ArtDenis @ Nov 8 2014, 06:47) + AH...   Nov 8 2014, 08:49
||- - AHTOXA   Цитата(AlexandrY @ Nov 8 2014, 13:49) Не ...   Nov 8 2014, 10:28
||- - AlexandrY   Цитата(AHTOXA @ Nov 8 2014, 12:28) Ваш на...   Nov 8 2014, 17:36
||- - AHTOXA   Цитата(AlexandrY @ Nov 8 2014, 22:36) Т.е...   Nov 8 2014, 20:45
|- - Lagman   Цитата(ArtDenis @ Nov 8 2014, 07:47) под ...   Nov 8 2014, 12:25
- - Mahagam   эм. только не забывайте, что freertos сравнивать н...   Nov 8 2014, 12:05
- - ArtDenis   Lagman, у меня методика тестирования простейшая. Е...   Nov 8 2014, 12:49
|- - Lagman   Цитата(ArtDenis @ Nov 8 2014, 15:49) Есть...   Nov 8 2014, 20:59
- - ZASADA   во FreeRTOS есть несколько способов сбросить ногу....   Nov 8 2014, 17:32
- - ArtDenis   ZASADA. Я примеры не использовал, а ноги "дры...   Nov 8 2014, 18:03
- - ArtDenis   Lagman, время переключения контекста и время реакц...   Nov 9 2014, 06:08
|- - Lagman   Цитата(ArtDenis @ Nov 9 2014, 09:08) врем...   Nov 9 2014, 11:00
|- - ArtDenis   Цитата(Lagman @ Nov 9 2014, 16:00) придет...   Nov 9 2014, 12:25
|- - AlexandrY   Цитата(ArtDenis @ Nov 9 2014, 14:25) К то...   Nov 9 2014, 18:14
|- - LightElf   QUOTE (ArtDenis @ Nov 9 2014, 16:25) К то...   Nov 12 2014, 15:14
|- - AlexandrY   Цитата(LightElf @ Nov 12 2014, 17:14) Еще...   Nov 12 2014, 16:10
|- - LightElf   QUOTE (AlexandrY @ Nov 12 2014, 20:10) Та...   Nov 13 2014, 12:49
|- - AlexandrY   Цитата(LightElf @ Nov 13 2014, 14:49) Ну ...   Nov 13 2014, 14:54
- - ArtDenis   Бинарный семафор вроде как самый быстрый. Другие о...   Nov 9 2014, 19:10
|- - Lagman   Цитата(ArtDenis @ Nov 9 2014, 22:10) Бина...   Nov 9 2014, 20:06
- - Mahagam   попробуйте ещё CTL запустить.   Nov 12 2014, 10:47
- - ArtDenis   Эх, в итоге я так и не осилил scmRTOS и ChibiOS, к...   Nov 17 2014, 12:34
|- - seec   Цитата(ArtDenis @ Nov 17 2014, 15:34) Эх,...   Nov 14 2015, 22:21
|- - Aner   QUOTE (seec @ Nov 15 2015, 01:21) Останов...   Nov 14 2015, 22:24
||- - seec   Цитата(Aner @ Nov 15 2015, 01:24) ... а ч...   Nov 15 2015, 06:16
|- - ViKo   Цитата(seec @ Nov 15 2015, 01:21) Останов...   Nov 15 2015, 06:45
- - Mahagam   ещё раз. смотрите в сторону кроссворка. стиль кода...   Nov 17 2014, 13:08
|- - den_po   Цитата(Mahagam @ Nov 17 2014, 18:08) ещё ...   Nov 18 2014, 08:07
|- - Mahagam   QUOTE (den_po @ Nov 18 2014, 11:07) Чей с...   Nov 18 2014, 11:12
- - MBR   Выбирать RTOS из-за очень синтетического параметра...   Jul 1 2015, 13:15
- - Lagman   Понимаю что тема старая и тут уже сам автор (MBR) ...   May 29 2017, 07:44


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

 


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


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