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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Всем привет.
Многие знают, что мы в проекте 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 которую можно купить в Чип-Дип. Но отличия не касаются программирования.

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

Собираем Embox для платы BFK
make confload-platform/baikal/bfk
make


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


Грузить образ будем по tftp для этого настраиваем сетевой интерфейс на адрес 192.168.68.10. Этоn адрес будет использоваnm 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. Компания Байкал-Электроникс открыла официальный блог на хабре.

.
Источник: https://habr.com/ru/company/embox/blog/567782/


Интересные статьи

Интересные статьи

Субботний вечер омрачен скандалом - сайт не работает, провайдер негодяй, админы - не специалисты, а сервера - решето. Вызов принят, или почему при всей нелюбви к 1С-Битри...
Стив Макнил — хорошо известный в Великобритании телеведущий, подкастер, стендапер, стример, актёр, а по совместительству еще и очень увлечённый геймер, ставший соавтором Dara O Briain’s...
Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционн...
Маркетплейс – это сервис от 1С-Битрикс, который позволяет разработчикам делиться своими решениями с широкой аудиторией, состоящей из клиентов и других разработчиков.
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...