 Bouffalo Lab 平台实战指南:BL602/BL702/BL61X 的构建、烧录与配网调试)
Matter (connectedhomeip) Bouffalo Lab 平台实战指南BL602/BL702/BL61X 的构建、烧录与配网调试【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip本文以 Matterconnectedhomeip仓库中 Bouffalo Lab 平台的官方入门文档docs/platforms/bouffalolab/getting_started.md为主体系统讲解从代码检出、工具链准备、构建环境激活到 BL602/BL702/BL702LBL_IOT_SDK与 BL61Xbouffalo_sdk两类 SDK 家族的构建方式、Flash 分区设计、固件烧录与 chip-tool 配网控制的完整流程。读完本篇你将能够在 Bouffalo Lab SoC 上独立完成 Matter 示例应用照明、接触传感器的构建、下载、组网与集群属性读写并能理解构建参数在源码层的实际落地方式。一、代码检出Checking out the Matter code1.1 检出全部平台最省事的方式是连同所有平台子模块一起检出git clone --recurse-submodules https://github.com/project-chip/connectedhomeip.git1.2 只检出 Bouffalo Lab 所需子模块Bouffalo Lab 平台横跨两个 SDK 家族对应不同的子模块与构建系统顶层仓库浅克隆git clone --depth1 https://github.com/project-chip/connectedhomeip.git为BL602 / BL702 / BL702L检出BL_IOT_SDK子模块./scripts/checkout_submodules.py --shallow --recursive --platform bouffalolab为BL61X检出bouffalo_sdk子模块./scripts/checkout_submodules.py --shallow --recursive --platform bouffalo_sdk若还需要 Matter Linux 示例与开发工具如 chip-tool在平台参数中追加linux./scripts/checkout_submodules.py --shallow --recursive --platform linux bouffalolab若使用 macOS 开发机则追加darwin./scripts/checkout_submodules.py --shallow --recursive --platform darwin bouffalolab这些命令都由 scripts/checkout_submodules.py 驱动--shallow仅做浅克隆以节省空间--recursive递归处理嵌套子模块。二、搭建构建环境Setup build environment2.1 基础构建软件先按 docs/guides/BUILDING.md 的 Prerequisites 章节安装构建所需的基础软件Python、git、ninja、GN 等。2.2 安装 Bouffalo Lab SoC 工具链进入克隆好的 Matter 项目根目录运行文档指定的安装脚本./integrations/docker/images/stage-2/chip-build-bouffalolab/setup.sh该脚本要求交互选择 SDK 安装路径安装完成后必须先导出BOUFFALOLAB_SDK_ROOT环境变量再构建export BOUFFALOLAB_SDK_ROOTYour install path环境变量要求不是文档口头约定构建器 scripts/build/builders/bouffalolab.py 在 GN 参数生成阶段会显式读取BOUFFALOLAB_SDK_ROOT缺失时会直接报错并提示执行上述setup.sh与export命令。2.3 激活 Matter 构建环境在项目根目录执行source scripts/activate.sh -p bouffalolab更多细节可参考 scripts/bootstrap.sh 与 scripts/activate.sh。该命令会设置平台相关的默认变量包括 RISC-V 工具链后续所有build_examples.py或make构建都应在此环境内进行。三、构建体系两套 SDK两条构建路径Bouffalo Lab 平台的 Matter 示例按 SDK 家族采用不同构建系统原文档核心结论务必先建立这一心智模型SDK 集成平台构建系统推荐构建入口bouffalo_sdk MatterBL61X如 BL616/BL618bouffalo_sdk的 CMake 构建系统Matter 集成进 SDK 应用工程示例目录下的 CMake/MakefileBL_IOT_SDK MatterBL602、BL702/BL702LMatter ninja 构建系统scripts/build/build_examples.py从源码结构可以印证这一划分scripts/build/builders/bouffalolab.py 中的工厂函数BouffalolabBuilder对module_type in (BL616, BL616CL)显式返回 CMake 混合构建器BouffalolabBflbBuilder其余芯片走 GN/ninja 构建器_BouffalolabGnBuilder。对 BL61X 目标build_examples.py保持兼容——它内部调度到同一套 CMake 构建再把产物导出到标准 Matter 输出目录out/target。BL_IOT_SDK路径的构建则完全由build_examples.py驱动脚本生成 Matter 构建配置并执行 ninja 构建。在source scripts/activate.sh -p bouffalolab环境下用下面命令列出全部支持的目标./scripts/build/build_examples.py targets输出中bouffalolab开头的目标形如bouffalolab-{bl602-night-light,bl602dk,bl616cl,bl616dk,bl704ldk,bl706-night-light,bl706dk}-{contact-sensor,light}-{ethernet,thread,thread-ftd,thread-mtd,wifi}-{easyflash,littlefs}[-cdc][-coredump][-memmonitor][-mfd][-rotating_device_id][-rpc][-shell]3.1 目标参数逐项解读板级选项四选一为主流开发板另有两个夜灯形态-bl602dk、-bl616dk、-bl616cl、-bl704ldk、-bl706dk-bl602-night-light、-bl706-night-light示例应用选项-light照明应用-contact-sensor接触传感器应用。可用性依赖板级/连接方式——BL61X 支持 Wi-Fi 接触传感器构建BL704L 支持 Thread MTD 低功耗接触传感器构建。这一点同样体现在构建器源码中BL616 的 bflb 构建仅允许 Wi-Fi见 scripts/build/builders/bouffalolab.py。连接方式选项每次构建只允许启用一个-wifiWi-Fi-ethernet以太网-thread/-thread-ftdThread FTD全功能线程设备-thread-mtdThread MTD最小线程设备存储后端选项二选一-littlefs使用 littlefs 访问 Flash-easyflash使用 easyflash 访问 Flash注意原文档强调littlefs与easyflash使用不同的存储格式互不兼容。若现场已有设备以easyflash部署必须继续使用-easyflash否则既有设备的 NVS 数据不可读。此外BL61X 的bouffalo_sdk构建只支持littlefs不要对 BL61X 的build_examples.py目标使用-easyflash。源码中该限制是硬性校验BL616 传入 easyflash 会直接抛出BL616 bflb build does not support easyflash; use -littlefs instead.scripts/build/builders/bouffalolab.py。可选功能开关-rotating_device_id启用轮换设备 ID-mfd启用 Matter 工厂数据特性从MFD分区加载出厂数据详见 Bouffalo Lab Matter 工厂数据指南-shell启用命令行 shell-rpc启用 Pigweed RPC 特性此时 RPC 通道使用 115200 波特率-cdc启用 USB CDC仅 BL706 支持且不能与以太网板同时使用。源码约束一致非 BL702 芯片启用 CDC 会报SoC ... does NOT support USB CDCBL702 同时启用 CDC 与以太网会报can NOT have both of USB CDC and Ethernet functions together.CDC 与 RPC 同时启用也会因端口冲突被拒绝scripts/build/builders/bouffalolab.py。日志波特率Bouffalo Lab Matter 工程默认使用2000000波特率的 UART 输出日志。这一默认值定义在构建器参数baudrate2000000中scripts/build/builders/bouffalolab.py对应 GN 参数baudrate。若BL_IOT_SDK的 ninja 构建需要其他波特率修改示例项目BUILD.gn下的baudrate变量即可BL61X 的 CMake 构建则通过示例所用的bouffalo_sdk配置调整 UART 波特率。四、BL61XCMake 构建产品开发推荐方式BL61X 的bouffalo_sdk Matter 构建通过 Makefile 封装 CMake 流程。由于该方式直接遵循 SDK 的工程布局与配置模型产品侧应用开发推荐用它。先激活环境source scripts/activate.sh -p bouffalolab4.1 照明应用lighting-app构建命令命令说明make -C examples/lighting-app/bouffalolab CONFIG_WIFIyWi-Fi默认make -C examples/lighting-app/bouffalolab CONFIG_THREADyThread / OpenThreadmake -C examples/lighting-app/bouffalolab CONFIG_THREADy CONFIG_OT_FTD0 CONFIG_OT_MTD1Thread MTDmake -C examples/lighting-app/bouffalolab CONFIG_ETHERNETy以太网make -C examples/lighting-app/bouffalolab CONFIG_WIFIy CONFIG_SHELLyWi-Fi shell4.2 接触传感器应用仅 Wi-Fi命令说明make -C examples/contact-sensor-app/bouffalolab默认 Wi-Fi 构建4.3 可选特性开关两个应用通用开关默认值说明CONFIG_MFDy/ny启用工厂/制造数据CONFIG_CHIP_ROTATING_DEVICE_IDy/nn启用轮换设备 IDCONFIG_CHIP_HEAP_MONITORy/nn启用堆监控CONFIG_COREDUMPy/nn启用 SDKcoredump抓取CONFIG_SHELLy/nn启用 Matter 交互式 shell4.4 Thread 专用开关仅 lighting-app开关默认值说明CONFIG_OT_FTD1/01启用/禁用 Thread FTD 模式CONFIG_OT_MTD1/00启用/禁用 Thread MTD 模式4.5 板级选择开关默认值说明CHIPchipbl616BL61X 芯片名如bl616或bl616clBOARDboard${CHIP}dkSDK 板名如bl616dk或bl616cldk以上默认值可在 Makefile 源码中直接对照examples/lighting-app/bouffalolab/Makefile 定义了CHIP ? bl616、BOARD ? ${CHIP}dk以及CONFIG_OT_FTD ? 1、CONFIG_MFD ? y等默认值若三个网络接口全部未指定Makefile 会默认启用CONFIG_WIFIyL23-L29否则报错要求至少启用一个。4.6 清理、重建与带 MFD 烧录make -C examples/app/bouffalolab clean make -C examples/app/bouffalolab CONFIG_WIFIy带工厂数据文件烧录make -C examples/app/bouffalolab CONFIG_WIFIy flash MFD_FILE/path/to/mfd.bin从源码看MFD_FILE机制在 Makefile 中实现它会校验文件存在基于flash_prog_cfg.ini生成临时配置并在末尾追加[MFD]分区写入段然后执行 SDK 烧录命令烧录映射本身由 examples/lighting-app/bouffalolab/flash_prog_cfg.ini 定义boot2 位于 0x000000、分区表位于 0xE000 等。原文档结论BL61X 的 CMake 构建是产品开发的首选构建方式build_examples.py与 BL61X 兼容内部调度的正是同一套 CMake/Makefile 构建。完整构建选项请查阅示例目录下的Makefileexamples/app/bouffalolab/Makefile。五、使用 build_examples.py 构建build_examples.py对 Bouffalo Lab 平台仍然受支持BL61X 目标会调用同一 CMake/Makefile 构建并把固件与烧录脚本放到标准输出目录out/targetBL_IOT_SDK目标则由它驱动 Matter ninja 构建。以照明应用 littlefs为例覆盖各板型的典型构建命令BL602DK Wi-Fi./scripts/build/build_examples.py --target bouffalolab-bl602dk-light-wifi-littlefs buildBL616DK Wi-Fi./scripts/build/build_examples.py --target bouffalolab-bl616dk-light-wifi-littlefs build产品开发推荐构建make -C examples/lighting-app/bouffalolab CONFIG_WIFIyBL616 Thread./scripts/build/build_examples.py --target bouffalolab-bl616dk-light-thread-littlefs build产品开发推荐构建make -C examples/lighting-app/bouffalolab CONFIG_THREADyBL616 以太网./scripts/build/build_examples.py --target bouffalolab-bl616dk-light-ethernet-littlefs build产品开发推荐构建make -C examples/lighting-app/bouffalolab CONFIG_ETHERNETyBL616 接触传感器 Wi-Fi./scripts/build/build_examples.py --target bouffalolab-bl616dk-contact-sensor-wifi-littlefs build产品开发推荐构建make -C examples/contact-sensor-app/bouffalolabBL704L Thread./scripts/build/build_examples.py --target bouffalolab-bl704ldk-light-thread-littlefs buildBL706 Thread./scripts/build/build_examples.py --target bouffalolab-bl706dk-light-thread-littlefs buildBL706 以太网./scripts/build/build_examples.py --target bouffalolab-bl706dk-light-ethernet-littlefs buildBL706 Wi-Fi./scripts/build/build_examples.py --target bouffalolab-bl706dk-light-wifi-littlefs build该 BL706 BL602 的 Wi-Fi 方案中BL602 负责 WLAN 部分BL706 运行 TCP/IP 协议栈两者通过 SPI 通信。构建产物方面GN 路径输出chip-chip-app-example.{bin,elf}等文件由 scripts/build/builders/bouffalolab.py 的build_outputs声明BL61X 的 CMake 路径则在构建后把 SDK 产物软链接为同名 GN 风格文件并生成.flash.py烧录脚本_post_buildL584-L642因此无论哪条路径out/target目录下的文件布局都保持一致。六、Flash 分区表Partition tableBouffalo Lab 为每个平台在examples/platform/bouffalolab/platforms/flash_config下提供参考分区表文件当前仓库中实际存在examples/platform/bouffalolab/bl602/flash_config/partition_cfg_4M.tomlBL6024M Flashexamples/platform/bouffalolab/bflb/flash_config/partition_cfg_4M.tomlBL61X/bflb4M Flashexamples/platform/bouffalolab/bl702l/flash_config/partition_cfg_2M.tomlBL702L2M Flash以及bl702/flash_config下的对应文件量产产品可能有不同的 Flash 布局需求例如固件体积要求带或不带压缩镜像的 OTA 升级支持支持更多 Matter Fabric自定义应用分区其他特定需求。开发者应根据量产需求自行设计 Flash 布局可参考 flash 工具文档或联系 Bouffalo Lab 获取支持。注意分区表通常无法通过 OTA 修改。请在初始设计中预留足够余量以适应未来需求。七、固件下载Download image以构建目标bouffalolab-bl602dk-light-wifi-littlefs为例。编译完成后./out/bouffalolab-bl602dk-light-wifi-littlefs/目录下会生成 Python 烧录脚本chip-bl602-lighting-example.flash.py用于把镜像下载到 Bouffalo Lab SoC。步骤如下用 USB 线把开发板连接到构建机将 SoC 置入下载模式按住BOOT键不放点击RESET或EN键松开BOOT键。执行烧录命令串口按实际设备调整这里以/dev/ttyACM0为例./out/bouffalolab-bl602dk-light-wifi-littlefs/chip-bl602-lighting-example.flash.py --port /dev/ttyACM0若需要整片擦除后下载追加--erase./out/bouffalolab-bl602dk-light-wifi-littlefs/chip-bl602-lighting-example.flash.py --port /dev/ttyACM0 --erase建议BL602 开发板首次烧录时最好追加--erase选项。用2000000 波特率打开串口控制台/dev/ttyACM0。此时点击RESET/EN键即可看到启动日志。补充一点从源码可确认的细节build_examples.py构建完成后构建器还会自动调用 scripts/tools/bouffalolab/bouffalolab_ota_image.py 生成 Matter OTA 镜像可用环境变量BOUFFALOLAB_AUTO_OTA0关闭并提示如何用.flash.py --build-ota生成/签名 OTA 包scripts/build/builders/bouffalolab.py。八、用 chip-tool 测试配网与控制Commission and Control构建与使用方法参见 chip-tool 构建指南先构建出 Linux 版 chip-tool输出于./out/linux-x64-chip-tool/。8.1 Thread 前置条件配置 Thread 边界路由器Thread 协议可运行于 BL704L/BL706/BL616需要一个 Thread 边界路由器把 Thread 网络桥接到 Wi-Fi/以太网。可按照 树莓派边界路由器指南 搭建。边界路由器就绪后在其上执行以下命令获取 Thread 网络凭据Active Operational Datasetsudo ot-ctl dataset active -x8.2 通过 BLE 配网先复位开发板或恢复出厂设置然后进入 chip-tool 输出目录执行对应命令Wi-Fi 设备./out/linux-x64-chip-tool/chip-tool pairing ble-wifi device_node_id wifi_ssid wifi_passwd 20202021 3840Thread 设备./out/linux-x64-chip-tool/chip-tool pairing ble-thread device_node_id hex:thread_operational_dataset 20202021 3840以太网设备走 On-Network 配网./out/linux-x64-chip-tool/chip-tool pairing onnetwork device_node_id 20202021参数说明device_node_id为 chip-tool 分配给设备的节点 IDwifi_ssid/wifi_passwd为 Wi-Fi 名称与密码thread_operational_dataset为在边界路由器上运行sudo ot-ctl dataset active -x得到的 Thread 网络凭据。配网成功后读取一条集群属性验证链路./out/linux-x64-chip-tool/chip-tool basicinformation read vendor-name device_node_id 0照明应用还可按 examples/lighting-app/bouffalolab/README.md 中的说明进行 OnOff/LevelControl/ColorControl/Identify 集群控制例如切换 LED./out/linux-x64-chip-tool/chip-tool onoff toggle device_node_id 1九、延伸阅读与相关资源构建前置条件docs/guides/BUILDING.md工厂数据MFD指南docs/platforms/bouffalolab/matter_factory_data.md平台概览 / OTA 升级 / RPC 控制台docs/platforms/bouffalolab/index.md、ota_upgrade.md、rpc_console.md照明示例含各芯片 GPIO 映射、Wi-Fi/Thread/Ethernet 接线与 chip-tool 集群控制命令examples/lighting-app/bouffalolab/README.md接触传感器示例examples/contact-sensor-app/bouffalolab/平台构建参数定义RISC-V 工具链riscv_gccconfig/bouffalolab/args.gni构建器实现两套 SDK 的构建分发逻辑scripts/build/builders/bouffalolab.py【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考