Pull to refresh

Comments 30

А вы лицензию на это поделие читали? Вот вам выжимка:

1- данная ОС не лицензирована на тот чип который вы используете, фактически ваша статья является доказательством нарушения лицензии. Можете связяться с микрософтом чтобы узнать что вам за это будет.

2- вы должны соблюдать экспортные ограничения США, т.к. это требование лицензии то отмазаться по 25% не получится. Сейчас из Ирана ваш репо склонируют и вы потенциально влетите на проблемы. Я правда не знаю с кем- с М$ за нарушение лицензии или с правительством США за нарушение экспортных ограничений, но я думаю вам без разницы.

Так что уберите тег Open Source, это не он.

Немного не так.
Читатели этой статьи только лишь ограничены в “Distribution and Production Use” rights на изделия с этой RTOS на этом чипе.
Я же не ограничен портировать и писать статьи про это.
Но я не произвожу и не продаю. Это исследовательский проект.

1. INSTALLATION AND USE RIGHTS.

a) General. You may install and use the software and the included Microsoft applications solely for internal development, testing and evaluation purposes.Any distribution or production use requires a separate license as set forth in Section 2.

Угу, согласно этому определению бесплатное распространение вообще не существует т.к. его никто не покупает. Хотите апеллировать к значению слов давайте ссылку на словарь.

https://www.merriam-webster.com/dictionary/distribution

https://www.merriam-webster.com/dictionary/distribute

прерывание тика системы не дольше 8 мкс
С чем связано такое долгое прерывание тика?

Потому что так выбрана опция RTOS.
Все пользовательские таймеры отрабатываются в этом прерывании.
Если выставить опцию обработки таймеров в отдельной задаче, то прерывание тика длиться 0.52 мкс.

пользовательские таймеры
Что они делают?

Полагаю это программные таймера. Например, во FreeRtos пользовательские таймера обрабатываются в отдельной отдельной задаче. Обычно они посылают события, всякие разные, например, раз в 1 секунду моргать светодиодом. Можно конечно и аппаратные таймера задействовать, но их бывает не хватает.

Просто 8us это приличное время и у этих таймеров должно быть конкретное оправдание.

Таймера организуются в демо приложении. Я не смотрел сколько точно их там.
Это не мое приложение и оно специально не оптимизировано, его цель только демонстрация работы сервисов.
К тому же включен профайлинг и сбор статистики которые тоже потребляют сотни тактов.
И наконец 8 мкс это худшее время, и оно появляется только когда истекает какой либо из таймеров. А так прерывание тика длится все так же в районе 0.6 мкс.
Кстати таймера требуются и сервисам с таймаутами. Так что там хватает таймеров.

для 8-и задач занимают всего около 2% процессорного времени
Как Вы это посчитали?

Сложил длительность всех прерываний ядра за один тик. Не совсем точно, но дает представление о масштабах.

Я посчитал так ((8+1.7)/1000)*100=0,97%. А как Вы считали?

Восемь задач. И восемь прерываний от каждой в каждом тике в худшем случае.
Я считаю всегда худшие случаи.

Тогда если судить по графику Timeline то накладные расходы в худшем случае примерно 25%.

Тогда опишите этот случай. Я его не вижу.

Между переключениями контекста проходит 6.5us из которых само переключение занимает 1.62us, следовательно на работу программ остаётся 4.88us.

Пауза между прерываниями это тоже работа сервисов RTOS.
Поэтому накладные будут 100% в этом случае.
Да, с такими накладными будет работать программа с багом, например с deadlock или некорректным ISR ядра.
RTOS - не средство от багов, а скорее катализатор багов.
Но статья рассчитана на тех кто уже знает зачем им RTOS.

Пауза между прерываниями это тоже работа сервисов RTOS.
Здесь я не понял. А программы когда исполняются?
с такими накладными будет работать программа с багом, например с deadlock
Разве deadlock может как то поднять накладные расходы? Я думал что просто все участники deadlock'а заснут, а остальные продолжат свою работу.
RTOS — не средство от багов, а скорее катализатор багов.
Т.е. ОС не упрощает, а усложняет жизнь программистам? Из этого следует вывод, что из более громоздких и сложных проектов необходимо исключить ОС для уменьшения накладных расходов и меньшего возникновения ошибок. Правильно я Вас понял?

Просто хочу разобраться.

Здесь я не понял. А программы когда исполняются?

Сначала это я не понял.
Не понял как вы по маленьком фрагменту таймлайна определили полный процент накладных.
Я решил что вы начали рассматривать гипотетические случаи.
В таком разе я вам привел гипотетический случай с двумя залочеными задачами. И в этом случае никакой полезный код не будет выполняться и накладные 100%

Что делать разработчикам громоздких и сложных проектов я советовать не буду. На то они и разработчики сложных проектов. Полагаю они знают как бороться со сложность раз берутся за такие проекты.

Аргументы за Azure RTOS приведены в начале статьи. И там нет аргумента по поводу уменьшение ошибок.
Как я отлаживаю свой проект планирую написать в следующей статье.

Скажите тогда что заставляет задачи переключатся: время или события?

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

Спасибо за разъяснения, но это всё как-то сложновато. Хотелось бы чтобы оно всё работало без заморочек.

Эх, сложновато....
Сложность еще и не началась.
Портирование RTOS - самый простой этап в проекте.

Я вот просмотрел Ваши предыдущие статьи и заметил что Вы часто используете в них разные RTOS. С чем это связано?

Нет, одновременно я не использую разные, просто они у меня меняются с течением времени.
Сами производители чипов заставляют менять.

Sign up to leave a comment.

Articles