Embox открывает российское семейство процессоров KOMDIV64 — АСУ ТП: сообщество инженеров

Embox открывает российское семейство процессоров KOMDIV64

Всем привет.

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

Краткая справка.

Семейство KOMDIV64 — семейство 64-разрядных микропроцессоров, разработанных в научно-исследовательском институте системных исследований (НИИСИ). Ядра данной серии процессоров совместимы с архитектурой MIPS-64 и являются оригинальной разработкой НИИСИ. Демонстрироваться работа будет на плате Багет-ПЛК1-01. которая работает на микроконтроллере К5500ВК018.

Embox на KOMDIV64

И теперь расскажу как это воспроизвести самостоятельно. Это возможно, ведь все драйвера для работы доступны в нашем репозитории. Конечно потребуется сама плата или ее эмулятор.

Краткая инструкция по сборки описана на нашем вики.

Вам потребуется кросс-компилятор MIPS который вы можете установить из пакетов, либо собрать самостоятельно, либо скачать у нас бинарную. сборку .

Сборка

make confload-platform/niisi/baget_plc1
make

В статье описывается работа с операционной системой Embox на российском процессоре семейства KOMDIV64.

Приведённый фрагмент кода:

make confload-platform/niisi/baget_plc1
make

используется для сборки проекта Embox, настроенного под конкретную платформу — плату Багет-ПЛК1-01, которая работает на микроконтроллере К5500ВК018. Первая строка запускает конфигурацию системы под данную платформу, а вторая строка выполняет сборку проекта после настройки.

Этот код позволяет разработчикам скомпилировать Embox для работы на указанной плате, что является важным шагом для запуска операционной системы на целевом устройстве

Загрузка на плату

Пока embox запускается с SD карты на плате и использует встроенный загрузчик, в будущем мы планируем вариант старта прямо из flash памяти

Подготовим загрузочный скрипт, он у нас лежит в репозитории. Имя barebox.sh

Содержимое простое

#!/bin/sh
###### Embox ######
memcpy -l -s ./embox.bin 0x0 0xffffffff80001000 0x4000000
go 0xffffffff80001000

Данный фрагмент представляет собой скрипт на языке shell, предназначенный для работы с системой Embox на российском семействе процессоров KOMDIV64.

Команда memcpy -l -s ./embox.bin 0x0 0xffffffff80001000 0x4000000 копирует содержимое файла embox.bin в память по адресу 0xffffffff80001000 с длиной 0x4000000 байт.

Команда go 0xffffffff80001000 запускает выполнение программы по указанному адресу в памяти.

Этот скрипт используется для загрузки и запуска операционной системы Embox на целевой платформе, что позволяет начать работу с базовыми драйверами и функциональностью системы.

Этот скрипт нужно скопировать в папку boot/barebox/ на SD карте. Туда же нужно положить файл embox.bin, образ собранного embox

sudo cp build/base/bin/embox.bin <path to SD>/boot/barebox/

Команда sudo cp build/base/bin/embox.bin <path to SD>/boot/barebox/ используется для копирования файла embox.bin в указанную директорию на SD-карте.

Эта операция необходима для подготовки SD-карты, с которой будет загружаться Embox на плате Багет-ПЛК1-01 с российским процессором KOMDIV64. Файл embox.bin представляет собой образ операционной системы Embox, который нужно поместить в каталог /boot/barebox/ на SD-карте для успешной загрузки.

Запуск

Просто подаем питание и видим консоль

Мигаем светодиодом из консоли

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

зажечь светодиод

pin GPIOD 5 reset

Команда pin GPIOD 5 reset используется для управления светодиодом на плате Багет-ПЛК1-01, работающей на микроконтроллере К5500ВК018.

Эта команда активирует пин 5 на порту GPIOD, что приводит к зажиганию светодиода. В контексте статьи упоминается, что на плате есть два светодиода, подключённых к порту D (пины 4 и 5), и активный уровень у них низкий. Команда pin GPIOD 5 reset устанавливает низкий уровень сигнала на пине 5, что вызывает зажигание светодиода.

Погасить светодиод

pin GPIOD 5 set

Команда pin GPIOD 5 set используется для управления светодиодом на плате Багет-ПЛК1-01, работающей на микроконтроллере К5500ВК018 и под управлением операционной системы Embox.

В данном случае pin — это команда для управления состоянием пина, GPIOD обозначает порт, к которому подключён светодиод, 5 — номер пина, а set устанавливает высокий уровень сигнала на пине, что приводит к выключению светодиода, так как активный уровень у светодиодов на этой плате низкий.

Ethernet

на плате есть разъем 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

Представленный фрагмент кода является конфигурацией для операционной системы Embox и предназначен для работы с российским семейством процессоров KOMDIV64.

В данном фрагменте происходит подключение нескольких драйверов: для последовательной шины (UART) NS16550, для контроллера прерываний, таймера, GPIO и сетевого адаптера. Драйверы настроены с указанием базовых адресов и номеров прерываний, что необходимо для корректной работы с аппаратными ресурсами процессора.

Использование таких конфигураций позволяет операционной системе Embox взаимодействовать с аппаратными компонентами и обеспечивает поддержку работы различных устройств на базе процессора KOMDIV64.

есть еще драйвера для SPI и I2C, все драйвера открыты и доступны у нас в репозитории.

4Diac на Embox

4Diac это свободная реализация среды программирования и рантайм для стандарта МЭК 61499 принятого в АСУ-ТП. Данный стандарт может применяться и в других сферах, например робототехнике.

Я расскажу только о работе 4Diac под embox, ведь в этом случае не важно на какой аппаратной платформе работает runtime. В видео ниже, будет показано работа и на QEMU (с ARM архитектурой) и на плате KOMDIV64

Создание проекта 4diac

Для разработки программы нужно создать проект. Нажимаем правую кнопку мыши, и выбираем new->4diac IDE project

Создание системной конфигурации

Создадим системную конфигурацию на которой будет запускаться наша программа. Добавим к ней ethernet чтобы иметь возможность загружать (и отлаживать) программы удаленно.

IP адрес для Embox в QEMU — 10.0.2.16, для платы тот который есть на плате, у нас 192.168.2.2

Импорт функциональных блоков (FB)

Мы добавили пару простых функциональных блоков для проверки рантайма. Включить и выключить светодиод.

Для импорта правой кнопкой мышки на проекте и там выбираем import -> file system

Создание программы

После импорта FB, мы можем использовать наши функциональные блоки для разработки программы

Разработаем ее, после этого отобразим на нашей системной конфигурации (EMB_RES)

Откроем EMB_RES ( System Configuration -> FORTE_PC -> EMB_RES). И соединим START (Cold & Warm) с E_CYRCLE (Start ).

Все наша программа разработана и готова к загрузке

Embox

Сборка

Для конфигурации embox под arm/qemu используете

make confload-project/4diac/arm_qemu

Команда make confload-project/4diac/arm_qemu используется для сборки конфигурации Embox под ARM/QEMU. Embox — это операционная система, для которой были открыты базовые драйверы для российского процессора семейства KOMDIV64.

QEMU — это эмулятор, который позволяет запускать программы, написанные для одной архитектуры, на другой архитектуре. В данном случае предполагается использование эмулятора QEMU для работы с архитектурой ARM.

Эта команда может быть полезна разработчикам, которые хотят протестировать работу Embox и 4Diac (свободной реализации среды программирования и рантайма для стандарта МЭК 61499) на эмулируемой платформе ARM с помощью QEMU.

для платы baget_plc1_01

make confload-project/4diac/niisi_baget_plc1

Команда make confload-project/4diac/niisi_baget_plc1 используется для сборки конфигурации Embox под конкретную аппаратную платформу — плату Baget-ПЛК1-01, которая работает на микроконтроллере К5500ВК018 и совместима с российским семейством процессоров KOMDIV64.

Embox — это открытая операционная система, а 4Diac — свободная реализация среды программирования и рантайм для стандарта МЭК 61499, применяемого в АСУ-ТП и других сферах, например, в робототехнике.

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

после конфигурации, как обычно собираем командой make

make

Команда make используется в системе сборки Make для компиляции и сборки программного проекта. В контексте данной статьи она применяется для сборки проекта Embox, который представляет собой открытую операционную систему для встраиваемых систем.

В статье упоминаются различные конфигурации для сборки Embox под разные платформы, например:

  • make confload-platform/niisi/baget_plc1 для платы Багет-ПЛК1-01;
  • make confload-project/4diac/arm_qemu для эмулятора QEMU с архитектурой ARM;
  • make confload-project/4diac/niisi_baget_plc1 для платы baget_plc1_01.

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

Запуск

Загрузка и запуск embox зависит от платформы, для baget_plc1_01 это описано выше, а для qemu использовуем скрипт ./scripts/qemu/auto_qemu

./scripts/qemu/auto_qemu

Команда ./scripts/qemu/auto_qemu запускает скрипт для эмуляции системы с использованием QEMU. Это позволяет тестировать и отлаживать программное обеспечение в виртуальной среде, имитирующей целевое аппаратное обеспечение.

В контексте статьи скрипт используется для запуска Embox на эмуляторе QEMU с архитектурой ARM, что даёт возможность разрабатывать и тестировать программы для российской платформы KOMDIV64 без необходимости иметь физическое устройство. Это удобно для разработчиков, так как позволяет быстро проверять работоспособность кода и интеграцию с различными компонентами системы.

Запуск forte (4diac runtime)

После старта embox можно запустить рантайм 4diac в двух вариантах, с работой из файла и с ожиданием загрузки по сети

файл передается с помощью флага -f

forte -f <file_name>.fboot

Команда forte -f <file_name>.fboot запускает среду 4Diac (Forte) на Embox с загрузкой программы из указанного файла.

4Diac — это свободная реализация среды программирования и рантайм для стандарта МЭК 61499, применяемого в АСУ-ТП и других сферах, например, в робототехнике.

Флаг -f используется для указания файла с расширением .fboot, содержащего программу, которую нужно загрузить и выполнить в среде 4Diac.

Нас сейчас интересует запуск в режиме загрузки по сети просто команда forte

Фрагмент «forte» относится к запуску рантайма 4Diac на Embox. Команда forte запускает среду 4Diac в режиме ожидания загрузки программы по сети. Это позволяет разрабатывать и отлаживать программы для стандарта МЭК 61499 непосредственно на целевой платформе.

Загрузка программы на embox

Удаленный deploy

В 4Diac-ide правой кнопкой на проекте и выбираем “deploy”

Нужно убедиться что у нас правильный IP адрес и что forte запущена на embox

Программа в виде файла

После того как мы отладили нашу программу, мы можем сгенерить отдельный файл и запустить наш рантайм с этой программой

Для этого на “EMB_RES” нажимаем правую кнопку мыши и выбираем пункт “Create FORTE boot files”. Файл сохраняем в папке корневой файловой системы embox (conf/rootfs/ ) и после этого пересобираем проект

Заключение

В заключение хочу сказать, что информация об отсутствии российских процессоров несколько преувеличена. Да, есть большое количество трудностей, и наверное, сейчас, мы не можем предложить решения во всех сегментах, но в критически важных, к которым относится и АСУ-ТП, уже можно пробовать создавать конечные системы.

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

Источник: https://habr.com/ru/articles/973366/

🔗 Embox открывает российское семейство процессоров KOMDIV64

Оставьте комментарий

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.

Прокрутить вверх