Marte OS

Системы, которые не вошли в список.

Модератор: Модераторы разделов

Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Marte OS

Сообщение Subj »

Данная заметка скорее относится к разряду для «Для справки» ибо данная «ОС»(по сути ядро) мало представляет практического интереса, и на данный момент по большей части подходит в основном для изучения и различных экспериментов. Подобных разработок конечно несчетное множество, но у этой есть одна отличительная черта, дающая право на то чтобы все же составить небольшой очерк о ней. Итак начнем.

http://marte.unican.es/

MaRTE OS - ядро реального времени для встраиваемых приложений реализующее "минимальное подмножество реального времени стандарта POSIX.13".

Главной особенностью(собственно той самой отличительной чертой) ядра является то, что оно большей частью написано на языке Ада с небольшими частями на Си и ассемблере.

Собственно что такое Ада объяснять я здесь не буду, можете зайти на русскоязычный сайт, посвященный этому языку: http://ada-ru.org/, Приведу разве что лишь цитату с заголовка главной страницы этого сайта:
Ада - мощнейший объектно-ориентированный язык общего назначения ориентированный на разработку надежного программного обеспечения. В язык включены механизмы поддержки параллельного исполнения, обработки исключений, настраиваемых модулей, поддержки распределенных вычислений, стандартные интерфейсы с другими языками и библиотеками. Ада имеет компиляторы под практически любую операционную систему плюс Java байткод.


Для сборки я использовал последний релиз ядра на момент написания статьи версии 1.7_13 и систему компилятора GNAT GPL 2007 (http://www.adacore.com/home/).

Ядро можно собрать как под x86 архитектуру так и как обычное приложение Linux. Я использовал первый вариант. В качестве среды запуска был выбран эмулятор qemu (0.9.0) и образ дискеты с установленным загрузчиком Grub(который был взят с официального сайта) в качестве устройства запуска.

Разработку приложений можно вести как на языке Ада так и на С, причем для конечной сборки нужно использовать обертки для gcc и gnatmake, поставляемые вместе с пакетом, имеющими префикс m (например mgnatmake, mgcc, mld). Конечная собранная система представляет из себя единственный файл, который скармливается загрузчику, содержащий собственно само ядро и приложение, запускаемое после загрузки ядра. В ядре нет понятия процессов(хотя я могу и ошибаться), хотя главное приложение может порождать дочерние потоки(нити, или задачи в терминологии Ады). Судя по типу Task_Types в спецификации пакета kernel, задачи могут быть четырех видов: MAIN_TASK, IDLE_TASK, USER_TASK, SIGNAL_HANDLER_TASK. Поддерживаются такие алгоритмы планировщика как: FIFO, Round-Robin и Sporadic Server.
Различные параметры системы, как то максимальное количество задач, устройств; диапазон приоритетов, размер стэка и пр. задаются в пакете kernel/configuration_parameters.ads. Драйвера и устройства описываются в пакете kernel/kernel-devices_table.ads (свое устройство или драйвер можно статически прописать в объекты The_Driver_Table и The_Device_Files_Table этого файла и скомпилировать приложение с использованием опции -a утилиты mgnatmake). Однако устройство может быть только одного из следующих типов: Device, File, Mount_Point.

Вот текст простейшей программы, взятой из стандартных примеров:

Код: Выделить всё

with MaRTE_OS;
with Text_IO;
procedure Hello_World is
begin
   Text_IO.New_Line;
   Text_IO.Put ("Hello, I'm an Ada program running on MaRTE OS.");
   Text_IO.New_Line (2);
end Hello_World;


Запускаем:
qemu -fda ./grubfloppy.img -localtime -m 30 -boot a -net nic,model=rtl8139 -net tap,ifname=tap1,script=/etc/qemu-ifup -monitor stdio

Скриншот


Как видите здесь нет ничего такого «эдакого» :)
ls -lh export/mprogram
-rwxr-xr-x 1 val val 564K 2008-02-18 11:55 export/mprogram

Размер системы получился 564Кб.

Что имеется из драйверов:
Драйвер i2c и bttv чипсетов; Ethernet карт sis900, eepro100, rtl8139; поддержка FAT, SVGA.

TCP/IP как такового нет, однако реализован свой сетевой протокол: Real-Time Ethernet Protocol(RT-EP).

Ну и на последок приведу несколько примеров применения MarteOS (информация взята с официального сайта).

Hard Real-Time система контроля подвижных роботов (University of Zaragoza)
http://webdiis.unizar.es/GRPTR/
Mobile Robot OTILIO and Wheel-chair TRITON: http://webdiis.unizar.es/GRPTR/images/otil...riton020614.jpg
Pioneer Robots:
http://webdiis.unizar.es/GRPTR/images/fami...eer20041009.jpg

Industrial Robot Controllers (University of Cantabria)
We have developed distributed robot controllers for radioactive environments using MaRTE OS and RT-EP as the communication protocol. Our application involves a 6 degrees of freedom "PUMA" robot arm and three PCs (one of then embedded in the pendant).

Robocup (University of York)
Preparing a team for the robot 5-a-side football championship. Each robot has an embedded Pentium 233MHz PCs running MaRTE OS. For more information visit http://www.cs.york.ac.uk/robocup.

Control of Railway Scale Model with GNAT and MaRTE OS (University of Applied Science HES-SO, School of Engineering of Geneva)
Railway simulators and real railway scale models are used by students in their lab works on concurrent and real-time programming with Ada. A new implementation of our existing base packages was realised with GNAT and MaRTE OS. ( http://www.eig.unige.ch/lii/Maquette_C.htm )
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Building better software with Ada
Спасибо сказали: