Управляем чем угодно откуда угодно

Низкоуровневая среда для virt2real.

Кто что сделал и кто что собирается делать

Низкоуровневая среда для virt2real.

Сообщение Mirmik » 30 мар 2014, 22:21

Ссылка на проект: 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 устанавливается на флешку.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Низкоуровневая среда для virt2real.

Сообщение Mirmik » 31 мар 2014, 03:25

kernel стал более стабилен.
UART0 обучился приёму данных через Serial0 интерфейс.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Низкоуровневая среда для virt2real.

Сообщение phoenix367 » 31 мар 2014, 11:39

А насколько сложно сюда FreeRTOS прикрутить?
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Низкоуровневая среда для virt2real.

Сообщение Mirmik » 31 мар 2014, 16:14

Посмотрел на FreeRTOS

... Portable части кода под данный конкретный проц в исходниках нет.Но т.к. армы есть, а к тому же девятые тоже, скорее всего можно запустить. Надо только родственника найти.
Не совсем понял, где у нее точка входа.

Но да не суть...

Возвращаясь к тому, что выше, ubl и uflash способны загрузить любой бинарник. Тоесть, надо собрать собрать данное FreeRTOS ядро под наш процессор, а потом выполнить

uflash -d /dev/sdX -u ubl/ubl.bin -b freertos/freertos.bin -e 0x82000000 -l 0x82000000
, где l - адрес загрузки ядра, а -e - его точка входа.

Линковать freertos ядро, правда, надо хитро. Потому что адреса должны соответствовать тем, какие отдаются утилите uflash. Пример скрипта линковки можно посмотреть в директории kernel.

Ну, еще конечно важно понимать, что 0x80000000 - 0x90000000 - это ddr.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Низкоуровневая среда для virt2real.

Сообщение realizator » 31 мар 2014, 16:30

Mirmik писал(а):Посмотрел на FreeRTOS

... Portable части кода под данный конкретный проц в исходниках нет.Но т.к. армы есть, а к тому же девятые тоже, скорее всего можно запустить. Надо только родственника найти.
Не совсем понял, где у нее точка входа.

Но да не суть...

Возвращаясь к тому, что выше, ubl и uflash способны загрузить любой бинарник. Тоесть, надо собрать собрать данное FreeRTOS ядро под наш процессор, а потом выполнить

uflash -d /dev/sdX -u ubl/ubl.bin -b freertos/freertos.bin -e 0x82000000 -l 0x82000000
, где l - адрес загрузки ядра, а -e - его точка входа.

Линковать freertos ядро, правда, надо хитро. Потому что адреса должны соответствовать тем, какие отдаются утилите uflash. Пример скрипта линковки можно посмотреть в директории kernel.

Ну, еще конечно важно понимать, что 0x80000000 - 0x90000000 - это ddr.

Mirmik, на всякий случай скажу что один из разработчиков barebox сделал там поддержку виртурилки. Возможно, некоторые пользы от этого проекта вам могут помочь. Если интересно - пишите, позову разработчика в эту ветку форума.
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18

Re: Низкоуровневая среда для virt2real.

Сообщение Mirmik » 31 мар 2014, 16:33

Обновление.

Теперь kernel куда более стабилен. На Serial0 весит консоль. Можно с ней поиграться...
Ошибок всё еще много.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Низкоуровневая среда для virt2real.

Сообщение Mirmik » 31 мар 2014, 16:34

realizator писал(а):
Mirmik писал(а):Mirmik, на всякий случай скажу что один из разработчиков barebox сделал там поддержку виртурилки. Возможно, некоторые пользы от этого проекта вам могут помочь. Если интересно - пишите, позову разработчика в эту ветку форума.

... а где на это посмотреть?
Что в barebox отвечает именно за поддержку виртурилки?
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Низкоуровневая среда для virt2real.

Сообщение frantony » 01 апр 2014, 01:38

Mirmik писал(а):
realizator писал(а):
Mirmik писал(а):Mirmik, на всякий случай скажу что один из разработчиков barebox сделал там поддержку виртурилки. Возможно, некоторые пользы от этого проекта вам могут помочь. Если интересно - пишите, позову разработчика в эту ветку форума.

... а где на это посмотреть?
Что в barebox отвечает именно за поддержку виртурилки?


В barebox отвечает именно за поддержку виртурилки ... device tree.

Вот device tree для базовой SoC virt2real:
http://git.pengutronix.de/?p=barebox.gi ... heads/next

А вот device tree собственно для virt2real:
http://git.pengutronix.de/?p=barebox.gi ... heads/next

Концепция device tree появилась довольно давно и изначально использовалась на машинах на базе процессоров SPARC и PowerPC.
Нашла применение в связи с взрывным ростом устройств на базе ARM --- достаточно посмотреть, сколько файлов в arch/arm/boot/dts.
Переход на device tree --- один из трендов развития linux. Использование device tree позволяет писать меньше кода, и сравнительно
легко подддерживать большое количество однотипных малоотличимых друг от друга плат, не добавляя (или почти не добавляя) нового
кода на Си. Более подробно см. http://www.devicetree.org/Main_Page

В barebox также стараются использовать device tree. Поддержка virt2real изначально device tree-ориентированная, поэтому
указать на нетривиальный Си-код, который отвечает именно за поддержку virt2real не представляется возможным.

Инструкция по сборке barebox есть в wiki: http://wiki.virt2real.ru/wiki/Barebox

Кстати, я сделал минимальную поддержку virt2real для linux-3.14-rc3:
https://github.com/frantony/linux-davin ... 3-20140329

Но даже тут вся поддержка virt2real сводится к платформенному коду, который включит инициализацию готовых стандартных
драйверов; вместо подобного платформенного кода возможно использовать device tree.
К сожалению, для семейства DaVinci device tree почти не используется; из коробки, device tree поддерживается только для SoC da850 (см. https://github.com/frantony/linux-davin ... da850.dtsi).

Если есть вопросы --- прошу не стесняться и задавать!
frantony
 
Сообщения: 1
Зарегистрирован: 31 мар 2014, 23:44

Re: Низкоуровневая среда для virt2real.

Сообщение Mirmik » 01 апр 2014, 09:20

Концепция device tree для меня новая... Покурю этот вопрос. Спасибо.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Низкоуровневая среда для virt2real.

Сообщение Mirmik » 19 апр 2014, 21:42

Принял решение не развивать низкоуровневую среду для virt2real, как отдельного проекта,
а бросить силы на комплексное развитие создаваемой системы, благо я наконец-то определился, в каком виде я всё это хочу видеть.


На текущий момент начал потихоньку формулировать описание. Пока сумбурно и самопально.
http://genos.esy.es/

Рабочее название проекта - GenOS. virt2real предполагается в качестве платформы для тестирования идей.
Пока исходники не выкладываю, ибо там всё очень сумбурно, а установившегося функционала кот наплакал.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

След.

Вернуться в Проекты на базе Виртурилки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1