![](https://habrastorage.org/webt/zm/ek/aj/zmekajkbvaev6kd8wj4jcaoaf_y.jpeg)
Bluetrum AB32VG1 – это макетная плата на базе микроконтроллера AB5301A RISC-V, спроектированного как под приложения с использованием Bluetooth-аудио, так и для общих проектов, которые работают с операционной системой реального времени RT-Thread.
Эту плату мне прислали разработчики RT-Thread, и далее я опишу свой опыт первого знакомства с ней. В ходе этого небольшого эксперимента я опробую RT-Thread Studio IDE, помигаю светодиодом и поработаю с примером кода для аудио интерфейса, так как для Bluetooth пока примеров нет…
Распаковка Bluetrum AV32VG1
Плата поставляется с кабелем USB-C, служащим для подачи питания и программирования.
![](https://habrastorage.org/webt/zm/ek/aj/zmekajkbvaev6kd8wj4jcaoaf_y.jpeg)
На борту мы видим штыревые разъемы Arduino UNO для расширения, слот под MicroSD, USB-порт, 3.5мм аудиовыход, ИК-приемник и несколько кнопок.
![](https://habrastorage.org/webt/zp/fu/ws/zpfuws7fsk7x_ukzm5plvgewymq.png)
Снизу платы ничего интересного, разве что QR-код для WeChat.
![](https://habrastorage.org/webt/-1/of/aa/-1ofaabwksq_jpzie7mkynnudoq.jpeg)
Помимо этого, на ней есть несколько настроечных перемычек, но по ним я документацию не нашел и трогать их пока не стал.
Установка инструментов разработки и настройка
Начнем с документации, которая, как это ни печально, доступна лишь на китайском. Она также отсылает нас к инструментам на китайском сайте rt-thread.org, но при этом есть возможность переключиться на его английскую версию, rt-thread.io. Здесь мы находим нужные нам RT-Thread Studio IDE и Downloader v.2.2.0. Последний мы используем для прошивки платы и получения доступа к консоли.
Вот ссылка на IDE, доступную, к сожалению, только для Windows, хотя в компании мне сообщили, что работают над версией для Linux.
![](https://habrastorage.org/webt/th/o3/kt/tho3ktggcwtlt1dyfmqbnparjry.png)
Параллельно со скачиванием установки IDE, а это 804Мб, можно сразу скачать Downloader 2.2.0. Еще есть USB драйвер для CP210x, но для рассматриваемой в этом обзоре версии платы 2.0 он не понадобится, так как в ее основе лежит модуль CH340G USB — TLL.
Обратите внимание, что Downloader размещен на Gitee, где для скачивания потребуется создать аккаунт. Я там уже зарегистрирован, но для тех, у кого аккаунта нет, это явно не самый удачный вариант получения файлов.
Для установки RT-Thread Studio мне пришлось запустить виртуальную машину с Windows 7. При первой попытке я прождал, казалось, целую вечность, пока не получил следующее сообщение:
![](https://habrastorage.org/webt/2d/bw/ie/2dbwielhe51d1s0lsceppyd2dp8.png)
Следуя рекомендации, я закрыл все остальные программы, повторил попытку и на этот раз завершил установку, на что ушло около полутора часов. Далее при запуске RT-Thread Studio IDE меня поприветствовал экран авторизации.
![](https://habrastorage.org/webt/a0/ce/da/a0cedajv9ixuo224boerqvd_vtu.png)
Для IDE это выглядит бессмысленным, если только в ней не используются пользовательские данные, которые нужно хранить в облаке. К примеру, для использования Arduino IDE мне никогда не приходилось авторизовываться.
Создавать аккаунт мне было лень, поэтому я попробовал авторизоваться через GitHub, на что получил просьбу создать новый аккаунт либо связать его с существующим, предоставив кучу личных данных. Номер телефона и адрес почты вроде как необязательны, но при этом необходимо предоставить хотя бы что-то одно. Я выбрал почту, но письмо для ее подтверждения так и не получил.
![](https://habrastorage.org/webt/my/nv/do/mynvdousezrxbrtvxfqjmpqsx8e.png)
В итоге я попытался отменить процесс регистрации, но тогда программа просто закрывается. В конечном счете я создал новый аккаунт RT-Thread Club с одним только адресом электронной почты и паролем. Имейте в виду, что в форме не допускается использовать адреса почты с символом +, который я использую для отслеживания утечек почты и спамеров. (например, username+company1@email.com или username+company2@email.com).
С горем пополам я все же вошел в RT-Thread Studio, и теперь можно заняться настройкой системы для платы. Для этого потребуется запустить RT-Thread SDK Manager и установить последнюю версию исходного кода RT-Thread из мастер-ветки, так как стабильные релизы еще не поддерживают платы Bluetrum.
![](https://habrastorage.org/webt/jt/ry/zc/jtryzcsbrwedg2ltdwcgo_lnfdi.png)
После этого можно промотать вниз, выбрать последний пакет для Bluetrum AV32VG1-AB-PROUGEN, в моем случае 1.0.8, и кликнуть
Install
.![](https://habrastorage.org/webt/b8/jd/nt/b8jdntfsaq4hmcay5fp-dvqybiu.png)
Заметьте, что выбрать сразу последнюю версию RT-Thread и пакет Bluetrum для их одновременной установки нельзя, потому что SDK Manager может устанавливать только один пакет за раз.
![](https://habrastorage.org/webt/8o/q2/pg/8oq2pgbhggdabqdrpryyq2ggf00.png)
На этом почти все. Осталось лишь установить набор инструментов RISC-V GCC.
Для справки уточню, что занимает приложение 500Мб ОЗУ и на моей виртуальной машине запускается около 5 минут.
Проект «Hello World» для Bluetrum AB32VG1
Теперь создадим наш первый проект, для чего переходим в
File
-> New
-> RT-Thread Project
, присваиваем ему имя ab32vg1
, выбираем Base on Board
, после чего программа автоматически выберет плату PROUGEN G1
, для которой мы установили пакеты. Остальные настройки можно оставить, поэтому просто жмем Finish
.![](https://habrastorage.org/webt/9p/w1/vf/9pw1vff4ekn42d6tmksqsao39ka.png)
Новый проект создается не пустым и уже содержит небольшой образец программы, которая выводит в консоли
Hello World
и мигает светодиодом, расположенным рядом с USB-хостом платы:#include <rtthread.h>
#include "board.h"
int main(void)
{
uint8_t pin = rt_pin_get("PE.1");
rt_pin_mode(pin, PIN_MODE_OUTPUT);
rt_kprintf("Hello, world\n");
while (1)
{
rt_pin_write(pin, PIN_LOW);
rt_thread_mdelay(500);
rt_pin_write(pin, PIN_HIGH);
rt_thread_mdelay(500);
}
}
Компиляция выполняется нажатием иконки
Build
или Rebuild
.![](https://habrastorage.org/webt/96/aa/wd/96aawdmjey_xg-hv-rse4ax2uoo.png)
Готово! Теперь можно подключать плату к компьютеру через USB, после чего в Device Manager отобразиться COM-порт CH340.
![](https://habrastorage.org/webt/-x/el/5l/-xel5l5fmaxb45eodndosrtk9eo.png)
Прошить нашу программу на плату из RT-Thread Studio IDE не получится, так что делаем это с помощью Downloader 2.2.0. Язык интерфейса этого инструмента можно изменить на английский, хотя переведен он не полностью.
![](https://habrastorage.org/webt/p7/sv/s1/p7svs1e2-uhynu9liuv-3voftn8.png)
Для записи программы нужно убедиться, что
COM
не выделен серым, и выбран COM2
, после чего загрузить из проекта файл rtthread.dcf
и кликнуть Start
. Обратите внимание, что мне пришлось кликнуть Info
, чтобы сбросить плату и запустить программу. Теперь светодиод замигает каждую секунду.![](https://habrastorage.org/webt/v9/ua/nm/v9uanmalev7b8cfhrpa8yfatjsa.png)
На последовательную консоль также можно переключиться, кликнув иконку
Develop
. Это отобразит информацию о системе на англо-китайском диалекте. Почему-то Hello, world
не показывается целиком. В моем случае отобразилось лишь Hell
, что в крайне драматичной форме выражает мой опыт работы с этой системой на данный момент. Аудио проект RT-Thread RISC-V
Поскольку
Hello world
успешно заработал, мне захотелось реализовать проект посложнее с воспроизведением аудио по WiFi. Я подключил динамики к выходу 3.5мм и запитал плату через USB.![](https://habrastorage.org/webt/nz/dj/ds/nzdjdsxozmtpeugy-qz5vxfnqna.jpeg)
Изначально я решил продолжить работу с новым проектом, добавив пакеты и настроив IDE согласно Википедии. На панели
Project Explorer
нужно перейти во вкладку RT-Thread Setting
, откуда открыть дополнительные опции через кнопку More…
.![](https://habrastorage.org/webt/tm/5s/gp/tm5sgpr9cmbnjckgqu-hl9iv7ka.png)
Здесь мне удалось найти некоторые настройки вроде
Enable Audio Device
…![](https://habrastorage.org/webt/_g/61/aq/_g61aqsz89j4-8wdwcdjgjyj48s.png)
Но далее часть документации предлагает скриншоты только на китайском, например…
![](https://habrastorage.org/webt/br/o1/hr/bro1hrr2ylzezrj1utkojwtc6ls.png)
В английской версии я эти настройки сходу найти не смог. В принципе, можно было перевести текст с помощью Google Lens и во всем разобраться, но я уже достаточно провозился с этим обзором, поэтому просто скачал проект wav-player_rom, распаковал архив в каталог
workspace
и импортировал его через RT-Thread Studio IDE. ![](https://habrastorage.org/webt/9p/mg/qa/9pmgqaw8gppzl4skjbeq8or6azg.png)
Компиляция проекта прошла без проблем. При этом процесс занял около 50 секунд, что в пять раз быстрее, чем запуск RT-Thread Studio ;). После я попробовал записать его с помощью Downloader, на что получил следующие сообщения:
[COM2] 9/11/2021 8:58:14 PM: 扫描中...
[COM2] 9/11/2021 8:59:26 PM: 错误 串口发送数据错误
Которые переводятся как:
[COM2] 9/11/2021 8:58:14 PM: Сканирование...
[COM2] 9/11/2021 8:59:26 PM: Ошибка. Последовательный порт отправляет ошибочные данные
Ну а так как большая часть информации изложена на китайском, что в программе, что в Вики, в итоге я начал искать решение, тупо кликая наугад по всем опциям (проверенная временем техника отладки, используемая матерыми разработчиками), исправив-таки проблему выбором
Tools
-> Mass Mode
.![](https://habrastorage.org/webt/vi/65/jd/vi65jdpefr1_k2qijxnsm8xq1uk.png)
![](https://habrastorage.org/webt/bc/zj/kp/bczjkpyijxuzp8oqe_flt0mlyoi.png)
Вот короткое видео, демонстрирующее, как все это выглядит и звучит.
Выводы
В настоящее время использовать плату Bluetrum AB32VG1 и RT-Thread проблематично, по крайней мере для тех, кто не знает китайский. Меня также не впечатлило то, что IDE работает только в Windows, и то, что для ее скачивания и использования необходима авторизация. Версия для Linux в разработке, но о планируемой дате релиза мне ничего не сообщили.
Отсутствие примера кода для Bluetooth, с которым можно было бы поиграться на изначально предназначенной для этого плате, тоже оказалось проблемой, но я предполагаю, что в ближайшем будущем он все же появится.
Если захотите поэкспериментировать сами, то плату можно заказать за $17 на Aliexpress.
![](https://habrastorage.org/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)
DGG
Ээээ. Казалось бы Risk-V даже в идее родился сильно позже, чем новый 16-битный код под винду утратил актуальность.