StasBaybak писал(а):
Ряд вопросов, которые важны для определения проекта
Ну, отвечу за себя.
1) Да, исходники собственно системы и прочих системных вещей открыты (закрыты лишь задачи, собственно предназначенные для приборов нашей конторы).
2) Лицензия типа BSDшной или чего-то в этом роде: воруйте сколько угодно, можете скрывать свои изменения, только пишите, где и у кого скоммуниздили основу.
3) SVN + Redmine.
4) Выбирается при генерации (старый термин; включает определение конфигурации, трансляцию исходников, сборку выполняемых файлов и т.п.) -- от простой однозадачной системы без всякой там виртуальной памяти и прочая до ОС с функционалом, не уступающим, а по ряду параметров превосходящим Винду и другие современные "тяжёлые" системы. Понятно, что это в теории; на практике пока развивается лишь "нижний" уровень, нужный для решения практических задач.
5) Любой процессор архитектуры ARM, начиная с ARMv4T. Сейчас основной архитектурой является ARMv7-M (ядро Cortex-M3), однако поддерживаются и другие; "затачивание" под эту конкретную версию связано с применением ОС в реальном приборе.
6) Два аппаратных уровня привилегий; при необходимости развитая система защиты пользователей друг от друга с помощью прав доступа и т.п.
7) ARM. "Логически" система может быть перенесена почти на что угодно, но придётся переписывать всё ядро и драйверы нижнего уровня.
8) Монолитное ядро с возможностью создания драйверов режима пользователя (драйверов-задач; таковыми в обязательном порядке должны быть "тяжёлые" драйверы вроде файловых систем). Правда, при нынешнем свободном словоупотреблении такую систему могут и микроядерной назвать, ведь в ядре функций не так много (по сути, немногим больше, чем в считающейся микроядерной QNX -- у меня в ядре находятся ещё низкоуровневые драйверы, хотя и их можно было бы сделать задачами, просто это неэффективно).
9) Открыто всё, что только можно открыть
10) Нету таковой. В связи со спецификой текущих задач система базируется во флэш-памяти микроконтроллера или грузится с внешнего носителя загрузчиками, зашитыми намертво в МК. Первая ФС, которая будет поддерживаться, -- надо полагать, FAT32 (для SD-карт и флэшек). В принципе, можно "подцепить" любую ФС, не трогая саму ОС, поскольку драйвер ФС -- просто задача.
11) Изначально предполагалась Ада, откуда и название системы (АРМАДА -- АРМ + Ада). Однако из-за глюков транслятора GCC, связанных с volatile-переменными (а они нужны, чтоб работать с железом), было принято решение само ядро и низкоуровневые драйверы написать на ассемблере, а всё высокоуровневое -- на Аде. Пока на ней только тесты и рабочие программы для конторы.
12) В пределах архитектуры ARM систему можно перенести на что угодно (необходимо написать несколько макросов для правильной инициализации процессора и "центрального" железа -- контроллера прерываний, таймера и т.п., которые могут различаться на разных процессорах; плюс драйверы для прочего железа).
13) Слишком общий вопрос. Но вообще, система очень гибко настраивается при генерации, поскольку должна годиться для очень широкого круга задач -- от "морганья светодиодами" до полноценной рабочей ОС, технически способной конкурировать с той же Виндой или Линухом. (Речь, есно, о технических возможностях ситсемы, а не о наличии прикладного ПО).
14) При генерации собирается конкретный вариант системы, "заточенный" под нужный процессор (специфика микроконтроллеров, где нет жёсткой базы, кроме собственно процессора, да и то не совсем). В этих рамках система может иметь возможность (а может и не иметь -- это как выбрано при генерации) загружать дополнительные драйверы, запускать задачи с внешних носителей информации и т.п. Откуда они черпают информацию -- их проблемы, но, вообще говоря, для собственно системных нужд будет некий аналог реестра, только несколько проще и именно для системы, а не для всего подряд.
15) Бесконечность
Сама система работает в тех рамках, в которых написана, а скорость написания связана с отвлечением на собственно работу. Например, недавно закончил переделывать драйверную модель (изначально была заведомо упрощённая, зато созданная чуть ли не за день -- для скорости; теперь уже полноценная, хотя 70% в ней ещё отсутствует, лишь заложено на будущее -- всякие там PnP, управление питанием, драйверы-задачи и т.п.).[/quote]
16) Среда разработки Keil, но используется только собственно среда с отладчиком, ассемблер и компоновщик (Си не использую), плюс GNAT (адский транслятор из состава GCC).
17,18) Поскольку я, по сути, один, то и проблем с распределением обязанностей и т.п. нет
19) Redmine.
20) Описывается на своей Вике всё подряд; в будущем, по мере завершённости крупных этапов, планируется ещё переносить в Ворд и генерить пдф. Правда, описание в целом несколько запаздывает по сравнению с системой. Так, драйверную модель уже переделал, но ещё не описал, только начал. Времени на всё не хватает-с.