Pull to refresh
0
Embox
Открытая и свободная ОС для встроенных систем

Путешествие Embox на Baikal

Reading time5 min
Views3.9K


Всем привет.

Многие знают, что мы в проекте Embox любим портироваться на отечественные платформы. Статьи об этом можно посмотреть у нас в блоге. Например, Embox уже успешно восходил на Эльбрус. Теперь очередь за еще одним известным географическим названием и по совместимости процессором — Байкалом. У компании Байкал Электроникс есть два процессора (Baikal-M и Baikail-T1), поскольку Embox ориентирован на встроенные системы, начать мы решили с MIPS32 и запустились на Baikal-T1

Приведу краткое описание процессора, более детальное нужно брать из документации. Baikal-T1 имеет

  • 2 ядра P5600 MIPS 32 r5, рабочая частота 1,2 ГГц
  • Кэш L2 1 Мбайт
  • Контроллер памяти DDR3-1600
  • Энергопотребление менее 5 W

Видно, что данный процессор имеет хорошее соотношение энергопотребление / производительность. Что не удивительно, данный процессор ориентирован на сегмент встроенных систем, таких как маршрутизаторы и другие телекоммуникационные устройства.

В отличие от Эльбруса (архитектура E2k), ядро Байкал-Т1 имеет архитектуру MIPS32, приобретено по лицензии и является стандартной реализацией подархитектуры p5600. В связи с этим фактом некоторые заявляют, что данный процессор не является российским. Но если мы посмотрим глубже, то окажется, что вообще все российские процессоры, в том числе и Эльбрус, производятся на иностранных фабриках. В России попросту нет фабрик с достаточным техпроцессом, чтобы удовлетворить предъявляемые требования по производительности.

То же самое происходит и в случае с собственной процессорной архитектурой. В архитектуре E2k есть ряд очень интересных особенностей для определенных задач. Но известно, что процессор на сегодняшний день уже далеко не только процессор, а огромная экосистема. Я встречал оценки, что собственно разработка и производство процессоров занимает всего 30 % стоимости. Основные затраты составляют расходы на программное обеспечение. Не случайно именно производители аппаратуры являются главными контрибъютерами в ядро Linux и ряда других программных проектов.

И конечно одна компания, производитель процессоров, пусть даже с поддержкой государства и высококвалифицированными специалистами, не может конкурировать со всем миром. Поэтому, на мой взгляд, использование не собственной, а поддерживаемой в мире процессорной архитектуры, это скорее плюс чем минус. Ведь в этом случае все системы разрабатывать гораздо проще и дешевле, а выход на рынок конечных изделий существенно ускоряется за счет развитой экосистемы. Ну и конечно, система более надеждая, хотя бы за счет того что компилятор уже проверен на огромном количестве программ. Об этом мы писали в статье про еще один отечественный процессор от компании ЭЛВИС.

В нашем случае так и произошло. Embox уже был портирован на MIPS, пришлось сделать некоторые доработки, но это не сравнить по усилиям затраченым на поддержку новой и недостаточно открытой (описанной) архитектуры. Более того, первые шаги в переносе были сделаны на эмуляторе QEMU с добавленной машиной baikal-t1.

Компания Байкал-Электроникс предоставляет Software Development Kit (SDK) . В него входит комплект системного ПО вместе с исходниками, включая кросс-компилятор (gcc), ядро Linux, системный загрузчик u-boot, и так далее.

Портирование мы начали, как я и говорил выше, с запуска на qemu. К сожалению, qemu с данной машиной доступен только до SDK 4.19. В более поздних версиях поддержку прекратили.

Еще одной особенностью является то, что мы используем обычный MIPS компилятор. В SDK есть собранный компилятор gcc версии 9.3. Именно в gcc 9 добавили поддержку march=p5600 и SIMD для MIPS. Но так как текущей нашей целью являюется только само портирование, а не производительность, то мы решили использовать mips-elf-gcc 6.3.1. Хотя все тоже самое будет собираться и компилятором из SDK.

Для запуска на qemu скачиваем SDK 4.19. Устанавливаем его

chmod +x sdk-baikal-mips-4.19.run
./sdk-baikal-mips-4.19.run

Заходим в папку baikal/bin
проверяем qemu

./qemu-system-mipsel -M ? | grep baikal
baikal-t             MIPS Baikal-T platform (default)

в другой консоли собираем embox для данной машины

make confload-platform/baikal/baikal_t_boot
make

Запускаем qemu с полученным образом

sudo -E <BAIKAL SDK ROOT DIR>/bin/qemu-system-mipsel -M baikal-t -bios ./build/base/bin/embox.bin -m 128 -net nic,netdev=n0,model=dwgmac,macaddr=AA:BB:CC:DD:EE:02 -netdev tap,script=./scripts/qemu/start_script,downscript=./scripts/qemu/stop_script,id=n0 -nographic

— корневая папка куда установлены SDK

В результате получаем:



На этом с qemu остановимся. Ведь есть целевая плата, это конечно лучше чем эмулятор. Хотя он существенно ускоряет и упрощает знакомство с платформой и разработку ПО.

Плата, которая у нас есть, была предоставлена компанией Байкал-Электроникс. Она несколько отличается от BFK3.1, которую можно купить в Чип-Дип. Но отличия не касаются программирования.

Для подключения платы нам потребуется COM-порт, сетевой кабель, и ATX блок питания. Для BFK3.1 еще нужна память, но в нашем случае она распаяна прямо на плате.

Собираем Embox для платы BFK:

make confload-platform/baikal/bfk
make

На плате есть два разъема DB9 для подключения COM-порта, нужно подключаться в верхний разъем. И два RJ45 ethernet порта подключаемся в нижний. Оба разъема использует u-boot который есть на плате и в дальшнейшем использует Embox.



Грузить образ будем по tftp. Для этого настраиваем сетевой интерфейс на адрес 192.168.68.10. Этот адрес будет использовать u-boot для скачивания образа. Сама плата имеет адрес 192.168.68.230. Оба адреса можно перенастроить средствами u-boot. Embox так же использует 192.168.68.230 как адрес по умолчанию. При изменении адресов нужно заменить настройки и в конфигурации Embox (файл .conf/rootfs/network).

Также необходимо установить и настроить tftp сервер и скопировать туда образ embox в бинарном формате:

sudo cp build/base/bin/embox.bin /var/lib/tftpboot

Включаем питание платы. Должны загореться пара светодиодов показывающих корректность подачи питания, и начать мигать еще один показывающий работоспособность. Для включения платы нужно нажать кнопку pwr. Тогда пойдет загрузка встроенного u-boot.

Открываем консоль. Я использую minicom. При загрузке u-boot нажимаем любую клавишу в консоли. В появившемся меню выбираем пункт “U-Boot console”:



Обычными командами u-boot грузим бинарный образ embox.bin по tftp на адрес 0x80000000 и передаем ему управление:

tftpboot 80000000 embox.bin
go 80000000



Собственно наблюдаем загрузку Embox:



Дальше все как обычно вводим команды уже в Embox:



Видно что запущены сервисы telnetd и httpd.

Проверяем telnet:



Проверяем веб-сервер. Открываем в браузере 192.168.68.230:



Собственно, система работает. На плате (и в чипе) есть еще много периферии: PCIe, USB, SATA, AUDIO и так далее, но в рамках данной работы мы решили ограничится джентельменским набором. Важно что периферийные драйвера достаточно легко дописываются, причем часть из них уже есть в Embox. Так, например, произошло с сетевухой dwmac. Собственно, это и есть преимущества открытой модели разработки и распространненных IP ядер.

Естественно, нам пришлось дорабатывать Embox. Поддержка MIPS у нас куда хуже чем, например, ARM. Нам пришлось добавить global interrupt controller и другие части для p5600. Embox не имел поддержку кэширования для MIPS и так далее. Но в общем это было не сильно сложнее чем добавлять поддержку какой-нибудь платы на ARM. Эта простота обеспечивалась как раз за счет большого количества информации, отлаженных средств разработки, использования стандартной периферии и наличия уже портированного ПО.

Особенно хочется отметить, что и процессоры и платы есть в свободной продаже. (Конечно не учитывая глобальные проблемы с производством микросхем затронувшими весь мир). Любой, даже частное лицо, может купить и то и другое. Ну и конечно, цена вопроса, процессор стоит порядка 4 т.р. плата порядка 40 т.р. Это конечно существенно дороже чем малины. Но уже позволяет попробовать процессор, в том числе и небольшим компаниям.

Также хочется отметить, что у нас с компанией Байкал-Электроникс есть соглашение о сотрудничестве. Это очень приятно, ведь соглашения между компаниями разработчиками программного обеспечения и компаниями производителями аппаратуры выгодны обеим сторонам. В итоге получаются эффективные решения и, главное, расширяются обе экосистемы.

P. S. Компания Байкал-Электроникс открыла официальный блог на Хабре.
Tags:
Hubs:
+12
Comments0

Articles

Information

Website
emboxing.ru
Registered
Founded
Employees
2–10 employees
Location
Россия