ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
427043 Топик полностью
Alex B. (24.07.2013 14:26, просмотров: 392) ответил SciFi на Давно холиваров не было. Как насчёт RTOS vs Main Loop? Поделитесь практическим опытом. Сам RTOS не применял, да и не очень хочется.
Если надо проектом один программер работает, не используя никакого стороннего кода (а вероятность дальнейшей поддержки другим программером очень низка) - то пофигу.  Хотя с RTOS значительно удобнее, так как элементы взаимодействия модулей кода за вас уже написали. RTOS отъедает память на стеки потоков. Есть кооперативные RTOS, для которых не нужны стеки задач. RTOS требует синхронизации между потоками: всякие там мутексы, семафоры, дедлоки и прочее. Геморрой. Это жестко формализовано и если знать правила работы планировщика, никакого геморроя нет. Main Loop требует синхронизации только между обработчиками прерываний и главным потоком. Это проще. Не сказал бы. По сути приходится выдумывать свои примитивы синхронизации - FIFO, буферы, флаги, обеспечивать атомарность. В RTOS это все уже реализовано. Ну и кроме того, если в прерывании высокоприоритетная задача получит управление, то она продолжит выполняться сразу после выхода из прерывания. Т.е. обеспечивать времянки в некоторых случаях проще, не нужно MainLoop бить на мелкие кусочки, чтобы проверять элементы синхронизации, которые могли бы быть установлены в прерывании. Переносимость: Main Loop проще, поэтому и переносится легче. Почему проще-то? А если рассматривать каждую задачу как свой Main Loop? Для примера - проект, который разрабатывался около 6 месяцев (и до сих пор развивается), успешно внедрили в другой девайс за 2 недели (чипы одного вендора, STM32F, но разных семейств). Программер, который внедрял, до этого с RTOS дела не имел.
Согласуйте импеданс!