ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
4 декабря
102872
Evgeny_CD, Архитектор (18.10.2007 18:26, просмотров: 28623)
uCOS, или любая другая RTOS как либа - реально ли такое? Идея следующая. Компилим ОСьку с BSP (касающейся только проца, и таймера, дрова для всей остальной периферии отдельно), с неким широкоим набором опций (например, со всеми возможными). Добавляем откомпилированные "базовые сервисы" - обработчик прерываний и высокоуровневая логика - например, для COM порта и других ходовых шняг. Также добавляем несколько типовых задач, например "работа с SMS", "декодирование G.711" и пр. Делаем из этого добра либу. Отдаем ее юзеру. И большой хидер (кучу хидеров) к этой супер-либе. Юзер, не парясь насчет низкого уровня, пишет на том же С, но в удобных примитивах, и пользуясь сервисом ОСи (каким ему положено пользоваться). Компилит свое добро, и линкер собирает из либы и юзеровского добра исполняемый модуль, который и грузится в проц. Насчет защиты особо не паримся - если юзер "шарахнул по памяти" - то это его проблема. Насколько я понимаю, uCOS в принципе можно доформатировать до такого состояния, но это повозиться надо. Часть конфигурационных параметров надо сделать из констант переменными, процедуры инициализации тоже, вероятно, придется прохачить. Процедура инициализации должна, например, поделить приоритеты между задачами, задать какие-то параметры ОСи, чтобы она настроила свои структуры (MAX_TASK и пр.) Еще более красивым вариантом был бы эдакий "одиночный exe'шник". Т.е. ОСь и базовые сервисы прошиты во флешаке. Юзеровская часть "дошивается" в оставшуюся часть памяти. По стандартному адресу лежит дескриптор "юезровского exe'шника". init читает его, настраивает оську на тему приоритетов, адресов точек входа и прочего добра. Также настраивает конфигцрационный блок юзеровского приложения - адреса точек входа в ОСь и пр. Ну и запускает процесс :) Нечто похожее сделали эти братаны http://www.netburner.com Они вроде все сделали на основе uCOS, вероятно, чуток прохачив ее. На CF, заметим :) Вопросы: 1. Кто что знает по теме? Опыт работы, засады и пр. Критика моей идеи. 2. Где еще, кроме упомянутой конторы, такое реализовано? Я понимаю, что это уж начинается "изобретение Unix" :), но хочется пройти по лезвию ножа - не утратить простоты embedded осей, и снабдить их возможностью запуска неизвестного на этапе компиляции ОСи юзеровского приложения. За это, конечно, придется заплатить некоторым увеличением использованного ОЗУ. Но если ориентироваться на SDRAM варианты, то там +-1Мбайт пофиг :)