Bouffalo SDK это программный пакет для IOT и MCU, предоставленный Bouffalo Lab Team. Пакет поддерживает все чипы компании Bouffalo. Также BouffaloSDK является комбинацией bl_mcu_sdk и bl_iot_sdk.
Архитектура SDK:
Назначение основных каталогов:
bsp/board BSP расшифровывается как Board Support Package. Код для поддержки особенностей аппаратуры процессоров и плат разработчика. Инициализация тактов, мультиплексирования выводов чипа, кучи, консоли вывода отладочных сообщений (clock, pinmux, memoryheap, console).
bsp/common Общий драйвер BSP.
components Различные программные компоненты.
docs Документация по быстрому старту, API, демонстрационным проектам.
drivers/lhal LHAL расшифровывается как Lowlevel Hardware Abstraction Layer. Общие драйверы периферийных устройств чипов bouffalo, относящиеся к поддержке всех чипов.
drivers/soc SOC расшифровывается как System On Chip. Драйверы bouffalo, обеспечивающие поддержку особенностей периферийных устройств чипов.
drivers/rfparam Драйверы для параметров радиотракта.
examples Официальные примеры приложений.
tools Утилиты для прошивки и дополнительный инструментарий.
[Драйверы LHAL]
Драйверы LHAL, разработанные Bouffalo Lab, обеспечивают единообразный API для доступа к периферийным устройствам чипов BL60x, BL70x, BL61x, BL80x. В следующей таблице приведена общая информация о доступной поддержке периферийных устройств у разных чипов. Символ √ означает наличие поддержки, × отсутствие поддержки, ○ означает не протестированную пока поддержку. Символ - означает отсутствие у чипа такого периферийного устройства.
Как компилировать проекты. Перед тем, как запустить сборку кода из командной строки, вам нужно выбрать тулчейн, подходящий для вашей операционной системы, сконфигурировать системные переменные окружения для тулчейна, и установить утилиты сборки make или ninja. Как это делается, см. [2]. После этого можно приступить к следующим шагам.
Выберите один из интересующих вас демонстрационных проектов в каталоге examples. Перейдите в его корневую директорию, там где находятся файлы main.c (основной код приложения) и Makefile (скрипт компиляции для make).
К примеру, если надо скомпилировать проект helloworld для чипа BL616 с помощью утилиты make, то выполните команды:
$ cd examples/helloworld
$ make CHIP=bl616 BOARD=bl616dk
Если используются чипы BL808 или BL606P, то также нужно добавить опцию CPU_ID с установкой m0 или d0:
$ make CHIP=bl808 BOARD=bl808dk CPU_ID=m0
Если вы хотите использовать ninja, то команды компиляции должны быть такими:
$ cd examples/helloworld
$ make ninja CHIP=bl616 BOARD=bl616dk
$ cd examples/helloworld
$ make ninja CHIP=bl808 BOARD=bl808dk CPU_ID=m0
[Прошивка кода в память чипа]
Обычно чипы прошиваются через последовательный интерфейс (переходничок USB - TTL UART). На операционных системах Linux по умолчанию может быть запрещен доступ к устройству последовательного интерфейса. Решением проблемы может быть запуск команды прошивки через sudo. Также можно добавить текущего пользователя в группу dialout и перезапустить Linux, чтобы установка вошла в силу. Например, здесь xxx это имя текущего пользователя:
$ sudo usermod -aG dialout xxx #
Как прошивать:
$ cd examples/helloworld
$ make flash CHIP=chip_name COMX=xxx
Здесь параметр chip_name должен быть bl602/bl702/bl616/bl808/bl606p. Параметр COMx задает имя последовательного устройства в система. Для Windows это обычные имена наподобие COM5, COM6 и т. п., а на Linux это может быть имя /dev/ttyxxx, обычно /dev/ttyUSB0. Если вы используете BL808 или BL606P, то нужно также добавить CPU_ID с m0 или d0.
$ cd examples/helloworld
$ make flash CHIP=chip_name CPU_ID=m0 COMX=xxx
Различные чипы преобразователей последовательных интерфейсов USB - UART могут иметь разные возможности по установке скорости передачи, что необходимо учитывать при выборе скорости интерфейса.
Чип USB
Скорость бит
CH340
До 500K
CP2102
До 2M
FT232
До 2M
BL702
До 8M
BL616
До 10M
Как использовать утилиту прошивки, см. [6].
К сожалению, большинство документации ([3, 4, 5]) доступно только на китайском языке, но можно воспользоваться удобной функцией переводчика Google для файлов PDF, а для HTML-документации функцией перевода браузера Chrome.