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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Сравнение RTOS для STM32 по времени реакции
Lagman
сообщение Nov 8 2014, 20:59
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(ArtDenis @ Nov 8 2014, 15:49) *
Есть две задачи. Одна низкоприоритетная и одна - высокоприоритетная. Высокоприоритетная задача ожидает бинарный семафор, и как только получает его, сразу сбрасывает ногу МК. Низкоприоритетная с некоторой периодичностью взводит ту же самую ногу МК и сразу же отдаёт семафор. На осциллографе контролируется длительность импульса на ноге МК.

http://we.easyelectronics.ru/NiC/freertos-...heniya-v-2.html
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Nov 9 2014, 06:08
Сообщение #17


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

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



Lagman, время переключения контекста и время реакции - это разные вещи. Точнее сказать, во время реакции на событие входит время переключения контекста. Время же переключения контекста декларируется на сайте freertos в 84 цикла ЦПУ для кортексов: http://www.freertos.org/FAQMem.html#ContextSwitchTime


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


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(ArtDenis @ Nov 9 2014, 09:08) *
время переключения контекста и время реакции - это разные вещи. Точнее сказать, во время реакции на событие входит время переключения контекста. Время же переключения контекста декларируется на сайте freertos в 84 цикла ЦПУ для кортексов: http://www.freertos.org/FAQMem.html#ContextSwitchTime

Я это знаю, что это разные вещи, я давал ссылку там где приводились моменты от которых зависит время переключения контекста, и если вы хотите настроить систему на быстродействие то придется настраивать не только МК и ОСРВ, но еще указать правильные опции компилятору, как и написано в FAQ FreeRTOS, так что дерзайте. А вот тут http://electronix.ru/forum/index.php?showt...t&p=1290397 вам дали ссылку на независимую методику где приводят различные варианты и с мутексами и сообщениями и т.д. и т.д. для ChibiOS. Так что можете хоть что то с чем то сравнить.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Nov 9 2014, 12:25
Сообщение #19


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

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



Цитата(Lagman @ Nov 9 2014, 16:00) *
придется настраивать не только МК и ОСРВ, но еще указать правильные опции компилятору, как и написано в FAQ FreeRTOS, так что дерзайте.

К тому моменту, когда я написал свои результаты, я уже успел попробовать разные опции оптимизации (-O2, -O3, -Os), а также включал/отключал оптимизацию LTO. Самый быстрый результат был -O3 + LTO. Так что я сомневаюсь, что можно выжать больше. К тому-же мои результаты очень похожи на результаты для FreeRTOS, найденные в интернете.


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


Ally
******

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



Цитата(ArtDenis @ Nov 9 2014, 14:25) *
К тому моменту, когда я написал свои результаты, я уже успел попробовать разные опции оптимизации (-O2, -O3, -Os), а также включал/отключал оптимизацию LTO. Самый быстрый результат был -O3 + LTO. Так что я сомневаюсь, что можно выжать больше. К тому-же мои результаты очень похожи на результаты для FreeRTOS, найденные в интернете.


И что интересует только бинарный семафор? Другие сервисы оси не интересуют?
Например как быстро происходит вход в критическую секцию и какие способы предоставляются.
Я бы на вашем месте заинтересовался именно этим, поскольку это чаще всего используемый сервис в том числе и самой осью.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Nov 9 2014, 19:10
Сообщение #21


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

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



Бинарный семафор вроде как самый быстрый. Другие объекты синхронизации должны работать либо также либо медленнее. Хотя согласен, что полезно оценивать не только по бинарному семафору.


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


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(ArtDenis @ Nov 9 2014, 22:10) *
Бинарный семафор вроде как самый быстрый. Другие объекты синхронизации должны работать либо также либо медленнее. Хотя согласен, что полезно оценивать не только по бинарному семафору.

Не хочу расстраивать, но все semaphore во freertos основаны на queues, для этого достаточно посмотреть исходники.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Nov 10 2014, 16:03
Сообщение #23


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

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



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


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


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



попробуйте ещё CTL запустить.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 12 2014, 13:13
Сообщение #25


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
LightElf
сообщение Nov 12 2014, 15:14
Сообщение #26


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

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (ArtDenis @ Nov 9 2014, 16:25) *
К тому моменту, когда я написал свои результаты, я уже успел попробовать разные опции оптимизации (-O2, -O3, -Os), а также включал/отключал оптимизацию LTO. Самый быстрый результат был -O3 + LTO. Так что я сомневаюсь, что можно выжать больше. К тому-же мои результаты очень похожи на результаты для FreeRTOS, найденные в интернете.

Еще хорошо бы померить время реакции для худшего случая, а не для сферического коня. Не удивлюсь, если FreeRTOS всех порвет на тряпки. Ну и там всякие мелочи, типа длительность входа в прерывание в худшем случае.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 12 2014, 16:10
Сообщение #27


Ally
******

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



Цитата(LightElf @ Nov 12 2014, 17:14) *
Еще хорошо бы померить время реакции для худшего случая, а не для сферического коня. Не удивлюсь, если FreeRTOS всех порвет на тряпки. Ну и там всякие мелочи, типа длительность входа в прерывание в худшем случае.


Так худший случай можно затянуть до бесконечности, нет никаких проблем. Один только вклад прерываний ядра чего стоит.
Чтобы результаты имели смысл надо четко специфицировать условия.

Да и то мало смысла сравнивать оси с разной функциональностью.
Скажем смешно сравнивать scmRTOS с MQX.
Go to the top of the page
 
+Quote Post
LightElf
сообщение Nov 13 2014, 12:49
Сообщение #28


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

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (AlexandrY @ Nov 12 2014, 20:10) *
Так худший случай можно затянуть до бесконечности, нет никаких проблем. Один только вклад прерываний ядра чего стоит.
Чтобы результаты имели смысл надо четко специфицировать условия.

Ну взять такой пример:
1) высокоприоритетная задача помещена в состояние спячки
2) две задачи с одинаковым приоритетом непрерывно шлют друг другу сообщения размером 8 байт через очередь длиной 16 сообщений (одна задача шлет, другая принимает)
3) на вход внешнего высокоприоритетного прерывания подается импульс
3) обработчик прерывания пробуждает задачу из пункта 1)
4) проснувшаяся задача изменяет состояние ножки
Измеряем время от импульса прерывания до изменения состояния на ноге

QUOTE (AlexandrY @ Nov 12 2014, 20:10) *
Да и то мало смысла сравнивать оси с разной функциональностью.
Скажем смешно сравнивать scmRTOS с MQX.

Ходить - так по большому! sm.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 13 2014, 14:54
Сообщение #29


Ally
******

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



Цитата(LightElf @ Nov 13 2014, 14:49) *
Ну взять такой пример:
1) высокоприоритетная задача помещена в состояние спячки
2) две задачи с одинаковым приоритетом непрерывно шлют друг другу сообщения размером 8 байт через очередь длиной 16 сообщений (одна задача шлет, другая принимает)
3) на вход внешнего высокоприоритетного прерывания подается импульс
3) обработчик прерывания пробуждает задачу из пункта 1)
4) проснувшаяся задача изменяет состояние ножки
Измеряем время от импульса прерывания до изменения состояния на ноге


В MQX такой сценарий для лучшего случая дает 1 мкс (без оптимизации кода, со всеми проверками стека и проч.)
А худший случай по осциллографу увы не смотрят.
Нужно делать нормальный лог статистики. И ради чего?

Для realtime задач такие исследования делаются индивидуально. Никакая заявленная скорость RTOS здесь в учет не принимается.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 13 2014, 20:48
Сообщение #30


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

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

 


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


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