Zephyr 上构建 doiting dt_xt_zb1_devkit(BL702)Zigbee/BLE 共存开发板的完整实践:从设备树到 Hello World 烧录调试
Zephyr 上构建 doiting dt_xt_zb1_devkitBL702Zigbee/BLE 共存开发板的完整实践从设备树到 Hello World 烧录调试【免费下载链接】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本文围绕 Zephyr 仓库中 doiting dt_xt_zb1_devkit 板级文档 展开讲解这块搭载 Bouffalo Lab BL702 SoC 的 Zigbee 3.0 与 BLE 5.0 单芯片共存开发板在 Zephyr 中的定义方式设备树如何配置 Flash 分区、UART 与加密引擎OpenOCD 与 bflb_mcu_tool 两种调试/烧录运行器如何工作以及如何构建、烧录并监听hello_world示例的完整实战流程。读完后可独立完成该板的构建、烧录与串口验证。1. 开发板概述单芯片 Zigbee BLE 共存方案dt_xt_zb1_devkit是 XT-ZB1 Zigbee 3.0 and BLE 5.0 Coexistence Module 开发板其核心特性是在单颗 SoC 上同时提供 Zigbee 与 BLE 射频能力。模块以 Bouffalo Lab 的 BL702 作为 Zigbee/BLE 共存 SoC内嵌存储器配置可简化应用开发同时板级引出了一批可配置 GPIO可按不同应用复用为各类数字外设。从板级定义文件 board.yml 可以看到 Zephyr 对该板的正式登记板标识dt_xt_zb1_devkit全称XT-ZB1 Zigbee 3.0 and BLE 5.0 Coexistence Module Development Kit厂商doitingDoctors of Intelligence Technology绑定 SoCbl702c10q2h。该 SoC 标识在 Kconfig.dt_xt_zb1_devkit 中通过select SOC_BL702C10Q2H自动选中SoC 本身登记于 soc/bflb/soc.yml并在 soc/bflb/bl70x/Kconfig.soc 中作为 BL702 系列的默认变体。dt_xt_zb1_devkit.yaml 还声明了该板为 RISC-V 架构、约 132 KB RAM 的 MCU 类型板工具链为 Zephyr SDK 自带zephyr。2. 设备树结构设备节点与 Zephyr chosen 选择板级设备树由三层文件拼装而成主文件 dt_xt_zb1_devkit.dts 依次包含 SoC 公共定义与板级引脚复用定义dt_xt_zb1.dtsi模块级公共定义兼容字符串bflb,bl702并引入 dts/bflb 相关公共 dtsi 中的bl70x.dtsidt_xt_zb1_devkit-pinctrl.dtsi开发板特有的 I2C/SPI 引脚复用主文件本身板级外设状态使能。2.1 chosen 节点Zephyr 内核的入口设备dt_xt_zb1.dtsi 中的chosen节点决定了 Zephyr 运行时各子系统绑定哪些硬件chosen 属性指向设备作用zephyr,flashkh25v80外挂 QSPI Flash主 Flash 存储zephyr,flash-controllersf_bank1Flash 控制器zephyr,code-partitionslot0_partition代码镜像分区zephyr,itcm/zephyr,sramitcm/sram0_btTCM 与 BT 场景 SRAMzephyr,console/zephyr,shell-uartuart0控制台与 Shell 串口zephyr,entropysec_eng_trng硬件真随机数熵源zephyr,bt-hcibt_hci_bflbBluetooth HCI 控制器BLE/Zigbee 射频栈入口其中zephyr,bt-hci bt_hci_bflb并配合bt_hci_bflb { status okay; }的使能是该板支持 BLE 协议栈的关键设备树依据同时sec_eng_trngTRNG 熵源、以及主文件中使能的sec_eng_aes与sec_eng_sha硬件加密引擎共同构成该板在安全与无线协议上的基础能力。2.2 Flash 布局与分区sf_bank1QSPI Flash 控制器 bank1挂载了一片kh25v80FlashJDEC IDc2 20 14基址0x23000000总大小0x1000001 MiB。设备树注释指出该片 Flash 能力有限Sad flash can only do DO at best因此仅以 SPI 模式 1spi-bus-mode 1 2 线sf-pad 2运行。其下划分了三个分区分区标签地址范围大小说明boot_header_partitionboot_header0x00x20008 KB启动头只读slot0_partitionimage-00x20000x7E000约 504 KBZephyr 代码分区zephyr,code-partition只读storage_partitionstorage0x800000x80000512 KB通用存储可读写擦写参数为 4 KB 擦除块、4 字节写块与典型 NOR/SPI Flash 特性一致。这意味着该板上可放置的 Zephyr 镜像约 500 KBsettings、NVS 等持久化数据可落入后 512 KB 的storage分区。2.3 板级外设使能主设备树 dt_xt_zb1_devkit.dts 额外使能了i2c0标准速率I2C_BITRATE_STANDARD复用引脚见 dt_xt_zb1_devkit-pinctrl.dtsi——GPIO0为 SCL、GPIO1为 SDA上拉 施密特触发输入spi0GPIO7(SCLK) /GPIO8(MOSI) /GPIO9(MISO)同样上拉 施密特输入sec_eng_aes、sec_eng_sha硬件 AES/SHA 安全引擎。3. 系统时钟与支持的硬件特性3.1 144 MHz 主频开发板默认以最高速度运行cpu0 { clock-frequency DT_FREQ_M(144); }见 dt_xt_zb1.dtsi即CPU 主频 144 MHz。该值同时写入 Zephyr 的运行时设备描述影响时钟换算、K_USEC_TO_CYCLES等宏的生成构建时无需额外配置。3.2 支持特性清单根据 dt_xt_zb1_devkit.yaml 的supported字段Zephyr 在该板上声明支持的外设/特性为gpio、pinctrl、uart、dma、i2c、spiflash、entropy、crypto、counterusbdUSB Device。同时该板在 CI 测试矩阵中标注了ignore_tags: net, bluetooth即网络与蓝牙测试套件不在该板的默认自动化测试范围内BLE 能力由 SoC 与bt_hci_bflb提供但协议栈级测试未纳入板级测试标签。watchdog0别名指向wdt0为看门狗子系统预留入口。4. 串口UART0 作为程序与控制台通道dt_xt_zb1_devkit使用UART0作为默认串口经板上 USB 转串口芯片引出同一端口兼作烧录程序与 console 输出。设备树中 dt_xt_zb1.dtsi 将其速率固定为current-speed 115200引脚复用定义在 dt_xt_zb1-pinctrl.dtsiuart0_defaultGPIO15→ UART0_RX、GPIO14→ UART0_TX上拉 施密特输入uart0_sleep同引脚高阻态用于低功耗场景。板级默认配置 dt_xt_zb1_devkit_defconfig 打开了控制台相关开关CONFIG_CONSOLEy CONFIG_SERIALy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENy其中UART_INTERRUPT_DRIVEN使串口以中断方式收字符降低轮询开销这也是 Zephyr 串口示例与 Shell 的通用配置。5. 编程与调试两种 Runner 及默认烧录方式board.cmake 为该板注册了两个运行器runner并指定默认烧录器5.1 bflb_mcu_tool默认 flasherboard_runner_args(bflb_mcu_tool --chipname bl702) include(${ZEPHYR_BASE}/boards/common/bflb_mcu_tool.board.cmake) board_set_flasher(bflb_mcu_tool)west flash不显式指定 runner 时使用bflb_mcu_toolBouffalo Lab 官方 MCU 烧录工具芯片名bl702这也是 USB 串口单线烧录路径对应的工具。5.2 OpenOCDDAP 调试器board_runner_args(openocd --cmd-pre-init source [find target/bl702.cfg]) board_runner_args(openocd --file-typeelf --no-load) board_runner_args(openocd --gdb-init set print asm-demangle on) board_runner_args(openocd --gdb-init mem 0x21000000 0x21030000 ro) board_runner_args(openocd --gdb-init mem 0x23000000 0x24000000 ro)要点通过--cmd-pre-init预加载 OpenOCD 自带的target/bl702.cfg目标文件--file-typeelf --no-load说明 OpenOCD 以纯调试不下载镜像方式连接配合 GDB 使用mem 0x21000000 0x21030000 ro/mem 0x23000000 0x24000000 ro把 RAM 区与 Flash 映射区声明为只读内存区GDB 单步/反汇编显示时按 C 风格 demangleboards/common/openocd.board.cmake 提供了 openocd runner 的通用行为如 flash 擦写流程。配套的 support/openocd.cfg 面向WCH linkE 调试器DAP 模式interface cmsis-dap adapter speed 400即使用 CMSIS-DAP 接口、400 kHz 适配器速率。使用调试器烧录/调试时以该配置作为 OpenOCD 的 interface 配置即可日常烧录则优先走bflb_mcu_tool。另外pre_dt_board.cmake 在设备树编译阶段追加了-Wno-unique_unit_address_if_enabled抑制 QSPI Flash 节点地址相关的 dtc 警告属于构建系统的板级适配细节。6. 实战构建并运行 hello_world6.1 构建并烧录在 Zephyr 开发环境west Zephyr SDK 构建依赖就绪中构建 Zephyr 内核与hello_world示例并烧录$ west build -b dt_xt_zb1_devkit samples/hello_world $ west flash文档中给出的zephyr-app-commands语义即build与flash两个目标west flash将按 5.1 节使用默认 flasherbflb_mcu_tool。6.2 监听串口输出运行终端监听程序。Linux 下对应设备一般为/dev/ttyUSB0$ screen /dev/ttyUSB0 115200串口参数与 defconfig 及 dtsi 中的current-speed一致波特率115200数据位8校验位无None停止位1。随后按下并松开板上的RST复位按键即可看到启动输出版本号随构建而变文档示例基于 v4.2.0 开发版本*** Booting Zephyr OS build v4.2.0-1031-g63c9db88d01a *** Hello World! dt_xt_zb1_devkit/bl702c10q2h第二行输出格式为board/soc与 board.yml 中的板标识和 SoC 名一一对应可据此确认构建目标正确。7. 小结与延伸dt_xt_zb1_devkit在 Zephyr 中的板级实现由一小组高内聚文件构成适合作为学习 bflb 系列板级定义的样板设备树dt_xt_zb1_devkit.dts dt_xt_zb1.dtsi 两个 pinctrl 文件覆盖 Flash 分区、UART/USB/I2C/SPI 复用与安全引擎使能板级行为board.cmake双 runner、默认 flasher、Kconfig自动选 SoC、defconfig控制台与串口开关、yaml支持特性声明调试器配置support/openocd.cfgWCH linkE / CMSIS-DAP。在此基础上开发者可复用同一套chosen与分区布局结合bt_hci_bflb探索 BLE 应用或把 I2C/SPI/USB 外设接入 Zephyr 对应子系统烧录时以bflb_mcu_tool为主路径需要 GDB 级调试时切换 OpenOCD runner 并加载 CMSIS-DAP 接口配置即可。【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →