- PVSM.RU - https://www.pvsm.ru -

Embox поддерживает новый российский микроконтроллер от компании Миландр с архитектурой RISC-V

Embox поддерживает новый российский микроконтроллер от компании Миландр с архитектурой RISC-V - 1

Всем привет

Недавно мы добавили в открытую ОСРВ Embox поддержку российского микроконтроллера на RISC-V, о чем я и хочу рассказать в данной статье. Речь пойдет о микроконтроллере MDR1206FI от компании “Миландр” [1].


На этом коротком видео можно видеть работу Embox на отладочном комплекте для микросхемы MDR1206FI [1], который нам любезно предоставила компания “Миландр”.

Ниже я расскажу, как это воспроизвести и немного потрохов для любителей. И на закуску покажу работу программы, разработанной в среде Beremiz (по стандарту МЭК-61131 для программирования ПЛК).

Сборка и запуск на плате

Подготовка окружения

Для запуска и отладки, нам как всегда потребуется открытый gdb сервер openocd. 

Подробную статью как собирать openocd для данного микроконтроллера можно прочитать на сайте техподдержки [2] .

Компания “Миландр” разработала специальные патчи. Их можно скачать с сайта технической поддержки компании “Миландр” [3].

Скачиваем патчи

wget -O milandr_openocd.zip https://support.milandr.ru/upload/iblock/039/m3ba46bnbtm4dvhudaxgbt64x4d2dmyh/OpenOCD%20%D0%B4%D0%BB%D1%8F%20M%D0%9A%20%D0%9A1986%D0%92%D0%9A025,%20MDR1206,%20%D0%9A1986%D0%92%D0%9A01%20v0.2.1.zip

При выпуске новых версий патчей ссылка может "сломаться" (будет уже другая), поэтому в общем случае лучше скачивать патчи с сайта https://ic.milandr.ru/soft/ [4] вручную.

Распаковываем патчи

unzip milandr_openocd.zip -d milandr_openocd

Устанавливаем необходимые пакеты для сборки openocd

sudo apt-get install automake libtool libusb-1.0-0 libusb-1.0-0-dev
sudo apt install pkg-config autoconf automake

Клонируем оригинальный openocd

git clone https://github.com/openocd-org/openocd.git

Переходим в папку с исходниками

cd openocd

Переключаемся на версию v0.12.0

git checkout tags/v0.12.0

Накладываем распакованные патчи

git apply --verbose  ../milandr_openocd/openocd_mdr_patch/openocd_mdr.patch

Конфигурируем и собираем

./bootstrap
./configure --disable-werror
make

Запускаем

Переходим в папку tcl. (скрипт, собранный openocd, нужно запускать из этой папки, чтобы не указывать полный путь к скрипту)

cd tcl

Подсоединяем плату по USB. И включаем питание.

sudo ../src/openocd  -f interface/ftdi/mdr-ft2232hl.cfg -f target/MDR1206FI.cfg
Embox поддерживает новый российский микроконтроллер от компании Миландр с архитектурой RISC-V - 2

Embox

Собираем и запускаем

Скачиваем Embox

git clone git@github.com:embox/embox.git

Переходим в корневую папку проекта

cd embox

Конфигурируем проект для работы с демо образом для отладочной платы на MDR1206FI

make confload-platform/milandr/mdr1206fi

Собираем образ

make
Embox поддерживает новый российский микроконтроллер от компании Миландр с архитектурой RISC-V - 3

Подсоединяемся помощью gdb

gdb-multiarch build/base/bin/embox

в консоли gdb указываем, что хотим подключиться к запущенному openocd (порт 3333)

target extended-remote :3333

указываем, что хотим  сбросить МК и остановить его (для записи образа)

monitor reset halt

загружаем образ

load

Запускаем на выполнение

continue

Естественно, в консоли  gdb можно: отлаживать, ставить, точки останова, смотреть значение регистров и переменных, ходить по шагам, все как в обычном gdb..
Кроме того, вы можете подключить любую удобную IDE. Например, компания “Миландр” предлагает использовать Eclipse-CDT [5] .

Открываем консоль

На отладочной плате через разъем USB, кроме JTAG- отладчика, доступен терминал, подключенный к UART0 на микроконтроллере. Открываем программу терминала, например, minicom. У меня порт терминала видится как /dev/USB1. Частота по умолчанию заданная в образе - 115200. Следовательно, запускаем со следующими параметрами:

sudo minicom -D /dev/ttyUSB1 -b 115200

Для проверки работы можно выполнить команды в консоли embox, например, команду ‘uname -a’ или ‘version

Embox поддерживает новый российский микроконтроллер от компании Миландр с архитектурой RISC-V - 4

Мигаем светодиодом

После реализации драйвера GPIO в embox  можно использовать удобное прикладное API, и сразу из консоли поуправлять GPIO с помощью команды 'pin'.

На отладочной плате есть 4 светодиода, которые подключены к порту GPIOD выводы 5, 6, 7, 8. Для того чтобы включить светодиод, нужно просто подать на вывод 0 (reset), для того чтобы выключить соответственно - 1 (set)

Включить светодиод на выводе GPIOD5:

pin GPIOD 5 reset

Выключить:

pin GPIOD 5 set
Embox поддерживает новый российский микроконтроллер от компании Миландр с архитектурой RISC-V - 5

Немного об LCD на плате

На отладочной плате для микросхем MDR1206FI есть LCD. Это MT-12864J-3FLW-3V0 [6], российский аналог KS0108. Он монохромный,  имеет два контроллера по 64x64 бита, то есть 128x64. И управляется с помощью GPIO. Мы написали небольшой драйвер, чтобы продемонстрировать работоспособность, а описание контактов вынесли в board_config (наш аналог device tree) [7].

struct lcd_conf lcds[] = {
	[0] = {
    	.status = ENABLED,
    	.dev = {
        	.name = "LCD",
        	.pins = {
            	PIN("DB0", GPIO_PORT_B, 6, 0),
            	PIN("DB1", GPIO_PORT_B, 7, 0),
            	PIN("DB2", GPIO_PORT_B, 8, 0),
            	PIN("DB3", GPIO_PORT_B, 9, 0),
            	PIN("DB4", GPIO_PORT_B, 10, 0),
            	PIN("DB5", GPIO_PORT_B, 11, 0),
            	PIN("DB6", GPIO_PORT_B, 12, 0),
            	PIN("DB7", GPIO_PORT_B, 13, 0),
            	PIN("CS1", GPIO_PORT_B, 4, 0),
            	PIN("CS2", GPIO_PORT_B, 5, 0),
            	PIN("RST", GPIO_PORT_A, 4, 0),
            	PIN("RW", GPIO_PORT_B, 14, 0),
            	PIN("RS", GPIO_PORT_B, 2, 0),
            	PIN("EN", GPIO_PORT_B, 3, 0),    
        	},
    	},
    	.width = 128,
    	.height = 64,
    	.bits_per_pixel = 1,
	},
};

МЭК 61131

И в завершении покажем видео, которое демонстрирует, как работает программа разработанная в среде Beremiz (МЭК 61131).

Пояснения

конфигурировать нужно командой:

make confload-project/plc/milandr_mdr1206fi

Для того чтобы узнать какие ST программы есть в системе, нужно вызвать

plc_info

Для того чтобы запустить какую-нибудь программу, нужно вызвать

plc_start <config_name>

Заключение

Все, как всегда, открыто, выложено в основную ветку проекта (https://github.com/embox/embox [8] ). И вы можете воспроизвести самостоятельно. Короткая инструкция есть на нашем вики [9].

Отладочный комплект для микросхемы MDR1206FI ТСКЯ.468998.140 [10] можно приобрести у компании “Миландр”. По вопросам приобретения необходимо обращаться на otm@milandr.ru [11]  или на ic@milandr.ru [12].

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

Полезные ссылки

Короткая инструкция на wiki https://github.com/embox/embox/wiki/Milandr_MDR1206FI_DEV [9]

Описание микросхемы MDR1206FI https://ic.milandr.ru/products/mikrokontrollery_i_protsessory/32_razryadnye_mikrokontrollery/mdr1206fi/ [13]

Среда разработки Eclipse https://support.milandr.ru/base/primenenie/programmirovanie-32-razryadnykh-mk/nachalo-raboty/52433/ [5]

Отладочный комплект https://support.milandr.ru/products/programmno_otladochnye_sredstva/otladochnyy-komplekt-dlya-mikroskhemy-mdr1206fi/ [14]

Автор: abondarev

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/mikrokontrollery/432758

Ссылки в тексте:

[1] MDR1206FI от компании “Миландр”: https://ic.milandr.ru/,%20https://ic.milandr.ru/products/mikrokontrollery_i_protsessory/32_razryadnye_mikrokontrollery/mdr1206fi/

[2] Подробную статью как собирать openocd для данного микроконтроллера можно прочитать на сайте техподдержки: https://(https://support.milandr.ru/base/primenenie/programmirovanie-32-razryadnykh-mk/osobennosti-primeneniya-pri-rabote-v-linux/46610/

[3] скачать с сайта технической поддержки компании “Миландр”: https://support.milandr.ru/products/mikrokontrollery_i_protsessory/mdr1206fi/

[4] https://ic.milandr.ru/soft/: https://ic.milandr.ru/soft/

[5] компания “Миландр” предлагает использовать Eclipse-CDT: https://support.milandr.ru/base/primenenie/programmirovanie-32-razryadnykh-mk/nachalo-raboty/52433/

[6] MT-12864J-3FLW-3V0 : https://www.melt.com.ru/index.php?option=com_virtuemart&page=shop.product_details&product_id=6042&vmcchk=1&Itemid=6

[7] oard_config (наш аналог device tree) : https://github.com/embox/embox/blob/master/board_config/milandr_mdr1206fi_dev.conf.h

[8] https://github.com/embox/embox: https://github.com/embox/embox

[9] вики: https://github.com/embox/embox/wiki/Milandr_MDR1206FI_DEV

[10] Отладочный комплект для микросхемы MDR1206FI ТСКЯ.468998.140: https://ic.milandr.ru/products/programmno_otladochnye_sredstva/otladochnye_komplekty/otladochnyy-komplekt-dlya-mikroskhemy-mdr1206fi/

[11] otm@milandr.ru: mailto:otm@milandr.ru

[12] ic@milandr.ru: mailto:ic@milandr.ru

[13] https://ic.milandr.ru/products/mikrokontrollery_i_protsessory/32_razryadnye_mikrokontrollery/mdr1206fi/: https://ic.milandr.ru/products/mikrokontrollery_i_protsessory/32_razryadnye_mikrokontrollery/mdr1206fi/

[14] https://support.milandr.ru/products/programmno_otladochnye_sredstva/otladochnyy-komplekt-dlya-mikroskhemy-mdr1206fi/: https://support.milandr.ru/products/programmno_otladochnye_sredstva/otladochnyy-komplekt-dlya-mikroskhemy-mdr1206fi/

[15] Источник: https://habr.com/ru/articles/953948/?utm_campaign=953948&utm_source=habrahabr&utm_medium=rss