Zephyr 支持 BBC micro:bit(bbc_microbit / bbc_microbit_v2)开发板指南
发布时间:2026/9/16 16:52:22 作者:尧图编辑部 阅读量:1,286
开发板指南)
Zephyr 支持 BBC micro:bitbbc_microbit / bbc_microbit_v2开发板指南【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyrBBC micro:bit 是 Zephyr 项目中面向教育场景的经典 ARM 开发板目标分别以bbc_microbitv1nRF51822和bbc_microbit_v2v2nRF52833两个 board 名称提供支持。本文基于仓库boards/bbc/目录下的官方板级文档与板级实现文件讲解两块板子的硬件能力、Zephyr 设备树定义、烧录与调试流程以及 5×5 LED 矩阵、边缘连接器引脚映射等关键实现细节帮助你在 Zephyr 上完成从构建到运行 hello_world 应用的完整流程。板子概览micro:bit也称 BBC Micro Bit官方写法为 micro:bit是 BBC 为英国计算机教育设计的 ARM 架构嵌入式系统板子尺寸为 4 cm × 5 cm由 USB 或外部电池包供电设备的输入输出通过 23 引脚边缘连接器上的五个环形连接点引出。两代板子均由 boards/bbc/microbit/doc/index.rst 和 boards/bbc/microbit_v2/doc/index.rst 提供官方文档核心差异如下特性bbc_microbit (v1)bbc_microbit_v2 (v2)SoCnRF51822Cortex-M0nRF52833Cortex-M4F无线2.4 GHz Radio Bluetooth2.4 GHz Radio Bluetooth 5传感器光线/温度、加速度计与电子罗盘同 v1另加麦克风显示25 颗独立可编程 LED25 颗独立可编程 LED其他2 个可编程按键、USB 接口同 v1另加蜂鸣器板级标识定义在 board.yml 与 board.ymlv1name: bbc_microbitfull_name: micro:bitvendor: bbcsocs: nrf51822v2name: bbc_microbit_v2full_name: micro:bit V2vendor: bbcsocs: nrf52833。烧录与调试构建、刷写 hello_world两块板子的官方文档给出了相同的操作范式先打开终端串口监听输出再按 Zephyr 标准流程构建并烧录。1. 打开串口监听micro:bit 的 UART0 波特率为 115200设备树中current-speed 115200因此可以用 minicom 监听$ minicom -D tty_device -b 115200将tty_device替换为系统识别到的板子端口Linux 下通常是/dev/ttyACM0。2. 构建并烧录以官方 hello_world 示例 为例v1 板子执行$ west build -b bbc_microbit samples/hello_world $ west flashv2 板子只需把 board 换成bbc_microbit_v2$ west build -b bbc_microbit_v2 samples/hello_world $ west flash构建与运行的一般方法见 Zephyr 文档中的 Build and Rundoc/develop/buildsystem/build_an_application与doc/develop/buildsystem/application_run对应内容仓库文档目录为 doc/develop。3. 调试 runner 配置板级调试工具链参数集中定义在两处 board.cmake 文件中boards/bbc/microbit/board.cmakeboards/bbc/microbit_v2/board.cmakev1nRF51822board_runner_args(pyocd --targetnrf51822) board_runner_args(jlink --devicenRF51822_xxAA --speed4000) set(OPENOCD_NRF5_SUBFAMILY nrf51) set(OPENOCD_NRF5_INTERFACE cmsis-dap)v2nRF52833board_runner_args(pyocd --targetnrf52833) board_runner_args(nrfjprog --nrf-familyNRF52) board_runner_args(jlink --devicenRF52833_xxAA --speed4000) set(OPENOCD_NRF5_SUBFAMILY nrf52) set(OPENOCD_NRF5_INTERFACE cmsis-dap)从这两段配置可以确认几件事两块板子都支持 pyocd、nrfjprogv2 显式指定NRF52家族、J-Link 和 OpenOCD 四类 runnermicro:bit 板载的 DAPLink 调试接口默认按cmsis-dap模式接入 OpenOCDOPENOCD_NRF5_INTERFACE文件注释说明DAPLink 可按 SEGGER 的 micro:bit J-Link 升级指南刷成 J-Link OB升级后应移除cmsis-dap这一行让 OpenOCD 回落到默认的jlink接口。默认配置defconfig两块板子的默认 Kconfig 非常精简均以 UART 控制台为基础。bbc_microbit_defconfig 与 bbc_microbit_v2_defconfig 内容一致CONFIG_GPIOy CONFIG_CLOCK_CONTROL_NRF_K32SRC_RCy CONFIG_CLOCK_CONTROL_NRF_K32SRC_250PPMy CONFIG_SERIALy CONFIG_CONSOLEy CONFIG_UART_CONSOLEy要点默认开启 GPIO、UART 串行驱动与 UART 控制台32.768 kHz 低速时钟LFCLK默认使用片上 RC 振荡器精度标称 250 PPM对应设备树中lfclk { k32src rc; k32src-accuracy-ppm 250; };。这意味着 v1/v2 未依赖外部 32.768 kHz 晶振即可工作对 BLE 等低频时序敏感场景可自行评估精度影响。设备树解析从源码看硬件如何接入通用 chosen 与按钮两个 DTS 文件bbc_microbit.dts 与 bbc_microbit_v2.dts的chosen节点一致控制台、shell、蓝牙监控 UART 均指向uart0即zephyr,console、zephyr,shell-uart、zephyr,bt-mon-uart、zephyr,bt-c2h-uartzephyr,display指向 5×5 LED 矩阵节点使 display 子系统可直接使用该面板zephyr,code-partition指向 image-0 分区mcuboot 布局。两个按键通过gpio-keys描述并带有兼容别名sw0/sw1v1按键 A P0.17GPIO_ACTIVE_LOW按键 B P0.26v2按键 A P0.14按键 B P0.23。5×5 LED 矩阵LED 矩阵使用nordic,nrf-led-matrix驱动width 5、height 5、refresh-frequency 50两代板子的差异在于 GPIO 排布与刷新硬件属性v1v2行线 (row-gpios)P0.13/14/153 根行线扫描P0.21/22/15/24/195 根列线 (col-gpios)P0.4~P0.12 共 9 根P0.28/11/31、P1.5、P0.30 共 5 根pixel-group-size34刷新硬件timer timer2timer 计数驱动timer timer4pwm pwm0PWM 驱动pixel-mapping乱序映射如00 13 01 14 02 ...顺序映射00~44 按行排列v1 因 3 根行线驱动 5 行像素需要 9 根列线配合扫描pixel-group-size 3并占用了 GPIOTE 通道所以 v1 设备树把整个gpio0设为sense-edge-mask 0xffffffff所有引脚默认走 sense 机制v2 行线独立、pixel-group-size 提升到 4并且支持 PWM 调光。v1 中 LED 列线还复用到边缘连接器 P3/P4/P6/P7/P9/P10 引脚gpio-map 注释可见 LED Col x这意味着直接驱动这些边缘引脚会干扰 LED 矩阵显示。边缘连接器23 引脚edge_connector节点compatible microbit,edge-connector用gpio-map把微位引脚 P0~P20 映射为 GPIO 控制器实例应用程序可通过该控制器直接访问边缘引脚。两代映射不同例如v1P0→P0.0、P1→P0.2、P2→P0.1模拟输入、P13/P14/P15 分别为 SPI1 的 SCK/MISO/MOSI、P19/P20 为 I2C1 的 SCL/SDAv2P0→P0.2、P1→P0.3、P2→P0.4、P3→P0.31、P20→P1.0。v1 的 P17/P18 是 3.3 V 电源引脚未做 GPIO 映射v2 同样没有 P17/P18 的映射。传感器与 I2Ci2c0工作在快速模式clock-frequency I2C_BITRATE_FAST传感器随硬件版本而异v1 默认启用 NXP MMA8653FC兼容nxp,fxos8700作为加速度计 磁力计地址 0x1d中断脚 P0.28/P0.27LSM303AGR 的两个节点lsm303agr-magn1e、lsm303agr-accel19默认status disabled供 v1.5 硬件变体使能v2 默认启用 ST LSM303AGR 拆分节点st,lis2mdl磁传感器、st,lis2dh加速度计中断脚 P0.25。DTS 中保留的 aliasesaccel0、magn0等用于与官方示例代码保持兼容如accel0、magn0分别指向实际传感器节点watchdog0指向wdt0。其他 v2 独有能力蜂鸣器buzzer节点使用pwm-buzzer驱动挂在 pwm1 通道上PWM_HZ(2700)固定 2700 Hz 频率别名buzzer0USBusbdzephyr_udc0nordic,nrf-usbd默认使能可用于 CDC-ACM 等设备UART0显式声明compatible nordic,nrf-uart。Flash 分区布局mcuboot两代板子都按 mcuboot 双镜像布局划分 flash分区v1 地址/大小v2 地址/大小mcuboot0x0000032 KB0x0000048 KBimage-00x08000104 KB0x0C000200 KBimage-10x22000104 KB0x3E000200 KBimage-scratch0x3C0008 KB0x7000040 KBstorage0x3E0008 KB0x7A00024 KB分区定义位于各自 DTS 的flash0 { partitions { ... } }节点所有分区均为zephyr,mapped-partition即直接映射到固件地址空间。参考文件清单板级文档索引boards/bbc/index.rstv1 文档与板级文件boards/bbc/microbit/doc/index.rst、bbc_microbit.dts、bbc_microbit-pinctrl.dtsi、bbc_microbit_defconfig、board.cmakev2 文档与板级文件boards/bbc/microbit_v2/doc/index.rst、bbc_microbit_v2.dts、bbc_microbit_v2-pinctrl.dtsi、bbc_microbit_v2_defconfig、board.cmake示例应用samples/hello_world小结bbc_microbit与bbc_microbit_v2在 Zephyr 中都是开箱即用的教育板目标UART 控制台默认开启hello_world 可直接构建烧录设备树完整描述了 5×5 LED 矩阵、A/B 按键、23 引脚边缘连接器、I2C 运动传感器与 mcuboot 双镜像 flash 布局调试侧默认走板载 DAPLinkcmsis-dap也可升级 J-Link 后切换接口。选择 v1 时注意 LED 列线与部分边缘引脚复用选择 v2 时则可额外利用麦克风、蜂鸣器与 USB 设备控制器。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考