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

Итак, давайте приступим.

1. Работа с платой из-под виртуальной машины (Parallels, Windows 10, Arduino IDE)

И это совсем то, что вы ожидали, правда? То, что вы скорее всего хотите увидеть, расписано в следующих разделах данной статьи.

Тем не менее, этот вариант хорош, если нужно быстро накидать Arduino-style проект. Для этого достаточно обратиться к официальной инструкции Элрон по настройке ElBear ACE-Uno в Arduino IDE.

Этот вариант рабочий только в том случае, если на плату заранее установлен bootloader и подключение осуществляется через штатный usb-разъем. В моем случае bootloader был установлен с завода, что облегчило первую (очень небыструю) загрузку скетча. Для подобного рода загрузки прошивки замыкать перемычки boot0 и boot1 оказалось не нужно!

Родной JTAG (ELJTAG) на виртуальной машине при этом заставить работать у меня не вышло. В случае использования родных драйверов от FTDIchip COM-порты для обоих интерфейсов отображаются, но при попытке загрузить что-либо терминал выдает сообщение:

Sketch uses 2848 bytes (0%) of program storage space. Maximum is 8388608 bytes.
Global variables use 656 bytes (4%) of dynamic memory, leaving 15728 bytes for local variables. Maximum is 16384 bytes.
Device not responding

При попытке загрузить bootloader имеем следующее сообщение в консоли:

xPack Open On-Chip Debugger 0.12.0+dev-01685-gb9224c0c0-dirty (2024-08-02-19:51)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : set servers polling period to 200ms
Error: libusb_open() failed with LIBUSB_ERROR_NOT_FOUND
Error: unable to open ftdi device with description '*', serial '*' at bus location '*'

mik32-uploader-v0.3.2
Using MIK32V2
ERROR: Tcl port connection failed
Check connectivity and OpenOCD log
Failed to burn bootloader: uploading error: exit status 1

После переустановки драйверов на libusb (инструкция Elron) или на WinUSB (инструкция Микрон) с помощью Zatig-2.9 отладчик вовсе перестает определяется как COM-порт и что с этим делать - непонятно.

Люди еще могут спросить:

Правильно ли я подключил JTAG к самой плате? Его же можно и так и так физически установить.

Скажу сразу, что установил правильно, в противном случае не было бы следующих частей.
Есть еще возможность работать из под VS-code и другие среды разработки, но, друзья, мы работаем на Маке. Всё же несколько абсурдно на нем развивать тему работы из-под винды как в виде виртуальной машины, так и через bootcamp. Поэтому переходим к чему-то более стоящему.

2. Работа в Mac OS через Arduino IDE

Ну логично же! Зачем тебе городить огород с виртуалкой? Однако консоль выдает следующее:

Инструмент mik32_upload недоступен для вашей операционной системы.
java.lang.RuntimeException: java.lang.Exception: Инструмент mik32_upload недоступен для вашей операционной системы.
	at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:179)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: Инструмент mik32_upload недоступен для вашей операционной системы.
	at cc.arduino.contributions.packages.ContributionInstaller.install(ContributionInstaller.java:88)
	at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:172)
	... 1 more

Ну то есть нет. Совсем нет. Поэтому идем дальше.

3. Работа в Mac OS через VS Code + PlatformIO

А вот тут я наконец распишу то, за чем вы скорее всего сюда пришли. В данном случае мы распишем прошивку контроллера в связке с программатором. Без программатора я, честно говоря, я не пробовал, да и не особо хотелось.

Итак, инструкция по настройке:

3.1. Устанавливаем драйвер отладчика FTDI

Для это идем в офф. инструкцию FTDIchip и очень внимательно и аккуратно выполняем шаги, описанные в пункте 3.3. Также стоит обратить внимание, что у вас не должно быть ничего лишнего. В качестве проверки можно в терминале прописать и получить приблизительно такой вывод:

ls /usr/local/lib grep libftd*
libftd2xx.1.4.30.dylib	libftd2xx.dylib

Ничего большего вы увидеть не должны. У меня были "лишние" драйвера "libftd***" и я их просто удалил.

Всё это делаем это превентивно еще до работы по инструкциям Элрона и Микрона.

3.2. Устанавливаем VS Code и PlatformIO

Инструкция

3.3. Устанавливаем библиотеки для работы с MIK32

Инструкция

3.4. Пробуем загрузить проект из примеров

Идем в официальный репозиторий примеров на GitHub, скачиваем его и продолжаем работать с примером "HAL_Blink_IRQ" (Просто потому что он мне понравился наличием прерываний, хотя это может быть избыточно). Затем немного видоизменяем код, чтобы в нажатом состоянии пользовательской кнопки диод моргал, а при отжатой горел постоянно. Для этого немного изменяем пару функций в файле main.c.

while (1)
 {
     if (flag) {
         HAL_GPIO_TogglePin(GPIO_2, GPIO_PIN_7);
         HAL_DelayMs(50);
     }
     else {
         HAL_GPIO_WritePin(GPIO_2, GPIO_PIN_7, GPIO_PIN_HIGH);
     }
 }

void GPIO_Init()
{
 GPIO_InitTypeDef GPIO_InitStruct = {0};

 __HAL_PCC_GPIO_2_CLK_ENABLE();
 __HAL_PCC_GPIO_IRQ_CLK_ENABLE();

 GPIO_InitStruct.Pin = GPIO_PIN_7;
 GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_OUTPUT;
 GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE;
 HAL_GPIO_Init(GPIO_2, &GPIO_InitStruct);

 GPIO_InitStruct.Pin = GPIO_PIN_6;
 GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_INPUT;
 GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE;
 HAL_GPIO_Init(GPIO_2, &GPIO_InitStruct);
 HAL_GPIO_InitInterruptLine(GPIO_MUX_PORT2_6_LINE_2, GPIO_INT_MODE_RISING);
}

Остальное оставляем без изменений и загружаем. При этом джамперы на boot-ы одевать не нужно.

3.5. Загрузка bootloader'а для возможности работы из-под Arduino IDE в Windows

После того, как шаг 3.4. будет успешно пройден, можно залить загрузчик в EEPROM, если он случайно затерся или его не было изначально. Для этого идем сюда и скачиваем загрузчик. Затем устанавливаем перемычку на boot0 и загружаем прошивку. В случае успеха можно вернуться к 1-му разделу статьи и попробовать его воспроизвести.

3.6. Работа с собственными проектами

Если все предыдущие шаги в данном разделе пройдены успешно, то дальше уже можно работать над чем-то своим. Для разработки собственного проекта вам могут быть полезны следующие материалы:

На этом сегодня закончим.

Комментарии (0)