[Перевод] Знакомимся с аудио платой Bluetrum AB32VG1 RISC-V Bluetooth через RT-Thread

zmekajkbvaev6kd8wj4jcaoaf_y.jpeg


Bluetrum AB32VG1 — это макетная плата на базе микроконтроллера AB5301A RISC-V, спроектированного как под приложения с использованием Bluetooth-аудио, так и для общих проектов, которые работают с операционной системой реального времени RT-Thread.

Эту плату мне прислали разработчики RT-Thread, и далее я опишу свой опыт первого знакомства с ней. В ходе этого небольшого эксперимента я опробую RT-Thread Studio IDE, помигаю светодиодом и поработаю с примером кода для аудио интерфейса, так как для Bluetooth пока примеров нет…

Распаковка Bluetrum AV32VG1


Плата поставляется с кабелем USB-C, служащим для подачи питания и программирования.

zmekajkbvaev6kd8wj4jcaoaf_y.jpeg


На борту мы видим штыревые разъемы Arduino UNO для расширения, слот под MicroSD, USB-порт, 3.5 мм аудиовыход, ИК-приемник и несколько кнопок.

image-loader.svg


Снизу платы ничего интересного, разве что QR-код для WeChat.

-1ofaabwksq_jpzie7mkynnudoq.jpeg


Помимо этого, на ней есть несколько настроечных перемычек, но по ним я документацию не нашел и трогать их пока не стал.

Установка инструментов разработки и настройка


Начнем с документации, которая, как это ни печально, доступна лишь на китайском. Она также отсылает нас к инструментам на китайском сайте rt-thread.org, но при этом есть возможность переключиться на его английскую версию, rt-thread.io. Здесь мы находим нужные нам RT-Thread Studio IDE и Downloader v. 2.2.0. Последний мы используем для прошивки платы и получения доступа к консоли.

Вот ссылка на IDE, доступную, к сожалению, только для Windows, хотя в компании мне сообщили, что работают над версией для Linux.

image-loader.svg


Параллельно со скачиванием установки IDE, а это 804Мб, можно сразу скачать Downloader 2.2.0. Еще есть USB драйвер для CP210x, но для рассматриваемой в этом обзоре версии платы 2.0 он не понадобится, так как в ее основе лежит модуль CH340G USB — TLL.

Обратите внимание, что Downloader размещен на Gitee, где для скачивания потребуется создать аккаунт. Я там уже зарегистрирован, но для тех, у кого аккаунта нет, это явно не самый удачный вариант получения файлов.

Для установки RT-Thread Studio мне пришлось запустить виртуальную машину с Windows 7. При первой попытке я прождал, казалось, целую вечность, пока не получил следующее сообщение:

image-loader.svg


Следуя рекомендации, я закрыл все остальные программы, повторил попытку и на этот раз завершил установку, на что ушло около полутора часов. Далее при запуске RT-Thread Studio IDE меня поприветствовал экран авторизации.

image-loader.svg


Для IDE это выглядит бессмысленным, если только в ней не используются пользовательские данные, которые нужно хранить в облаке. К примеру, для использования Arduino IDE мне никогда не приходилось авторизовываться.

Создавать аккаунт мне было лень, поэтому я попробовал авторизоваться через GitHub, на что получил просьбу создать новый аккаунт либо связать его с существующим, предоставив кучу личных данных. Номер телефона и адрес почты вроде как необязательны, но при этом необходимо предоставить хотя бы что-то одно. Я выбрал почту, но письмо для ее подтверждения так и не получил.

image-loader.svg


В итоге я попытался отменить процесс регистрации, но тогда программа просто закрывается. В конечном счете я создал новый аккаунт RT-Thread Club с одним только адресом электронной почты и паролем. Имейте в виду, что в форме не допускается использовать адреса почты с символом +, который я использую для отслеживания утечек почты и спамеров. (например, username+company1@email.com или username+company2@email.com).

С горем пополам я все же вошел в RT-Thread Studio, и теперь можно заняться настройкой системы для платы. Для этого потребуется запустить RT-Thread SDK Manager и установить последнюю версию исходного кода RT-Thread из мастер-ветки, так как стабильные релизы еще не поддерживают платы Bluetrum.

image-loader.svg

После этого можно промотать вниз, выбрать последний пакет для Bluetrum AV32VG1-AB-PROUGEN, в моем случае 1.0.8, и кликнуть Install.

image-loader.svg


Заметьте, что выбрать сразу последнюю версию RT-Thread и пакет Bluetrum для их одновременной установки нельзя, потому что SDK Manager может устанавливать только один пакет за раз.

image-loader.svg


На этом почти все. Осталось лишь установить набор инструментов RISC-V GCC.

Для справки уточню, что занимает приложение 500Мб ОЗУ и на моей виртуальной машине запускается около 5 минут.

Проект «Hello World» для Bluetrum AB32VG1


Теперь создадим наш первый проект, для чего переходим в FileNewRT-Thread Project, присваиваем ему имя ab32vg1, выбираем Base on Board, после чего программа автоматически выберет плату PROUGEN G1, для которой мы установили пакеты. Остальные настройки можно оставить, поэтому просто жмем Finish.

image-loader.svg


Новый проект создается не пустым и уже содержит небольшой образец программы, которая выводит в консоли Hello World и мигает светодиодом, расположенным рядом с USB-хостом платы:

#include 
#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 .

image-loader.svg


Готово! Теперь можно подключать плату к компьютеру через USB, после чего в Device Manager отобразиться COM-порт CH340.

image-loader.svg


Прошить нашу программу на плату из RT-Thread Studio IDE не получится, так что делаем это с помощью Downloader 2.2.0. Язык интерфейса этого инструмента можно изменить на английский, хотя переведен он не полностью.

image-loader.svg


Для записи программы нужно убедиться, что COM не выделен серым, и выбран COM2, после чего загрузить из проекта файл rtthread.dcf и кликнуть Start. Обратите внимание, что мне пришлось кликнуть Info, чтобы сбросить плату и запустить программу. Теперь светодиод замигает каждую секунду.

image-loader.svg

На последовательную консоль также можно переключиться, кликнув иконку Develop. Это отобразит информацию о системе на англо-китайском диалекте. Почему-то Hello, world не показывается целиком. В моем случае отобразилось лишь Hell, что в крайне драматичной форме выражает мой опыт работы с этой системой на данный момент.

Аудио проект RT-Thread RISC-V


Поскольку Hello world успешно заработал, мне захотелось реализовать проект посложнее с воспроизведением аудио по WiFi. Я подключил динамики к выходу 3.5 мм и запитал плату через USB.

nzdjdsxozmtpeugy-qz5vxfnqna.jpeg


Изначально я решил продолжить работу с новым проектом, добавив пакеты и настроив IDE согласно Википедии. На панели Project Explorer нужно перейти во вкладку RT-Thread Setting, откуда открыть дополнительные опции через кнопку More….

image-loader.svg


Здесь мне удалось найти некоторые настройки вроде Enable Audio Device

image-loader.svg


Но далее часть документации предлагает скриншоты только на китайском, например…

image-loader.svg

В английской версии я эти настройки сходу найти не смог. В принципе, можно было перевести текст с помощью Google Lens и во всем разобраться, но я уже достаточно провозился с этим обзором, поэтому просто скачал проект wav-player_rom, распаковал архив в каталог workspace и импортировал его через RT-Thread Studio IDE.

image-loader.svg


Компиляция проекта прошла без проблем. При этом процесс занял около 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: Ошибка. Последовательный порт отправляет ошибочные данные 


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

image-loader.svg


image-loader.svg

Вот короткое видео, демонстрирующее, как все это выглядит и звучит.


Выводы


В настоящее время использовать плату Bluetrum AB32VG1 и RT-Thread проблематично, по крайней мере для тех, кто не знает китайский. Меня также не впечатлило то, что IDE работает только в Windows, и то, что для ее скачивания и использования необходима авторизация. Версия для Linux в разработке, но о планируемой дате релиза мне ничего не сообщили.

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

Если захотите поэкспериментировать сами, то плату можно заказать за $17 на Aliexpress.

image-loader.svg

© Habrahabr.ru