Установка среды разработки в Windows 10 и Windows 11 для БАГЕТ-ПЛК1-01
В 2024 г. НИИСИ начал поставки одноплатного микрокомпьютера БАГЕТ-ПЛК1-01 с Комдив-МК на борту. В Петрозаводском государственном университете организован учебный класс по освоению этой продукции.
В микроконтроллере Комдив-МК предусмотрено 16 кбайт встроенного ПЗУ и 512 кбайт встроенного ОЗУ. Кроме этого, на плате БАГЕТ-ПЛК1-01 установлены микросхемы внешнего ОЗУ на 512 Мбайт, системного ПЗУ (flash-память) на 4 Мбайт (содержит загрузчик barebox или ПО пользователя), пользовательского ПЗУ на 4 Мбайт (flash-память), пользовательского ПЗУ на 4 кбайт (память EEPROM) и SD-карта 32 Гбайт для хранения образа ОС Debian.
Возможность использования той или иной аппаратной конфигурации определяется перемычками SA4 и SA9 на плате. Режимы работы платы БАГЕТ-ПЛК1-01 приведены в таблице.
|
Режим использования |
Комдив-МК |
БАГЕТ-ПЛК1-01 |
|||||
|
встроен. |
встроен. |
внеш. ОЗУ |
внеш. систем. флеш-ПЗУ |
внеш. польз. флеш-ПЗУ |
внеш. польз. ПЗУ EEPROM |
SD-карта |
|
|
Debian |
– |
– |
+ |
+ |
+ |
– |
+ |
|
baremetal |
– |
+ |
+ |
+ |
+ |
+ |
– |
Устройство может работать в одном из двух режимов.
- Режим 1 — со встроенной операционной системой Debian, загружаемой с SD-карты и исполняемой с использованием внешних ПЗУ и ОЗУ, размещенных на плате БАГЕТ-ПЛК1-01.
- Режим 2 (baremetal) — без операционной системы, с исполнением кода из внешнего системного ПЗУ без использования внешнего ОЗУ (используется только оперативная память 512 кбайт, встроенная в микроконтроллер).
В режиме 1 взаимодействие с внешними устройствами и другой периферией на плате БАГЕТ-ПЛК1-01 осуществляется посредством драйверов операционной системы и прикладных программ, созданных, например, на языке Python. В этом режиме можно использовать достаточно большое количество скриптов и утилит, свободно распространяемых для платформы Raspberry.
Для создания встроенного программного обеспечения для режима 2 существует два альтернативных подхода: разработка программ в стиле Arduino на Си-подобном языке с компоновкой программы в блоках setup() и loop() и разработка программ на стандартизованном языке Си.
НИИСИ рекомендует использовать свободно распространяемые программные продукты в качестве среды разработки ПО для платы БАГЕТ-ПЛК1-01, в основном под дистрибутивы операционной системы Linux. Однако зачастую занятия в вузах проводятся на компьютерах с предустановленной ОС Windows, поэтому статья посвящена настройке среды разработки именно под эту операционную систему.
Проверка работоспособности платы БАГЕТ-ПЛК1-01 со встроенной ОС Debian
Плата БАГЕТ-ПЛК1-01 поставляется с предустановленной ОС Debian на SD-карте. ОС Debian — это операционная система общего применения, один из самых популярных дистрибутивов Linux.
Перемычки SA4-SA7 на плате должны быть установлены, как показано на рис. 1 (все перемычки в левое положение). Установку и снятие перемычек требуется выполнять в обесточенном состоянии.

Рис. 1. Положение перемычек SA4-SA7 для работы со встроенной ОС Debian (Ethernet, EXT ROM, EXT RAM, LITTLE ENDIAN)
Перед проведением всех работ рекомендуется создать образ SD-карты, поставляемой с платой, поскольку в ходе экспериментов у пользователей иногда возникают ситуации непреднамеренной порчи содержимого SD-карты.
Плату БАГЕТ-ПЛК1-01 необходимо подключить к USB-порту компьютера, а также подать электропитание 7–18 В через коаксиальный разъем X7. При запитывании платы только через USB-порт возможна ее нестабильная работа.
Если при подключении платы БАГЕТ-ПЛК1-01 к компьютеру с ОС Windows в «Диспетчере устройств» (вызов Win+x с клавиатуры) возникает неизвестное устройство (рис. 2), необходимо установить драйвер микросхемы FTDI FT2232HL (VCP driver — драйвер виртуального com-порта).
Драйвер можно скачать с сайта производителя чипа:
- https://ftdichip.com/drivers/vcp-drivers/;
- https://ftdichip.com/wp-content/uploads/2021/11/CDM-v2.12.36.4.U-WHQL-Certified.zip (для Windows 10).
Рекомендуется использовать качественный USB-кабель, а также подключать плату в USB-разъем, установленный на материнской плате компьютера, а не в USB-разъем на передней панели корпуса компьютера.
В результате корректной установки драйверов и подключения платы БАГЕТ-ПЛК1-01 в «Диспетчере устройств» должны появиться два USB serial-конвертера А и В, а также один или два последовательных USB-порта. Например, на рис. 3 показаны появившиеся в системе порты 7 и 8.

Рис. 3. Обновленный список устройств: два USB-serial конвертера А и В и два последовательных USB-порта 7 и 8
В плате БАГЕТ-ПЛК1-01 USB-кон-вертер А (и привязанный к нему виртуальный com-порт) применяется для загрузки программ и для отладки с помощью интерфейса JTAG, а USB-конвертер В — как консоль (например, для вывода диагностических сообщений в компьютер).
Если в «Диспетчере устройств» возникает не два USB-порта, а один, то в обоих конвертерах USB Serial Converter A и USB Serial Converter B необходимо активировать виртуальный COM-порт. Для этого нужно кликнуть правой кнопкой мыши (ПКМ) на конвертере, далее в контекстном меню выбрать «Свойства», в открывшемся окне выбрать вкладку «Дополнительно» и установить галочку «Загрузить VCP», как показано на рис. 4.
Если по какой-то причине не удается активировать VCP, то рекомендуется установить более новый драйвер FTDI, а затем для каждого конвертера вручную через контекстное меню по ПКМ выбрать требуемый драйвер. В редких случаях для связи с платой через консольное приложение (конвертер В), возможно, потребуется на время отключить конвертер А: нажать на клавиатуре Win+x, в «Диспетчере устройств» кликнуть ПКМ на USB Serial Converter A и выбрать «Отключить».
В качестве консольного Windows-приложения для связи с платой БАГЕТ-ПЛК1-01 рекомендуется установить teraterm: https://github.com/TeraTermProject/teraterm/releases/download/v5.3/teraterm-5.3.exe.
Необходимо настроить величину шрифта в меню Setup / Font и выбрать параметры com-порта в меню Setup/Serial port: указать выбранный порт и параметры 115200, 8, none, 1, none. Пример конфигурации приведен на рис. 5.
Для связи с платой с помощью teraterm необходимо использовать USB-конвертер В.
После нажатия кнопки RESET на плате БАГЕТ-ПЛК1-01 должен замигать светодиод RX0, а на экран компьютера в приложении teraterm поступят диагностические сообщения о процессе загрузки программного обеспечения.
После загрузки операционной системы Debian с SD-карты в окне терминала появится приглашение командной оболочки bash к авторизации. С использованием привилегий root (или с помощью sudo) пользователь может самостоятельно создавать других пользователей, ставить новые пакеты программного обеспечения, запускать утилиты, компилировать исходный код, исполнять скрипты и т. д. Таким образом, ему доступны все средства и методы работы в ОС Debian.
Необходимо отметить, что при подключении к локальной сети Ethernet кабелем в разъем X3 (RJ-45) в момент загрузки плата пытается получить IP-адрес по протоколу DHCP. Полученный IP-адрес указан в одном из диагностических сообщений. MAC-адрес сетевого интерфейса по умолчанию генерируется случайным образом. Соответственно, после каждой перезагрузки выделяемый IP-адрес может быть иной.
Подготовка среды разработки по для режима baremetal
Установка WSL и Debian под Windows
Для работы без встроенной ОС Debian (режим baremetal) перемычки SA4-SA7 на плате БАГЕТ-ПЛК1-01 должны быть установлены, как показано на рис. 6 (перемычки SA5-7 устанавливаются в левое положение, перемычка SA4 — в правое положение INT RAM). Установку и снятие перемычек требуется выполнять в обесточенном состоянии.

Рис. 6. Положение перемычек SA4-SA7 для работы без встроенной ОС Debian (Ethernet, EXT ROM, INT RAM, LITTLE ENDIAN)
В качестве среды разработки используется пакет поддержки программирования микроконтроллера Комдив-МК (ППП МК) от НИИСИ и редактор Visual Studio Code (VS Code), запускаемые в среде Windows Subsystem for Linux (WSL).
НИИСИ рекомендует создавать новое программное обеспечение, используя настроенную среду разработки под Debian. Для того чтобы пользоваться этой рекомендацией на компьютерах с Windows, необходимо в ОС Windows установить WSL 2. Затем в виртуальной машине установить и запустить ОС Debian и далее организовать среду разработки на основе ППП МК.
Для того чтобы установить и настроить это программное обеспечение, необходимо выполнить следующие действия.
- Включить виртуализацию процессора.
Технология для процессоров Intel называется Intel Virtualization Technology, для процессоров AMD — AMD-V. Для включения виртуализации необходимо при старте компьютера (по клавише Del, Esc, F1 или F2) войти в BIOS и установить соответствующий параметр AMD-V, SVM Mode, Virtualization или SVM Support в значение Enable (искать в секциях установки конфигурации процессора в Advanced, System Configuration, или Security; на разных компьютерах в разных секциях).
Проверить статус виртуализации (включена или нет) можно в Диспетчере задач, как показано на рис. 7.
- Установить VS Code для Windows: https://code.visualstudio.com/download
- Включить службы сервера виртуализации Hyper-V и подсистему Windows для Linux (WSL).
В «Панели управления/Программы/Включение или отключение компонентов Windows» установить галочки у Hyper-V и «Подсистема Windows для Linux».
- Установить Windows terminal.
В строке поиска в Microsoft Store найдите Terminal и установите. По умолчанию Windows Terminal открывает консоль PowerShell, но можно выбрать и другие через выпадающее меню.
- Организовать доступ из Debian (WSL) к USB-порту компьютера.
Установить утилиту для подключения USB-устройства к дистрибутиву Linux, работающему в WSL. Для этого в окне Windows terminal выполнить:
winget install --interactive --exact dorssel.usbipd-win
Подать питание на плату БАГЕТ-ПЛК1-01 и подключить ее USB-кабелем к компьютеру.
Кликнуть ПКМ на иконку установленного Windows terminal, выбрать «Дополнительно»/«Запуск от имени администратора».
От имени администратора в окне Windows terminal посмотреть список USB-устройств:
usbipd list
Пример списка приведен на рис. 8.
В списке найти строку с USB Serial Converter A, USB Serial Converter B, запомнить BUSID этого порта (на рисунке номер BUSID = 3-9).
Провести связывание и подключение этого устройства, выполнив команды (в обоих строчках заменить BUSID 3-9 на другой):
usbipd bind --busid 3-9 usbipd attach --wsl --busid 3-9
В результате при повторном выводе списка устройств командой usbipd list у требуемого устройства появится статус Shared, как показано на рис. 9.
Необходимо отметить, что статус Shared не изменяется после перезагрузки компьютера, поэтому команду usbipd bind необходимо выполнить однократно. Однако, команду подключения интерфейса usbipd attach необходимо выполнять каждый раз после перезагрузки.
- Установить ядро WSL 2.
Процедура и нюансы установки WSL 2 описаны в https://learn.microsoft.com/ru-ru/windows/wsl/install
В консоли PowerShell в Windows terminal с правами администратора выполнить (предварительно, скорее всего, потребуется перезагрузить компьютер):
wsl.exe --update wsl --set-default-version 2
- Установить Debian в Windows с помощью WSL.
В консоли PowerShell в Windows terminal выполнить:
wsl --install --distribution Debian
В ходе установки Debian после установки VirtualMachine Platform необходимо перезагрузить компьютер.
После установки в PowerShell необходимо выполнить команду запуска Debian:
wsl –d Debian
Создать пользователя и придумать пароль, войти в систему. Например, user/password.
Установить обновления ОС Debian.
sudo apt update sudo apt upgrade
Консоль с правами администратора можно закрыть.
В новой консоли Windows terminal в выпадающем меню появилась консоль Debian, как показано на рис. 10.
Кроме этого, в проводнике Windows появилось новое устройство Linux.
Установка утилиты flashrom и резервирование образа ПЗУ
ПЗУ платы БАГЕТ-ПЛК1-01 объемом 4 Мбайт (микросхема D31 на принципиальной схеме) содержит загрузчик barebox, отвечающий за загрузку ОС Debian c SD-карты. При использовании платы в режиме 2 (baremetal, без операционной системы) в ПЗУ помещается код исполняемой программы.
В составе пакета поддержки программирования микроконтроллера разработчики поставляют исходный код kmk_flashrom — программатора ПЗУ.
Все действия в командной строке по установке kmk_flashrom выполняются в установленной консоли Debian (Windows terminal).
С помощью проводника Windows скопировать файл kmk_flashrom.tar в домашний каталог пользователя user (\\wsl.localhost\Debian\home\user) и разархивировать:
tar -xf kmk_flashrom.tar
Установить необходимые библиотеки, компиляторы и средства разработки:
sudo apt install libpci-dev libgusb-dev libftdi1-dev sudo apt install make gcc g++ vim mc screen
Перейти в каталог ~/flashrom и собрать утилиту.
cd flashrom make sudo make install
В результате на компьютере под операционной системой Windows в каталогах подсистемы Linux появился исполняемый файл ~/flashrom/flashrom
Перед работой с платой рекомендуется сохранить образ ПЗУ с загрузчиком barebox в файл.
Подать питание на плату БАГЕТ-ПЛК1-01 и подключить ее USB-кабелем к компьютеру.
Выполнить проброс USB-порта между Debian и Windows (в командной строке заменить BUSID 3-9 на другой), набрать в консоли PowerShell (внимание, до этого использовалась консоль Debian):
usbipd attach --wsl --busid 3-9
Если в этот момент в PowerShell выполнить команду dmesg –w, то можно заметить, что оба USB-конвертера A и B связаны с портами ttyUSB. Пример вывода dmesg приведен на рис. 11.
Следующая команда в консоли Debian сохраняет образ ПЗУ в файл barebox_299.bin:
sudo flashrom -p ft2232_spi:type=kmk -c W25Q32BV/W25Q32CV/W25Q32DV -r ~/barebox_299.bin
Для загрузки образа в ПЗУ используется команда:
sudo flashrom -p ft2232_spi:type=kmk -c W25Q32BV/W25Q32CV/W25Q32DV -w ~/barebox_299.bin
Компиляция программы из примера
В составе пакета поддержки программирования микроконтроллера поставляется исходный код программ, созданных в стиле Arduino на Cи-подобном языке.
Для демонстрации процесса создания приложений необходимо проделать следующее.
С помощью проводника Windows скопировать файл 20250226_pppmk.tar.bz2 в домашний каталог пользователя pcuser (\\wsl.localhost\Debian\home\user) и разархивировать:
tar -xf 20250226_pppmk.tar.bz2
В результате появятся каталоги ~/arduino/ (с проектами Arduino) и ~/psp_mc/ (с проектами на стандартизованном языке Си).
В консоли Debian установить кросс-компиляторы gcc и g++.
sudo apt install gcc-mips-linux-gnu g++-mips-linux-gnu
Перейти в папку ~/arduino/ и запустить редактор VS Code:
cd arduino/ code .
VS Code будет запрашивать разрешение на инсталляцию дополнительных пакетов, а также разрешение на переоткрытие проекта в WSL. На все запросы следует отвечать Yes.
Если в VS Code окно терминала автоматически не открылось, то выбрать в меню View/Terminal.
Для демонстрации процесса создания программ и загрузки бинарного кода в ПЗУ платы можно использовать один из примеров в каталоге ~/arduino/apps/. Программа i2c_scanner выполняет поиск устройств на шине i2c и выводит их список на экран.
В окне терминала перейти в каталог одного из примеров и скомпилировать подготовленный исходный код проекта.
cd apps/i2c_scanner make
В результате в каталоге ~/arduino/apps/i2c_scanner появятся файлы ram.bin, ram.dis и ram.elf.
Размер бинарного файла ram.bin меньше 4 Мбайт. Для того чтобы запрограммировать ПЗУ, необходимо создать образ ПЗУ, совпадающий по размеру с объемом ПЗУ и включающий ram.bin. Это можно сделать с помощью командного файла kmk.sh, который необходимо создать в каталоге ~/arduino/apps/i2c_scanner, например, с помощью проводника Windows. Файл kmk.sh должен содержать следующий текст.
#!/bin/sh BAREBOXIMG=$1 if [ ! -e "$BAREBOXIMG" ]; then echo "usage:" echo " $0 <barebox-image>" exit 1 fi cat > /tmp/layout <<EOF 00000000:0007ffff barebox EOF dd if=/dev/zero ibs=1M count=4 | tr "\000" "\377" > /tmp/padded.img dd if=$BAREBOXIMG of=/tmp/padded.img conv=notrunc flashrom -p ft2232_spi:type=kmk -c W25Q32BV/W25Q32CV/W25Q32DV -w /tmp/padded.img
В этом командном файле сначала создается 4 Мбайт образ padded.img в каталоге /tmp/, а затем в этот образ встраивается скомпилированный файл ram.bin. Последняя строка в файле запускает утилиту программирования ПЗУ.
Для того чтобы файл kmk.sh был исполняемым, необходимо выполнить:
chmod +x kmk.sh
Собрать и загрузить образ в ПЗУ одной командой (из папки проекта apps/i2c_scanner):
make && sudo ./kmk.sh ram.bin
Если возникает ошибка доступа к каталогу /tmp/, необходимо выполнить:
sudo chown root:root /tmp/*
Для того чтобы увидеть вывод программы i2c_scanner, исполняемой в плате БАГЕТ-ПЛК1-01, необходимо отключить USB-порт компьютера от виртуальной машины с Debian и передать его обратно «во владение» операционной системе Windows (в командной строке заменить BUSID 3-9 на другой):
usbipd detach --busid 3-9
Далее необходимо запустить Windows-терминал (например, teraterm), выбрать требуемый com-порт и наблюдать вывод. Пример ожидаемого вывода приведен на рис. 12.
Вывод программы i2c_scanner можно наблюдать и в ОС Debian с помощью утилиты minicom. В этом случае выполнять команду usbipd detach —busid 3-9 не надо, то есть USB-порт должен быть виден из Debian.
Убедиться в этом можно, выполнив:
ls /dev/tt*
В списке устройств должны быть /dev/ttyUSB0 и /dev/ttyUSB1, как показано в примере на рис. 13 (см. правый столбик).
Установить утилиту minicom из командной строки в Debian:
sudo apt install minicom
Запустить терминал из командной строки Debian:
sudo minicom -D /dev/ttyUSB1
Если параметры порта не соответствуют 115200 8N1, в утилите minicom нажать Ctrl-A + O, выбрать Serial port setup и установить необходимое.
Выход из терминала minicom — по нажатию Ctrl-A + Q.
Пример вывода программы i2c_scanner в терминал minicom приведен на рис. 14.
Заключение
Резюмировать сделанное можно с использованием блок-схемы, представленной на рис. 15.
Для программирования платы БАГЕТ-ПЛК1-01 в режиме baremetal в Windows устанавливается виртуальная машина, в которой запускается ОС Debian. Файл образа прошивки микроконтроллера Комдив-МК создается с помощью пакета поддержки программирования и редактора VS Code, запускаемых в Debian-среде. Для того чтобы загрузить файл образа прошивки в ПЗУ на плате БАГЕТ-ПЛК1-01, используется Debian-утилита flashrom. Исходный код свободно распространяемой утилиты flashrom немного изменен (для стыковки с платой БАГЕТ-ПЛК1-01), поэтому предварительно ее необходимо скомпилировать и собрать.
Непосредственно перед загрузкой образа требуется запустить Windows-утилиту usbipd, которая пробрасывает USB-порт в Debian и делает возможной связь из Debian c платой БАГЕТ-ПЛК1-01.
Результат работы программы, исполняемой в микроконтроллере Комдив-МК, можно наблюдать на компьютере, подключившись терминалом к USB-порту, связанном с USB-конвертером В. Для этого используется либо Windows-terminal (teraterm), либо терминал в Debian (minicom). Во втором случае USB-порт должен быть проброшен внутрь виртуальной машины.
- ПЛК «БАГЕТ-ПЛК1-01» Руководство по эксплуатации ЮКСУ.421457.002-01РЭ. niisi.ru/БАГЕТ-ПЛК1-01_РЭ_v3.3.pdf.













3 августа, 2022
12 сентября, 2013
14 ноября, 2023