Ссылка на проект: https://github.com/Mirmik/mvirt
Что в проекте:
************* ubl.
Из вирт2риаловского dvsdk вытянут базовый загрузчик.
ubl - это самая первичная программа. То есть то, что получает управление сразу после загрузки процессора. Загрузчик полностью аналогичен тому, что идет в родной прошивке.
Можно анализировать, радоваться и модифицировать.
************* kernel.
UNDER CONSTRUCTED. Задумана, как порт и развитие моего Ардуиновского диспетчера, из который я гордо называю операционкой. От самого диспетчера пока только огрызки, но уже что-то. Язык c++. Среда имеет службу времени на базе таймера TIMER0, обучена линковать прерывания, мигать светодиодами, матюгаться в USART0. Настроена динамическая память на базе линейного аллокатора и глобальные конструкторы. Пока больше ничего. Написано сумбурно, документации нет, коментарии отсутствуют.
Из того, на что можно обратить внимание:
hardware.h - хеадер регистров переферии.
leds.h - работает со светодиодами.
csh.h - заголовок, подключающий классический "диспетчер".
interrupts.h - работа с прерываниями, но там всё бессистемно и раскидано по проекту.
Порядок загрузки:
boot.c - точка входа.
boot2.cpp - вызов глобальных конструкторов и инициализация железа.
hmain.cpp - инициализация среды и линк скетча.
Продолжая традицию Ардуино, оформил в виде классического скетча setup-loop скетча.
скетч лежит в ./usr/sketch.cpp
Есть несколько ошибок, из-за которых kernel ведёт себя нестабильно.
******************* uflash.
Утилита, используемая для заливки на flash. Так же сперта из родной среды.
Пока всё. Планы - реализация функций для работы с GPIO. Подключение файловой системы, расширение доступной преферии. Подключение консоли. Освоение ethernet и wifi. Посматриваю в сторону MMU, но до файловой системы - бесполезно.
Проект собирается arm-none-eabi компилятором с поддержкой newlib.
Компилятор вынут из ардуины и идёт в комплекте по ссылке.
Как и в оригинальной SDK устанавливается на флешку.