Ответ: а в РТОСе главный цикл совсем не занят прикладными задачами - только системными :)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено andys1960 14 ноября 2003 г. 15:56
В ответ на: Таак. Тогда, плиз, идеологию RTOS. (+) отправлено bin 14 ноября 2003 г. 12:04

Там главный цикл начинается с раскрутки ядра, а когда задачи не активны процессор или крутит совсем малюсенький
loop: nop
jmp loop
или вообще
halt
или sleep
и тому подобное. Так во всяком случае было в древних rmx-ах.
Когда процессы действующие РТОС можно представить умозрительно, как систему шестеренок, каждая из которых прокручивается независимо от некоторых, но связанно с некоторыми другими. Главное, чтоб колеса не клинило - это "смертельные объятья" -присущи многим ОС. Банальные переполнения стеков задач устраняются специальной задачкой. У RMX еще был "сборщик мусора". Но вообще-то сделать "непотопляемый" пользователем РТОС задача, имхо не тривиальная, особенно для компактных ядер. У нас на станции, когда обкорнали RMX-186 и пустили ее на 386EX это наблюдалось довольно часто ( зато ядро супербыстрое и компактное :)) )

Если нет РТОС -в главном цикле ты должен анализировать( в общем-то последовательно) какие-то флажки, соответствующие событиям,но
глупо (зато просто) сразу реагировать-ветвиться(отваливать) из главного цикла, если сработал первый попавшийся, потому что в этом случае выходит, что он самый приоритетный. Хотя и не совсем. Зависит от того насколько длинный главный цикл и где застигло процессор событие.
Если есть немаскируемые прерывания таймерные системное обслуживание-TASK MANAGER - обслуживание системных таблиц:таблицу готовых/отложенных, таблицу с параметрами задач, очереди и пр.можно и туда навесить, а вообще вешают на "главный таймер", который задает системный тик. И ЕГО НИКТО НЕ ДОЛЖЕН МАСКИРОВАТЬ, ТАКЖЕ КАК ЗАПРЕЩАТЬ ГЛОБАЛЬНЫЕ ПРЕРЫВАНИЯ - иначе ртос мрет. Например у RMX-80 он был жестко забит на 20 мсек( то есть примерно 10 000 маш. циклов), но у 8080 не все команды выполнялись за один маш. цикл. Если MSP430 имеет 125 нсек, то скорее всего ( в зависимости от размеров ядра и его сложности ) можно ожидать сист. тик около 100 мксек, если ядро компактное.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru