Matter Telink All Clusters Minimal 示例:基于 Zephyr 的 B91/B92/W91 构建、烧录、配网与 OTA 实战指南
Matter Telink All Clusters Minimal 示例基于 Zephyr 的 B91/B92/W91 构建、烧录、配网与 OTA 实战指南【免费下载链接】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本文是 MatterConnected Home over IP现由 Connectivity Standards Alliance 维护开源 SDK 中Telink 平台的 All Clusters Minimal 示例应用的完整技术指南。该示例在三个端点上实现了多种 ZCL 集群是开发者基于 Telink TLSR 系列 SoC 打造自有 Matter 设备的最佳参考起点。读完本文你将掌握在 Docker 构建环境下用west为 Telink 开发板编译并烧录固件、通过 UART 与按键进行调试与工厂复位、使用 chip-tool 通过 BLE Thread 完成配网以及用 Linux OTA Provider 为设备实现完整的 OTA 固件升级链路。示例应用概述Matter Telink All Clusters Minimal 示例应用源码位于 examples/all-clusters-minimal-app/telink在一个设备上填充了多个ZCLZigbee Cluster Library集群这些集群分布在三个端点上。其定位是最小化但覆盖广相比完整的 all-clusters-app它保留了多集群覆盖能力同时裁剪掉非核心逻辑便于作为创建自有应用的模板。从构建脚本 CMakeLists.txt 可以看到该示例的组成结构数据模型由chip_configure_data_model基于 ZAP 文件 all-clusters-minimal-app.zap 生成同时依赖src/app/chip_data_model.cmake接入 SDK 的数据模型构建流程平台公共逻辑复用了examples/platform/telink下的common.cmake包括mainCommon.cpp、AppTaskCommon.cpp、LEDManager、PWMManager、ButtonManager、ThreadUtil以及zephyr_ext下的按键/灯池/PWM/WS2812 等 Zephyr 适配层示例特有逻辑集中在 src/AppTask.cpp初始化时调用InitBindingHandlers()配置绑定binding能力并注册StaticSupportedModesManager为ModeSelect 集群提供静态支持的运行模式管理。示例的 Kconfig 入口在 Kconfig它通过rsource引入config/telink/chip-module/Kconfig.defaults中的平台公共默认配置再叠加本示例自身的配置。支持设备与构建目标该示例支持 Telink 的 B91、B92、W91 三个系列开发板每个板卡对应一个或多个 Zephyrwest build -b构建目标板卡 / SoC构建目标说明B91TLSR9518ADK80DTLSR951x 系列tlsr9518adk80d、tlsr9518adk80d-mars、tlsr9518adk80d-usbB91 通用入门套件本示例的按键/串口章节默认针对该板B92TLSR9528ATLSR952x 系列tlsr9528a、tlsr9528a_retention支持 retention 变体W91TLSR9118BDK40DTLSR911x 系列tlsr9118bdk40dWi-Fi/Thread 融合系列构建时用-b build_target指定上述任一目标即可。若使用 B91可重点参考本文使用指南一节的 UART、按键与 LED 说明因为这些外设映射是以tlsr9518adk80d为基准给出的。环境准备Docker 构建容器与激活脚本Telink 示例基于Zephyr RTOS构建官方推荐在 Docker 容器中完成以规避本地 Zephyr 工具链版本不一致的问题。启动构建容器推荐方式镜像版本从 CI 工作流中自动解析$ docker run -it --rm -v $PWD:/host -w /host ghcr.io/project-chip/chip-build-telink:$(wget -q -O - https://raw.githubusercontent.com/project-chip/connectedhomeip/master/.github/workflows/examples-telink.yaml 2 /dev/null | grep chip-build-telink | awk -F: {print $NF} | head -n1)该命令会拉取当前仓库 CI 所引用的chip-build-telink镜像标签并挂载当前目录。仓库内的对应证据默认容器内置的推荐 Zephyr 版本由 integrations/docker/images/stage-2/chip-build-telink/Dockerfile 定义兼容的 Docker 镜像版本在 .github/workflows/examples-telink.yaml 中声明。激活构建环境$ source ./scripts/activate.sh -p all,telink-p参数指定需要激活的平台包集合all,telink表示激活全部基础依赖并加入 Telink 平台支持脚本位于 scripts/activate.sh。构建与烧录构建固件在容器内、仓库根目录下执行west build$ west build -b build_target其中build_target替换为上文支持设备与构建目标表中的板卡名称如tlsr9518adk80d。关于 Flash 大小的关键参数-DFLASH_SIZE默认按 2 MB 布局构建。若你的板载 Flash 不是 2 MB必须显式指定例如$ west build -b build_target -- -DFLASH_SIZE1m $ west build -b build_target -- -DFLASH_SIZE4m注意-DFLASH_SIZE需要放在--之后作为传给底层构建系统的额外 CMake 参数。构建完成后目标固件位于build/zephyr/zephyr.bin。烧录固件通过 J-Link 等调试器烧录--erase会先擦除目标 Flash确保干净启动$ west flash --erase源码级视角prj.conf 关键配置解读示例的工程配置在 examples/all-clusters-minimal-app/telink/prj.conf它只保留本示例特有的配置公共项由平台Kconfig.defaults兜底。理解这些开关对修改自有应用至关重要配置项值含义CONFIG_CHIPy启用 MatterCHIP核心CONFIG_STD_CPP20y启用 C20 标准构建脚本中通过 enable-gnu-std.cmake 配合CONFIG_GPIOy启用 GPIO支撑按键与 LEDCONFIG_CHIP_DEVICE_PRODUCT_ID327690x8001本示例的 Matter 产品 IDall-clusters-minimal-app 专用 PIDCONFIG_BT_DEVICE_NAMETelinkMinAppBLE 广播的设备名称配网时可在扫描结果中识别CONFIG_CHIP_OTA_REQUESTORn默认关闭 OTA 请求端功能下文 OTA 章节需改为yCONFIG_CHIP_DEVICE_SOFTWARE_VERSION1设备软件版本号OTA 测试时需要比镜像版本低CONFIG_CHIP_LIB_SHELLn关闭 CHIP Shell减少 Flash 占用CONFIG_CHIP_FACTORY_DATA等n关闭工厂数据支持及相关 CD 存储CONFIG_PMn关闭电源管理其中CONFIG_BT_DEVICE_NAME是配网排查时最容易用到的项如果手机或 chip-tool 扫描不到设备首先确认该名称是否正常出现在 BLE 扫描结果中。使用指南UART、按键与 LEDUART 串口输出将串口连接到以下引脚即可查看设备日志以tlsr9518adk80d为基准名称引脚RXPB3J34 连接器第 17 脚TXPB2J34 连接器第 16 脚GNDGND波特率115200 bits/s。日志模块在 AppTask.cpp 中声明为LOG_MODULE_DECLARE(app, CONFIG_CHIP_APP_LOG_LEVEL)日志级别跟随 Kconfig 的CONFIG_CHIP_APP_LOG_LEVEL。按键功能tlsr9518adk80d名称功能说明Button 1恢复出厂设置忘记已配网的 Thread 网络并回到未配网状态触发方式连续按下 3 次Button 2未使用—Button 3未使用—Button 4打开配网窗口触发 BLE 配网窗口供配网器执行基于 BLE 的 commissioning按键的底层映射与去抖逻辑由examples/platform/telink/util/src/ButtonManager.cpp及zephyr_ext/zephyr_key_pool.c、zephyr_key_matrix.c实现具体 GPIO 引脚定义以板级设备树为准。LEDThread 网络状态指示红色 LED用于指示 Thread 网络当前状态其闪烁模式与状态的对应关系状态说明短脉冲闪烁设备未配网到 ThreadThread 功能关闭频繁脉冲闪烁设备已配网Thread 已启用正在尝试JOINThread 网络宽间隔脉冲闪烁设备已成功加入 Thread 网络并成为CHILD节点LED 驱动位于examples/platform/telink/util/src/LEDManager.cpp支持 PWM 与 WS2812 等灯池扩展见zephyr_ext/zephyr_led_pool.c、zephyr_ws2812.c。实际接线时需将 LED 与对应 GPIO 正确连接否则状态不可见。使用 chip-tool 配网配网commissioning是让 Matter 设备加入网络的第一步。官方推荐使用 chip-tool 作为配网器controller。先构建 chip-tool CLI构建方法详见 examples/chip-tool/README.md典型方式是通过scripts/examples/gn_build_example.sh examples/chip-tool/linux out/chip-tool一类 GN 构建脚本生成可执行文件。通过BLE Thread方式配网${CHIP_TOOL_DIR}/chip-tool pairing ble-thread ${NODE_ID} hex:${DATASET} ${PIN_CODE} ${DISCRIMINATOR}参数含义${NODE_ID}为该设备分配 Matter 节点 ID${DATASET}Thread 网络的 Active Operational Dataset以hex:前缀传入十六进制字符串${PIN_CODE}设备的配网 PIN如20202021${DISCRIMINATOR}BLE 配网判别器如3840。完整示例./chip-tool pairing ble-thread 1234 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd61f77bd3df233e051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f010212340410445f2b5ca6f2a93a55ce570a70efeecb0c0402a0fff8 20202021 3840执行成功后设备将获得 Thread 网络凭据并开始入网流程此时可通过上文LED一节观察设备从尝试 JOIN到成为 CHILD的状态迁移。通过 Linux OTA Provider 实现 OTA 升级OTAOver-The-Air升级是量产设备的关键能力。本示例默认未启用OTACONFIG_CHIP_OTA_REQUESTORn见 prj.conf只有 ota-requestor-app 示例默认开启。如需为本示例或其他 Telink 示例启用 OTA在对应prj.conf中设置CONFIG_CHIP_OTA_REQUESTORy重新构建后会生成两类二进制文件merged.bin烧录到 PCB 的主固件至少需要 2 MB Flashmatter.ota提供给 OTA Provider 的升级镜像。版本号约束以上两个文件具有相同的 SW 版本。要实际测试 OTA 流程matter.ota的软件版本必须高于设备当前运行的版本。在prj.conf中把基础版本设为较低值即可例如CONFIG_CHIP_DEVICE_SOFTWARE_VERSION2即设备基础固件用1OTA 镜像用2以此制造版本差。OTA 完整操作流程构建 Linux OTA Provider源码在 examples/ota-provider-app/linux./scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/ota-provider-app chip_config_network_layer_blefalse这里通过chip_config_network_layer_blefalse关闭 BLE 网络层OTA Provider 仅走 IPon-network配网。运行 OTA Provider 并指定升级镜像./chip-ota-provider-app -f matter.ota使用 chip-tool 配网 OTA Provideron-network 方式走 WiFi/Ethernet 直连./chip-tool pairing onnetwork ${OTA_PROVIDER_NODE_ID} 20202021其中${OTA_PROVIDER_NODE_ID}是 Linux OTA Provider 的节点 ID。配置 ACL允许设备访问 OTA Provider./chip-tool accesscontrol write acl [{fabricIndex: 1, privilege: 5, authMode: 2, subjects: [112233], targets: null}, {fabricIndex: 1, privilege: 3, authMode: 2, subjects: null, targets: null}] ${OTA_PROVIDER_NODE_ID} 0其中${OTA_PROVIDER_NODE_ID}同上。第一条 ACL 条目授予管理权限privilege 5给主体 112233第二条授予操作权限privilege 3给所有主体targets: null表示不限集群与端点。通知设备开始 OTA由 OTA Requestor 发起公告触发下载./chip-tool otasoftwareupdaterequestor announce-otaprovider ${OTA_PROVIDER_NODE_ID} 0 0 0 ${DEVICE_NODE_ID} 0参数说明${OTA_PROVIDER_NODE_ID}Linux OTA Provider 的节点 ID${DEVICE_NODE_ID}已配网的目标设备Telink 设备的节点 ID其余数字为 announce-otaprovider 命令所需的 provider endpoint、fabric index 等参数。传输完成后OTA Requestor 会向 OTA Provider 发送ApplyUpdateRequest命令请求应用新镜像设备在成功应用 OTA 镜像后会自动重启。至此整个构建镜像 → 托管 Provider → 配网 → ACL 授权 → 公告下载 → 应用重启的 OTA 闭环完成。小结Matter Telink All Clusters Minimal 示例是通往 Telink 平台 Matter 开发的最小完整闭环三个端点的 ZCL 集群覆盖了从数据模型生成ZAP → CMake到应用任务初始化绑定、ModeSelect 静态模式管理的完整范式prj.conf中的 PID、BLE 设备名、OTA 与版本号等开关则直接决定设备的可配网性与可升级性。建议开发者在构建自有应用时以本示例为起点复制目录保留 CMakeLists.txt 的 ZAP 驱动结构按实际硬件调整prj.confFlash 大小、PID、设备名量产前务必验证 OTA 链路并按本文流程用 Linux OTA Provider 做一次端到端升级测试。【免费下载链接】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),仅供参考

相关新闻

ControlNet 自动标注实战指南:用 gradio_annotator.py 一键生成六大条件控制图

ControlNet 自动标注实战指南:用 gradio_annotator.py 一键生成六大条件控制图

ControlNet 自动标注实战指南:用 gradio_annotator.py 一键生成六大条件控制图 【免费下载链接】ControlNet Let us control diffusion models! 项目地址: https://gitcode.com/gh_mirrors/co/ControlNet 本指南围绕 ControlNet 仓库中的 docs/annotator.md …

2026/9/19 6:31:55 阅读更多 →
Wand-Enhancer 上手指南:给 WeMod 打 5 个本地补丁,解锁远程面板与 DevTools

Wand-Enhancer 上手指南:给 WeMod 打 5 个本地补丁,解锁远程面板与 DevTools

Wand-Enhancer 上手指南:给 WeMod 打 5 个本地补丁,解锁远程面板与 DevTools 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer …

2026/9/19 6:31:55 阅读更多 →
Julia 与编译器对话:深入解析 `:meta` 表达式机制与元数据驱动优化

Julia 与编译器对话:深入解析 `:meta` 表达式机制与元数据驱动优化

Julia 与编译器对话:深入解析 :meta 表达式机制与元数据驱动优化 【免费下载链接】julia The Julia Programming Language 项目地址: https://gitcode.com/gh_mirrors/ju/julia 导读 inline、noinline、nospecialize 这些宏背后究竟发生了什么?它…

2026/9/19 6:31:55 阅读更多 →

最新新闻

Turborepo 二进制入口深度解析:从 `turbo` crate 的薄封装看 Rust 迁移架构

Turborepo 二进制入口深度解析:从 `turbo` crate 的薄封装看 Rust 迁移架构

Turborepo 二进制入口深度解析:从 turbo crate 的薄封装看 Rust 迁移架构 【免费下载链接】turbo Build system optimized for JavaScript and TypeScript, written in Rust 项目地址: https://gitcode.com/gh_mirrors/tu/turbo 本篇文章以仓库中 crates/tur…

2026/9/19 7:16:14 阅读更多 →
STM32CubeMX+FreeRTOS实战:从零搭建LED闪烁任务

STM32CubeMX+FreeRTOS实战:从零搭建LED闪烁任务

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 7:16:14 阅读更多 →
ESP32音频abort残留问题:解码器状态重置与DMA清空实战

ESP32音频abort残留问题:解码器状态重置与DMA清空实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 7:16:14 阅读更多 →
BrewUI 评测:给 Homebrew 一个图形界面,轻松管理 Mac 软件包

BrewUI 评测:给 Homebrew 一个图形界面,轻松管理 Mac 软件包

1. 项目概述:BrewUI 是什么,以及我为什么盯上它用 Mac 做开发的人基本都躲不开 Homebrew。从装 Node、Python 这种运行时,到开个 wget、tmux 之类的小工具,我每天都要跟它打交道。但说实话,Homebrew 这个包管理器非常强…

2026/9/19 7:16:14 阅读更多 →
Chromium历史版本离线安装包下载与部署全攻略

Chromium历史版本离线安装包下载与部署全攻略

1. 为什么需要 Chromium 历史版本离线安装包做前端自动化、浏览器兼容性测试或者 Electron 桌面应用开发的朋友,大概率都遇到过这样的场景:某个线上问题只在特定版本的 Chromium 内核上复现,新版本浏览器早就修掉了;或者公司内网环…

2026/9/19 7:16:14 阅读更多 →
Civitai Orchestrator 工作流查询统一化:从双端点走向类型感知的单一路由

Civitai Orchestrator 工作流查询统一化:从双端点走向类型感知的单一路由

Civitai Orchestrator 工作流查询统一化:从双端点走向类型感知的单一路由 【免费下载链接】civitai A repository of models, textual inversions, and more 项目地址: https://gitcode.com/GitHub_Trending/ci/civitai 导读 本文围绕 Civitai 主站&#xf…

2026/9/19 7:15:14 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →