ArtDenis 0 7 ноября, 2014 Опубликовано 7 ноября, 2014 (изменено) · Жалоба Приветствую всех. Для проекта выбираю RTOS с вытесняющей многозадачностью. Основной критерий выбора - скорость реакции. Не хочется пробовать друг за другом все популярные RTOS для замера времени реакции, т.к. это займёт какое-то время. Может существует уже готовое сравнение времени реакции различных RTOS на STM32 (не важно для какого семейства)? Заранее спасибо. Изменено 7 ноября, 2014 пользователем ArtDenis Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Вот тут мы сравнивали scmRTOS и TNKernel. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ArtDenis 0 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Спасибо за ссылку, но сравнения всего двух RTOS мало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Здесь можно посмотреть временные характеристики для Keil RTX. Не знаю, насколько они актуальны. http://www.keil.com/support/man/docs/rlarm...timing_spec.htm Нужно искать нечто аналогичное для других ОС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Скорость реакции, надо чтобы ОСРВ отработала или достаточно скорости обработки прерывания? Ведь МК это не ЦП на ПК с ОС, он может приняв внешнее прерывание, не передавая событие в ОСРВ, переварить его в обработчике прерывания (если не сложное вычисление) и отработать событие, при этом ОСРВ будет осуществлять свою работу "параллельно", приостановится на время обработки прерывания. (на процессорах с многоуровневой системой прерываний и FreeRTOS такое можно сделать на раз). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ArtDenis 0 8 ноября, 2014 Опубликовано 8 ноября, 2014 (изменено) · Жалоба Lagman, под скоростью реакции я имею ввиду промежуток времени от момента уведомления ОС о событии до начала выполнения первых инструкций обработчика события. Вчера померил это время на серии STM32L152 на максимальной рабочей частоте (32 МГц) с FreeRTOS. Минимум, что удалось выжать с 2-мя задачами - это 11.7 мкс, что довольно печально на мой взгляд. + AHTOXA померил время реакции scmRTOS на VLDiscovery (24 МГц). У него получилось 6.5 мкс, что уже гораздо лучше. Изменено 8 ноября, 2014 пользователем ArtDenis Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба + AHTOXA померил время реакции scmRTOS на VLDiscovery (24 МГц). У него получилось 6.5 мкс, что уже гораздо лучше. Не знаю на что в scmRTOS тратят время, но нормальные RTOS тратят на это в два раза меньше. Смотрите бенчмарки ChibiOS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба Не знаю на что в scmRTOS тратят время, но нормальные RTOS тратят на это в два раза меньше. Смотрите бенчмарки ChibiOS. Ваш наезд насчёт "нормальных" осей выглядит как минимум некрасиво. Нормальные участники форума так не делают. По вашей ссылке есть ссылка на независимое тестирование, где цифры гораздо более правдоподобны (2.92µs на 72 МГц). У scmRTOS на 72МГц получалось 2.7µs. Причём мы не учитывали время включения и выключения светодиода, как в этой ссылке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба эм. только не забывайте, что freertos сравнивать ни с чем нельзя. лицензия не позволяет =8) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба под скоростью реакции я имею ввиду промежуток времени от момента уведомления ОС о событии до начала выполнения первых инструкций обработчика события. Вчера померил это время на серии STM32L152 на максимальной рабочей частоте (32 МГц) с FreeRTOS. Минимум, что удалось выжать с 2-мя задачами - это 11.7 мкс, что довольно печально на мой взгляд. + AHTOXA померил время реакции scmRTOS на VLDiscovery (24 МГц). У него получилось 6.5 мкс, что уже гораздо лучше. В сообщении от AHTOXA есть ссылка на хоть какую то методику тестирования, а вот что и как тестировали (больше похоже на измерение переключения контекста) и как настраивали другие не понятно, так же надо иметь ввиду что на некоторых МК, ногодрыг может быть ограничен определенной частотой, которая указана в документации к МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ArtDenis 0 8 ноября, 2014 Опубликовано 8 ноября, 2014 (изменено) · Жалоба Lagman, у меня методика тестирования простейшая. Есть две задачи. Одна низкоприоритетная и одна - высокоприоритетная. Высокоприоритетная задача ожидает бинарный семафор, и как только получает его, сразу сбрасывает ногу МК. Низкоприоритетная с некоторой периодичностью взводит ту же самую ногу МК и сразу же отдаёт семафор. На осциллографе контролируется длительность импульса на ноге МК. Изменено 8 ноября, 2014 пользователем ArtDenis Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZASADA 0 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба во FreeRTOS есть несколько способов сбросить ногу. по умолчанию в примерах используется самые медленный с переинициализацией всех регистров. да и системные тики по умолчанию там тоже печально медленные. думаю если все норм настроить, то выйдет гораздо меньше нынешних 11.7 мкс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба Ваш наезд насчёт "нормальных" осей выглядит как минимум некрасиво. Нормальные участники форума так не делают. По вашей ссылке есть ссылка на независимое тестирование, где цифры гораздо более правдоподобны (2.92µs на 72 МГц). У scmRTOS на 72МГц получалось 2.7µs. Причём мы не учитывали время включения и выключения светодиода, как в этой ссылке. Смотрите лучше по ссылке http://chibios.sourceforge.net/reports/STM32F100-24-GCC.txt --- Test Case 11.4 (Benchmark, context switch) --- Score : 364984 ctxswc/S --- Result: SUCCESS Т.е. 2,7 мкс на 24 МГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ArtDenis 0 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба ZASADA. Я примеры не использовал, а ноги "дрыгаются" самым быстрым способом :) Настройки ОС выкрутил на максимум, чтобы отключить все навороты. Кстати, со всеми наворотами время реакции получается около 30 мкс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 8 ноября, 2014 Опубликовано 8 ноября, 2014 · Жалоба Т.е. 2,7 мкс на 24 МГц Да, я видел. Это какой-то сильно "синтетический тест". Возможно, просто вызывали в цикле функцию, переключающую контекст. Без собственно оси и всего остального. 2.7мкс на 24 МГц - это всего 64 такта процессора. 12+12 тактов на вход/выход в прерывание планировщика + сохранение контекста (8 регистров + SR = 10 тактов) + восстановление контекста (13 тактов), Это уже 47 тактов. Осталось 17 тактов. В эти такты надо уместить: собственно вызов перепланировки; запрет/разрешение прерываний; переключение стеков; поиск самого приоритетного готового к выполнению процесса; ну и, наконец, надо включить и выключить светодиод. Так что я гораздо больше доверяю независимому тесту. Не то, чтобы я подозревал разработчиков чибиос в жульничестве, но лёгкое лукавство там, похоже, присутствует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться