- PVSM.RU - https://www.pvsm.ru -
Всем привет.
В данной статье я хочу поделиться двумя новостями. Во первых открытый российский Embox выложил в открытый доступ базовые драйвера для российского процессора семейства KOMDIV64, и данный российский процессор стал более открытым и доступным. А во вторых вдохновившись командой Северстали, которые делают открытую АСУ-ТП [1], мы запустили на этом открытом российском процессоре открытую среду для МЭК 61499 (4Diac [2]).

Краткая справка.
Семейство KOMDIV64 [3]- семейство 64-разрядных микропроцессоров, разработанных в научно-исследовательском институте системных исследований (НИИСИ). Ядра данной серии процессоров совместимы с архитектурой MIPS-64 и являются оригинальной разработкой НИИСИ. Демонстрироваться работа будет на плате Багет-ПЛК1-01. которая работает на микроконтроллере К5500ВК018 [4].
Начну с короткого видео на котором демонстрируется работа Embox на данном процессоре.
И теперь расскажу как это воспроизвести самостоятельно. Это возможно, ведь все драйвера для работы доступны в нашем репозитории [5]. Конечно потребуется сама плата или ее эмулятор.
Краткая инструкция по сборки описана на нашем вики [6].
Вам потребуется кросс-компилятор MIPS который вы можете установить из пакетов, либо собрать самостоятельно, либо скачать у нас бинарную. сборку [7] .
make confload-platform/niisi/baget_plc1
make
Пока embox запускается с SD карты на плате и использует встроенный загрузчик, в будущем мы планируем вариант старта прямо из flash памяти
Подготовим загрузочный скрипт, он у нас лежит в репозитории [8]. Имя barebox.sh
Содержимое простое
#!/bin/sh
###### Embox ######
memcpy -l -s ./embox.bin 0x0 0xffffffff80001000 0x4000000
go 0xffffffff80001000
Этот скрипт нужно скопировать в папку boot/barebox/ на SD карте. Туда же нужно положить файл embox.bin, образ собранного embox
sudo cp build/base/bin/embox.bin <path to SD>/boot/barebox/
Просто подаем питание и видим консоль

Традиционно проверим работу таймера командой ticker -c 10 а также включим светодиод с помощью команды pin. На плате 2 светодиода подключенных к порту D (пины 4 и 5), активный уровень у них низкий
зажечь светодиод
pin GPIOD 5 reset
Погасить светодиод
pin GPIOD 5 set

на плате есть разъем ethernet и мы будем использовать сеть ниже.
пока просто посмотрим настройки командой ifconfig

На данный момент реализовали ряд базовых драйверов, включая таймер, контроллер прерываний и ethernet. Вот кусок конфига.
include embox.driver.serial.ns16550(reg_width=1)
include embox.driver.serial.ns16550_diag(base_addr=0x1ff70000)
include embox.driver.serial.ns16550_ttyS0(base_addr=0x1ff70000, irq_num=20)
include embox.driver.serial.ns16550_ttyS1(base_addr=0x1b510000, irq_num=21)
include embox.driver.diag(impl="embox__driver__serial__ns16550_diag")
include embox.driver.interrupt.niisi.sc64_intc_v2
@Runlevel(2) include embox.driver.clock.niisi.sc64_timer_v2
include embox.kernel.time.jiffies(cs_name="sc64_timer_v2", period=100)
@Runlevel(2) include embox.driver.gpio.niisi.sc64_gpio_mcu
@Runlevel(2) include embox.driver.net.sc64_tulip
есть еще драйвера для SPI и I2C, все драйвера открыты и доступны у нас в репозитории.
4Diac [2] это свободная реализация среды программирования и рантайм для стандарта МЭК 61499 принятого в АСУ-ТП. Данный стандаhт может применяться и в других сферах, например робототехнике.
Я расскажу только о работе 4Diac под embox, ведь в этом случае не важно на какой аппаратной платформе работает runtime. В видео ниже, будет показано работа и на QEMU (с ARM архитектурой) и на плате KOMDIV64
Для разработки программы нужно создать проект. Нажимаем правую кнопку мыши, и выбираем new->4diac IDE project
Создадим системную конфигурацию на которой будет запускаться наша программа. Добавим к ней ethernet чтобы иметь возможность загружать (и отлаживать) программы удаленно.

IP адрес для Embox в QEMU - 10.0.2.16, для платы тот который есть на плате, у нас 192.168.2.2
Мы добавили пару простых функциональных блоков для проверки рантайма. Включить и выключить светодиод.
Для импорта правой кнопкой мышки на проекте и там выбираем import -> file system
После импорта FB, мы можем использовать наши функциональные блоки для разработки программы

Разработаем ее, после этого отобразим на нашей системной конфигурации (EMB_RES)
Откроем EMB_RES ( System Configuration -> FORTE_PC -> EMB_RES). И соединим START (Cold & Warm) с E_CYRCLE (Start ).
Все наша программа разработана и готова к загрузке
Для конфигурации embox под arm/qemu используете
make confload-project/4diac/arm_qemu
для платы baget_plc1_01
make confload-project/4diac/niisi_baget_plc1
после конфигурации, как обычно собираем командой make
make
Загрузка и запуск embox зависит от платформы, для baget_plc1_01 это описано выше, а для qemu использовуем скрипт ./scripts/qemu/auto_qemu
./scripts/qemu/auto_qemu
После старта embox можно запустить рантайм 4diac в двух вариантах, с работой из файла и с ожиданием загрузки по сети
файл передается с помощью флага -f
forte -f <file_name>.fboot
Нас сейчас интересует запуск в режиме загрузки по сети просто команда forte
forte
В 4Diac-ide правой кнопкой на проекте и выбираем “deploy”
Нужно убедиться что у нас правильный IP адрес и что forte запущена на embox
После того как мы отладили нашу программу, мы можем сгенерить отдельный файл и запустить наш рантайм с этой программой
Для этого на “EMB_RES” нажимаем правую кнопку мыши и выбираем пункт “Create FORTE boot files”. Файл сохраняем в папке корневой файловой системы embox (conf/rootfs/ ) и после этого пересобираем проект
На этом видео можно видеть процесс создания программы и запуска на QEMU и BAGET_PLC1_01
В заключение хочу сказать, что информация об отсутствии российских процессоров несколько преувеличена. Да, есть большое количество трудностей, и наверное, сейчас, мы не можем предложить решения во всех сегментах, но в критически важных, к которым относится и АСУ-ТП, уже можно пробовать создавать конечные системы.
На мой взгляд, нам, для этого не хватает открытости и доверия к друг другу. Но мне кажется Embox может стать базовой платформой которую можно развивать совместно! И, следовательно, меньшими затратами получать большую ценность для конечных систем. Я имею в виду принцип Линукс, когда драйвера разрабатываются производителями микроэлектроники, поддержка платформ и протоколов осуществляется производителями оборудования и так далее. И данная статья этому подтверждение, ведь мы открыли очередной, ранее закрытый, процессор, для всех.
Автор: abondarev
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/opensource/438018
Ссылки в тексте:
[1] открытую АСУ-ТП: https://habr.com/ru/companies/severstal/articles/964086/
[2] 4Diac: https://eclipse.dev/4diac/
[3] Семейство KOMDIV64 : https://ru.wikipedia.org/wiki/KOMDIV-64
[4] К5500ВК018: https://www.niisi.ru/devel.htm
[5] нашем репозитории: https://github.com/embox/embox/
[6] нашем вики: https://github.com/embox/embox/wiki/Platform-KOMDIV64
[7] бинарную. сборку: https://github.com/embox/crosstool/releases/tag/2.44-14.3.0-15.2
[8] репозитории: https://github.com/embox/embox/tree/master/platform/niisi/sd
[9] Источник: https://habr.com/ru/articles/973366/?utm_campaign=973366&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.