rt-thread-official/bsp/bouffalo_lab/bl808
flyingcys 76befa4e36
[bsp/bouffalo_lab]update uart driver pin && bl808-d0 ioremap mode (#7456)
2023-05-07 23:13:38 +08:00
..
builtin_imgs add bl60x/bl70x/bl61x/bl808 (#7063) 2023-03-19 14:41:18 +08:00
config add bl60x/bl70x/bl61x/bl808 (#7063) 2023-03-19 14:41:18 +08:00
d0 [bsp/bouffalo_lab]update uart driver pin && bl808-d0 ioremap mode (#7456) 2023-05-07 23:13:38 +08:00
figures [bsp/bouffalo_lab]add spi driver (#7435) 2023-05-04 11:49:38 +08:00
lp update bouffalo_lab libraries && script (#7349) 2023-04-22 23:57:53 +08:00
m0 [bsp/bouffalo_lab]update uart driver pin && bl808-d0 ioremap mode (#7456) 2023-05-07 23:13:38 +08:00
README.md [bsp/bouffalo_lab]add spi driver (#7435) 2023-05-04 11:49:38 +08:00
build_bl808_all.sh [bsp/bouffalo_lab]add bl808-d0 (#7373) 2023-04-26 08:50:03 +08:00
flash_prog_cfg.ini [bsp/bouffalo_lab]add bl808-d0 (#7373) 2023-04-26 08:50:03 +08:00

README.md

博流智能 BL808板级支持包说明

1. 简介

BL808 是高度集成的 AIoT 芯片组,具有 Wi-Fi/BT/BLE/Zigbee 等无线互联单元,包含多个 CPU 以及音频编码译码器、视频编码译码器和 AI 硬件加速器,适用于各种高性能和低功耗应用领域。

BL808 系列芯片主要包含无线和多媒体两个子系统。

无线子系统包含一颗 RISC-V 32-bit 高性能 CPUm0集成 Wi-Fi/BT/Zigbee 无线子系统,可以实现多种无线连接和数据传输,提供多样化的连接与传输体验。 多媒体子系统包含一颗 RISC-V 64-bit 超高性能 CPUd0集成 DVP/CSI/ H264/NPU 等视频处理模块,可以广泛应用于视频监控/智能音箱等多种 AI 领域

多媒体子系统组成部分如下:

  • NPU HW NN 协处理器 (BLAI-100),适用于人工智能应用领域
  • 摄像头接口
  • 音频编码译码器
  • 视频编码解码器
  • 传感器
  • 显示接口

电源管理单元控制低功耗模式。此外,还支持各种安全功能。

外围接口包括 USB2.0、 Ethernet、 SD/MMC、 SPI、 UART、 I2C、 I2S、 PWM、 GPDAC/GPADC、 ACOMP、 PIR、 Touch、 IR remote、 Display 和 GPIO。

支持灵活的 GPIO 配置, BL808 最多可达 40 个 GPIO。

芯片规格包括如下:

硬件 描述
芯片型号 bl808
CPU 三核异构RISC-V CPUs
RV64GCV 480MHz
RV32GCP 320MHz
RV32EMC 160MHz
RAM 768KB SRAM + 64MB UHS PSRAM
外设 内嵌AES与SHA256算法加速器
AI NN 通用硬件加速器 BLAI-100 用于视频/音频检测/识别100GOPS 算力
摄像头接口 DVP 和 MIPI-CSI
显示接口 SPI、DBI、DPI(RGB)
无线 支持 Wi-Fi 802.11 b/g/n
支持 Bluetooth 5.x Dual-mode(BT+BLE)
支持 Wi-Fi / 蓝牙 共存

2. RT-Thread 版本

BL808是三核异构架构分别为m0、lp、d0当前bsp已实现三核同时启动三核分别采用了不同的RT-Thread版本

名称 CPU核 RT-Thread版本
M0 E907 RT-Thread 标准版
LP E902 RT-Thread Nano
D0 C906 RT-SMART

3. 编译说明

BL808是三核异构架构分别为m0、lp、d0三核需要单独编译并烧录到对应的位置。

烧录地址:

名称 CPU核 烧录地址 说明
M0 E907 0x00000
LP E902 0xC0000 调整lp烧录地址需修改
bsp/bouffalo_lab/bl808/lp/board/linker_scripts/bl808_flash_lp.ld中的xip_memory地址
bsp/bouffalo_lab/bl808/m0/board/board.hCONFIG_LP_FLASH_ADDR地址
D0 C906 0x100000 在spl文件中设定调整d0烧录地址需重新编译spl文件及打包文件bsp/bouffalo_lab/bl808/d0/merge_rtsmart.py

3.1. m0/lp

  • 工具链下载

下载risc-v的工具链下载地址1下载地址2

Windows下请使用使用[env工具][1],使用命令 tar -xvf Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz 解压交叉编译器使用Windows下解压工具直接解压可能出现Windows下编译错误。

rtconfig.py中将risc-v工具链的本地路径加入 EXEC_PATH 或通过 RTT_EXEC_PATH 环境变量指定路径

Windows

set RTT_EXEC_PATH=C:\Users\xxxx\Downloads\Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1\bin

Linux:

export RTT_EXEC_PATH=/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin
  • 编译

Windows下推荐使用[env工具][1]在console下进入bsp/bl808目录中选择需要编译的核心m0或lp运行

cd bsp/bl808/m0
menuconfig
pkgs --update

如果在Linux平台下可以先执行

scons --menuconfig

它会自动下载env相关脚本到~/.env目录然后执行

source ~/.env/env.sh

cd bsp/bl808/m0
pkgs --update

更新完软件包后,执行 scons -j10scons -j10 --verbose 来编译这个板级支持包。或者通过 scons --exec-path="GCC工具链路径" 命令,在指定工具链位置的同时直接编译。

如果编译正确无误会产生rtthread.elf、rtthread_m0.bin文件。其中rtthread_m0.bin需要烧写到设备中进行运行。

  • 注意

    由于BL808为三核异构lp核、d0核都是通过m0核启动的必须正确烧录m0核才可以实现三核正常运行

    m0烧录配置文件bsp/bouffalo_lab/bl808/m0/flash_prog_cfg.ini

3.2. d0

bl808-d0运行在S态下支持RT-Smart采用的交叉编译器为riscv64-unknown-linux-musl-gcc,编译请参考构建内核镜像

其中内核虚拟地址开始地址为0x50000000

kernel_start

bl808-d0编译完成后通过merge_rtsmart.py脚本,将hw.dtb.5M,spl_bl808_d0.binopensbi_v0.6.binrtthread_d0.bin,合成最终烧录文件whole_img_d0.bin,烧录地址为0x100000,否则无法启动。

预编译bin文件位于bsp/bouffalo_lab/bl808/d0/pre_build_bin文件夹下,如有修改需求可下载Low-Starup-BL808后自行修改。

d0单独烧录文件为bsp/bouffalo_lab/bl808/d0/flash_prog_cfg.ini

d0

3.3. 三核同时编译与烧录

  • 可运行bsp/bouffalo_lab/bl808/build_bl808_all.sh依次编译m0、lp、d0核
  • 可通过bsp/bouffalo_lab/bl808/flash_prog_cfg.ini烧录配置文件同时烧录m0、lp、d0核。

bl808

4. FAQ

  • 在 windows 环境下,通过 UART 接口将开发板连接至电脑时,仅能识别到两个 USB converter 设备,但是识别不到对应的串口设备。
  • 使用 TypeC 数据线将电脑与板子的 UART 口连接起来,此时电脑上会出现两个串口 (如果出现鼠标不能动的现象请拔掉 USB 并且查看 更新板载 bl702 固件 相关内容来修复问题)。