ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
28 апреля
1351766 Топик полностью
RxTx (16.09.2023 22:17, просмотров: 238) ответил Mty1 на Посоветуйте про FreeRTOS. На Stm32
Иногда по ряду причин не удается построить программу так, чтобы выполнялась кооперативная многозадачность (Короткие подпрограммы с быстрым выходом. Или как это любят называть "передачей управления" другим подпрограммам). Потому что необходимо намеренно прерывать долго работающий код, отдавать выполнение в MainLoop другим потокам-подпрограммам (например для обработки тех же флагов прерываний), а потом еще и восстанавливать работу алгоритма в прерванном месте. То есть 

вручную

фактически писать и эмулировать "переключение контекста". Где-то это написать слишком сложно, почти невозможно по массе разных причин. Иногда потому что код чужой. Иногда потому что вдобавок код очень сложен. Иногда потому что нельзя предсказать время его выполнения даже в виде ограничения. Иногда потому что это придется делать в слишком многих местах. Типичный такой пример - распаковка файла архиватором (включая JPEG для GUI). Так вот, там где есть бэкграундные процессы, возвращать управление из которых долго, сложно, муторно и почти невозможно (обычно это потоковые процессы по своей природе - отдача в сеть, общение с сетью, общение с USB, распаковка, слив из внешего FLASH, одновременная фоновая загрузка с дискеты =) ) - RTOS с вытесняющей многозадачностью полезна. Если глобальную задачу, т.е. прошивку микроконтроллера можно написать в виде кооперативной многозадачности коротких "подзадач" - RTOS не требуется. Причина в том что кооперативная многозадачность, пусть и в примитивном виде, тут и так реализована.