上次我们聊了 BL70x 的硬件规格和用途,这次来看看它的软件生态。
BL70x 作为相对小众的 SoC,目前支持的 RTOS 主要是 FreeRTOS 和 RT-Thread 两款。FreeRTOS 很好移植所以不展开说了,但 RT-Thread 还是值得一提的。
RT-Thread 是一款著名的国产 RTOS。咋一看它似乎与别的 RTOS 没啥本质区别,但经过多年的发展还是形成了一些自己的特色。笔者初次接触的时候就惊叹于它丰富的软件包资源:menuconfig 里光是 benchmark 工具就有 anv_bench, Coremark, Dhrystone, mbedtls_bench, r-rhealstone 等等,甚至还有完整的网络栈,加密库,媒体解码器,GUI库… 使用起来也很方便,直接在 menuconfig 里选中再使用脚本更新一下软件包的源码即可,编译时软件包会静态编译到镜像里。
RT-Thread 的编译需要用到一个专门的工具链;我们使用的是 https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1705395512373/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1-20240115.tar.gz 。设置好环境变量后,编译也是一条龙的操作:
git clone --depth=1 https://github.com/RT-Thread/rt-thread
cd rt-thread/bsp/bouffalo_lab/bl70x
scons --menuconfig
source ~/.env/env.sh
pkgs --update
scons -j$(nproc) --verbose
至于刷写,之前提到过博流全系的 SoC 烧录程序需要用到自家的 BLDevCube。它是一个稍微有些笨重的 GUI,但其实也有一个 CLI 版本可用:bouffalo_flash_cube。RT-Thread 也提供了一个调用这个工具的自动化脚本 rt-thread/bsp/bouffalo_lab/bouffalo_flash_cube.sh at master · RT-Thread/rt-thread · GitHub ,所以刷写也变成了一条龙:
sudo ./bouffalo_flash_cube.sh bl702 /dev/ttyACM0
RT-Thread 的源码中对博流全系 SoC 都做了支持,但我们目前只测试了在 BL702 上的可用性;BL808 的版本因为一些原因暂时无法编译,具体报告参见 RT-Thread 在 Sipeed M1s Dock 上的测试报告 。
至于 BL70x 的 SDK 生态也在不断发展:除了官方示例 GitHub - sipeed/M0sense_BL702_example: M0sense_BL702_example ,我们还有了一个基本的 Rust HAL https://github.com/9names/bl702-hal ,甚至还有人用它做了个巡线小车的demo GitHub - tomrodinger/line_following_robot: The code for the line following robot that runs on BL702/BL706 ,感兴趣的朋友不妨看看。
欢迎各位复现/吐槽丁丑小队的所有测试结果。
如果有对我们的测试方法/结果有任何建议/问题,欢迎直接在 GitHub 开 issue,或者在论坛 @ 我、回帖询问 ![]()