ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
9 июля
266452 Топик полностью
Evgeny_CD, Архитектор (10.08.2011 13:18, просмотров: 244) ответил Shura на QNX embedded и QNX desktop точно так же пересекаться не обязаны.
А вот это самый настоящий вопрос. Действительно, почему не создана идеальная ОСь? "Где посадки?" (С) А ведь счастье так близко! С++ форЁва :) Делаем универсальное API и делим его на кучки. Иерахический список – фичи одного класса скучковываем в одну кучу. Классы сервисов ОСИи – типа оська для убогого контроллера, оська для LPC17xx, оська для контроллера со SDRAM, оська для Cortex-A9, оська для многоядерного проца. Пишем абстрактные классы для каждого вида сервиса. И пишем реализации классов согласно классу сервисов Оси. Также пишем тест-бенчи (просто вызов какого-то API и простейшие действия с ним), которые позволяют собрать некое стандартное тестовое приложение на целевой платформе и понять – а оно вообще в целевую платформу влезет или нет? Если нет, то урезаем фичи. А еще есть стандартные приложения, которые крутятся под Оськой, и которые требуют минимального класса сервисов. Ну чтобы IE на ATmega8 не пытались запустить. И есть большой конфигуратор :) Красивый, в виде иерархического списка :) Юзер выбирает штатные апликухи, которые ему нужны для его проекта. Они определяют класс сервисов. Далее он смотрит – а наличествующие сервисы при выбранном классе сервиса ему подходят или нет? Модификация класса сервиса, если надо. Далее вставляем в проект штатный тест бенч для Оси и апликух, и юзер пробует взлететь со всем этим. Если оно влезло в память, то все зашибись, юзер может девелопить целевую апликуху на отконфигурированной системе. При наличии ++ компилера на целевой платформе и минимальном использовании brainfuck фич С++ (STL в самой оси и штатных апликухах не юзать, только если юзер сильно захочет и пр.) получаем полную портируемость всего хозяйства. Все штатные либы делим на два класса: стандартные либы Оси, которые из newlib рождены, и платформенно-зависимые реализации того же самого. В режиме разработки используем стандартыне либы, что позволяет нам полностью виртуализировать разработку, и только при втаптывании в целевую платформу меняем либу на адаптированный аналог (при условии РЕАЛЬНОЙ необходимости – если что-то не успевает и (или) не влазит – в остальных случаях не трогать!!!). Тута самое время раздаться из-за кулис зловещему смеху очередного претендента на мировое господство, но не суть. ВОТ ОНО!!! Я ТАК ДОЛГО ШЕЛ К ЭТОЙ ПРОСТОЙ ИДЕЕ!