新闻详情

新闻详情

首页 / 资讯中心 / 详情

Flipper Zero 固件仓库中的 OpenThread:Thread 1.3 网状网络协议栈源码指南

发布时间:2026/9/15 1:14:17来源:尧图网络
Flipper Zero 固件仓库中的 OpenThread:Thread 1.3 网状网络协议栈源码指南
Flipper Zero 固件仓库中的 OpenThreadThread 1.3 网状网络协议栈源码指南【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware本篇技术指南以 lib/stm32wb_copro/wpan/thread/openthread/stack/README.md 为骨架结合该仓库内嵌的 STM32WB 无线协处理器Coprocessor中间件源码系统讲解 OpenThread 的本质定位、Thread 协议分层、平台可移植性设计、设备角色与边界路由能力以及 OpenThread 在 STM32WB 平台上的配置方式。读完本文你将掌握 OpenThread 与 Thread 协议的关系、如何在该仓库中找到协议栈的各个实现模块、如何阅读 STM32WB 定制配置以及如何从零开始进一步研究这套被广泛用于智能家居 Mesh 组网的协议栈源码。OpenThread 是什么README 给出的定位仓库内嵌的 OpenThread README 给出了三个精确定位这也是理解整份源码的出发点它是 Thread 网络协议的开源实现。OpenThread 由 Google Nest 发布目的是把 Nest 产品中使用的 Thread 技术开放给开发者加速智能家居connected home产品的研发。它操作系统与平台无关。OpenThread 通过一层很窄的平台抽象层platform abstraction layer实现高度可移植内存占用小同时支持 SoC片上系统与 NCP网络协处理器两种设计形态。它是 Thread 认证组件Thread Certified Component。按 README 所述OpenThread 实现了 Thread 1.3.0 规范 定义的全部特性包括完整的 Thread 网络层次IPv6、6LoWPAN、带 MAC 安全的 IEEE 802.15.4、Mesh Link Establishment、Mesh 路由与设备角色并且支持 Border Router边界路由器能力。注意Thread 是 Thread Group, Inc. 的注册商标更多 Thread 规范细节由 threadgroup.org 提供。谁是 OpenThread 的生态支持者README 列出了一长串参与和支持 OpenThread 的厂商覆盖芯片、云平台、操作系统等环节包括Amazon、ARM、Cascoda、Eero、Espressif、Google、Infineon、MMB Networks、Nabu Casa、Nanoleaf、Nordic、NXP、Qorvo、Qualcomm、Samsung、Silicon Labs、STMicroelectronics、Synopsys、Telink Semiconductor、Texas Instruments 以及 Zephyr Project 等。这份名单从侧面印证了 OpenThread 作为跨厂商、跨平台的 Thread 协议栈参考实现的生态地位。定位 OpenThread 在当前仓库中的位置在 Flipper Zero 固件仓库中OpenThread 并不是独立的一等公民而是作为 STM32WB 无线协处理器中间件ST STM32_WPAN middleware的一部分随仓库分发。完整的中间件位于 lib/stm32wb_copro/wpan其中按协议划分了若干子模块ble/、ble_lld/低功耗蓝牙栈mac_802_15_4/IEEE 802.15.4 MAC 层thread/OpenThread 线程协议栈zigbee/Zigbee 协议栈interface/应用与各协议栈之间的传输层接口例如 interface/patterns/ble_thread/tl/tl_thread_hci.h 定义了 Thread 的 HCI 接口。其中thread/openthread/目录又分为stack与core两大部分这个划分直接决定了它们的许可协议详见下文版本与许可一节stackOpenThread 协议栈本体即本文的关联文档所在目录包含 OpenThread 提供的全部 API 与实现源码以 BSD 3-Clause 许可发布coreST 编写的、用于从应用层控制 OpenThread 栈的封装层wrapper按 ST SLA0044 许可发布。从源码看 Thread 协议的分层实现README 明确指出 OpenThread 实现了 Thread 1.3.0 规范中的全部网络层次IPv6、6LoWPAN、IEEE 802.15.4含 MAC 安全、Mesh Link EstablishmentMLE与 Mesh 路由。这些层次在stack的源码目录中都能找到一一对应的实现模块目录见 lib/stm32wb_copro/wpan/thread/openthread/stack/src/core协议层次对应源码目录主要职责IPv6 / 6LoWPAN 与传输net/IPv6 报文、ICMPv6、UDP/TCP、6LoWPAN 压缩适配低功耗有损网络协议底层依赖 IEEE 802.15.4IEEE 802.15.4 与 MAC 安全mac/、radio/802.15.4 链路层、帧收发、MAC 安全与多射频multi-radio支持Mesh Link Establishmentthread/MLE 邻居发现与链路建立、Mesh 转发mesh_forwarder、父/子parent/child关系、路由Mesh 路由与网络数据thread/、netdata相关 APIThread 网络数据Network Data分发、Leader/路由器角色、路由选择组网配置与配网meshcop/Thread Commissioning配网、Operational Dataset、Joiner/Commissioner 相关逻辑其中thread/目录下包含近 90 个源文件是栈中体量最大的模块涵盖 MLE、路由、网络诊断network_diagnostic、网络时间同步、Channel Manager/Monitor、Child Supervision、Jam Detection干扰检测等 Thread 特有机制meshcop/目录对应 Thread 的配网协议基于 CoAP 的 Mesh Commissioning Protocol是设备入网流程的核心。除了核心协议栈仓库还内嵌了若干依赖库例如stack/third_party/mbedtls用于 DTLS/CoAP Secure 与加密原语stack/third_party/tcplp一个轻量级 TCP 实现为需要 TCP 的应用提供服务src/lib/spinel与src/lib/hdlcNCP 模式下与主机通信的 Spinel 协议与 HDLC 封装。从源码结构看这套栈并非把 Thread 做成单一巨型模块而是按协议分层组织成mac、net、thread、meshcop、coap、crypto、border_router、backbone_router等独立目录方便按需裁剪与移植。平台无关性窄抽象层与 SoC/NCP 两种形态README 强调 OpenThread OS and platform agnostic其实现方式在仓库中有清晰体现。平台抽象 API所有平台相关能力都被收敛到 stack/include/openthread/platform 目录下的一组头文件中例如alarm-micro.h/alarm-milli.h微秒/毫秒定时器抽象radio.h802.15.4 射频抽象settings.h/flash.h非易失存储与 Flash 抽象entropy.h/crypto.h熵源与加密原语抽象logging.h/debug_uart.h日志与调试串口memory.h/messagepool.h内存与消息池spi-slave.h、dso_transport.h、trel.h等各类传输与链路扩展。平台移植方只需按这些头文件的接口契约实现对应函数即可把整棵协议栈搬到新的芯片或 RTOS 上。系统集成接口stack/examples/platforms/openthread-system.h 定义了应用/RTOS 与平台驱动之间的协作接口包括otSysInit(argc, argv)平台驱动初始化注意不是由 OpenThread 库调用而是由系统/RTOS 在合适时机调用otSysProcessDrivers(aInstance)主循环中轮询平台驱动事件otSysEventSignalPending()平台驱动需要处理时向事件循环发送信号otSysPseudoResetWasRequested()判断是否请求了伪复位此时主循环应关闭并重新初始化 OpenThread 实例。这种库不主动调用平台、平台由宿主循环驱动的设计正是 README 所述窄平台抽象层 小内存占用的可移植性来源。SoC 与 NCP 两种形态的示例仓库stack/examples/apps/下提供了两种典型集成形态的示例examples/apps/cli/cli_uart.cpp在设备本地运行命令行CLI应用属于 SoC 形态应用与协议栈同机运行examples/apps/ncp/ncp.c运行 NCPNetwork Co-Processor固件协议栈运行在协处理器上通过 Spinel/HDLC 与主机通信属于 NCP 形态。NCP 侧实现位于 stack/src/ncp其中的ncp_base*.cpp按 FTDFull Thread Device、MTDMinimal Thread Device与 Radio 三种角色拆分实现。设备角色与组网功能README 提到 OpenThread 实现 Thread 1.3.0 的设备角色device roles以及 Border Router 支持。仓库的公开头文件 stack/include/openthread 完整覆盖了这些角色与能力设备角色相关thread.h、thread_ftd.hFull Thread Device可成为 Router/Leader、joiner.h入网、commissioner.h配网器、server.h边界路由与多网互联border_router.h、border_routing.h、border_agent.h、backbone_router.h、backbone_router_ftd.h、nat64.hIPv4/IPv6 转换Thread 1.3 的标志性能力之一服务与协议coap.h、coap_secure.h、dns.h、dns_client.h、dnssd_server.h、srp_client.h、srp_server.hThread 1.3 中的 SRP 服务发现、sntp.h、network_time.h、ping_sender.h、tcp.h运维与诊断channel_manager.h、channel_monitor.h、child_supervision.h、jam_detection.h、mesh_diag.h、history_tracker.h、link_metrics.h、radio_stats.h。这些头文件同时是对外 API 的权威清单——README 中在 OpenThread 之上构建应用的承诺正是通过这组稳定、分层instance为核心的 C API 实现的。STM32WB 平台集成封装层与配置裁剪两层结构stack开源栈与coreST 封装在 lib/stm32wb_copro/wpan/thread/openthread/Release_Notes.html 中ST 明确描述了这一分层stack目录包含 OpenThread 提供的全部 APIBSD 3-Clausecore目录包含应用控制 OpenThread 栈所需的封装层SLA0044。应用通过core的封装间接使用stack的能力。core/openthread_api/下的封装文件覆盖了几乎所有 OpenThread API 域例如instance.c、ip6.c、thread.c、dataset.c、commissioner.c、border_router.c、nat64.c等完整清单见 core/openthread_api。其中 openthread_api_wb.c 集中管理平台相关的回调注册状态变更、IP6 收发、链路扫描、Link Metrics、Commissioner 等并把 OpenThread 的事件通过tl_thread_hci.h定义的 HCI 传输层与 STM32WB 的射频处理衔接起来。六套裁剪配置core/openthread_config/下提供了 6 套面向不同应用场景的配置头文件目录清单配置头文件适用形态stm32wb-openthread-ftd-config.hFull Thread Device完整设备stm32wb-openthread-ftd-full-config.hFTD 全功能版本stm32wb-openthread-mtd-config.hMinimal Thread Device最小设备仅 Child 角色stm32wb-openthread-light-config.h轻量裁剪版本仓库 Flipper 场景同源的参考配置stm32wb-openthread-matter-config.h面向 Matter 智能家居标准的配置stm32wb-openthread-rcp-config.hRadio Co-Processor仅射频协处理器形态以 stm32wb-openthread-light-config.h 为例可以看到面向 STM32WB 的关键裁剪参数OPENTHREAD_CONFIG_NUM_MESSAGE_BUFFERS 22消息缓冲池中消息缓冲区的数量OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS 2状态变更回调处理器的最大数量SETTINGS_CONFIG_BASE_ADDRESS 0、SETTINGS_CONFIG_PAGE_SIZE 2048、SETTINGS_CONFIG_PAGE_NUM 2非易失设置存储的地址与页面布局当前实现将数据写在 RAM 中OPENTHREAD_CONFIG_PLATFORM_INFO STM32WB V1.3.0 Thread_Light写入版本字符串的平台标识OPENTHREAD_CONFIG_LOG_PLATFORM 1启用平台日志。配套的 API 裁剪开关如 openthread_api_config_light.h进一步按需启用/禁用功能例如OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE 0轻量版关闭 CoAP Secure与经典 MTD 的差异点OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE 1启用 IPv6 无状态地址自动配置OPENTHREAD_CONFIG_PING_SENDER_ENABLE 1支持 ping CLI 命令OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE 1、OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE 1启用 Link Metrics 发起者与 CSL 接收OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE 1、OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 1、OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE 1启用 DNS 客户端、SRP 客户端及其自动启动模式轻量版默认自动启动为与经典 MTD 的差异点OPENTHREAD_CONFIG_ECDSA_ENABLE 1启用 ECDSA用于配网安全OPENTHREAD_CONFIG_DUA_ENABLE 1、OPENTHREAD_CONFIG_MLR_ENABLE 1、OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 1DUA、MLR 与 Thread 测试台架参考设备支持。栈内配置总入口在栈本体一侧stack/src/core/openthread-core-config.h 是所有编译期配置的总入口它先引入openthread/config.h定义 Thread 版本常量OT_THREAD_VERSION_1_1/1_2/1_3/1_3_1并默认将OPENTHREAD_CONFIG_THREAD_VERSION定为OT_THREAD_VERSION_1_3与 README 所述 Thread 1.3.0 规范一致随后把 stack/src/core/config 下 40 余个分主题配置头文件announce_sender、backbone_router、border_router、coap、commissioner、dns_client、dtls、ip6、mle、nat64、srp_client/server、tmf 等逐一汇入。这种总入口 分主题文件的配置组织方式让任何功能的开关与参数都能在栈内被精确检索和定制。版本与许可版本基线根据 Release_Notes.html本仓库携带的 OpenThread 栈对应 ST 中间件版本 V1.5.02023-09-13基于上游 OpenThread 提交eb6377f1d7bf6bc7038a76e903af0bdf77c6f99f2023 年 2 月 5 日仓库内另有更早版本记录V1.4.0 基于 2022-07-26 提交、V1.3.0 基于 2022-02-22 提交等可作为版本追踪依据。许可stack目录OpenThread 栈本体按 BSD 3-Clause 许可发布许可文本见 stack/LICENSEcore封装层按 ST SLA0044 许可发布。此外 README 特别提醒仅可在准确指代该软件发行版时使用 OpenThread 名称与标识不得以任何暗示获得 Nest、Google 或 Thread Group 背书或关联的方式使用这些标识。配套文件stack目录同时携带 CONTRIBUTING.md、CODE_OF_CONDUCT.md、SECURITY.md 与 AUTHORS对应 README 中参与贡献需遵循贡献指南、行为准则与编码规范的要求。如何继续深入研究入口文档先通读 stack/README.md 本身。README 指出面向最终用户的功能介绍、组网构建、平台移植、应用开发与产品认证等全部文档集中在 OpenThread 官方文档站点 openthread.io面向中国大陆用户可使用 openthread.google.cn本仓库范围之外的开发与认证工作建议以这些官方资料为准。源码研读路线按配置入口openthread-core-config.h→config/→ 对外 APIinclude/openthread/→ 核心实现src/core/下的thread/、mac/、net/、meshcop/→ 平台抽象include/openthread/platform/的顺序阅读可以快速建立从宏开关到协议行为的完整映射。平台参考以 examples/platforms/openthread-system.h 与 examples/apps 下的 CLI/NCP 示例为参照理解 SoC 与 NCP 两种集成范式的差异。STM32WB 定制对照 core/openthread_config 的六套配置与 core/openthread_api 的封装实现理解 FTD/MTD/RCp/Matter 等形态在资源受限 MCU 上的裁剪思路底层 802.15.4 射频处理可继续查阅 wpan/mac_802_15_4 与 wpan/interface。总体而言这份内嵌的 OpenThread 栈完整呈现了一个规范实现 平台抽象 厂商封装三层结构的工业级无线协议栈样板向上以稳定 C API 暴露 Thread 1.3 的组网、配网、路由与边界路由能力向下以窄抽象层对接任意 RTOS 与 802.15.4 射频是研究 Mesh 组网协议与学习可移植协议栈架构设计的优质源码素材。【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Spark 2.X新闻话题实时统计分析实战:Kafka接入与滑动窗口热榜 2026/9/15 2:17:25

Spark 2.X新闻话题实时统计分析实战:Kafka接入与滑动窗口热榜

简介:这是一份基于Spark2.X的新闻话题实时统计分析大数据项目完整资料包,面向大数据方向在校学生、毕业设计者及希望掌握流式计算实战的开发者。资源聚焦用户行为日志采集、Kafka消息接入、Spark Streaming/Structured Streaming实时处理、统计结果入库等…

阅读更多 →
IE强制跳转Edge?一文讲透继续使用IE浏览器的多种可行方案 2026/9/15 2:17:25

IE强制跳转Edge?一文讲透继续使用IE浏览器的多种可行方案

先交代个背景:我这两年帮不少单位处理过“IE被强制跳转Edge”的问题,银行网站登录不了、老OA打不开、打印控件失效,报修清一色是“我打开IE,结果自动变成Edge了”。很多人误以为是电脑中毒或者IE坏了,其实微软早在Edge…

阅读更多 →
状态机+event模块:嵌入式事件驱动架构设计与落地 2026/9/15 2:17:25

状态机+event模块:嵌入式事件驱动架构设计与落地

去年做的一个物联网网关项目,让我彻底改变了写嵌入式软件的方式。那个设备有好几个工作模式、一堆按键、还有远程配置功能,一开始我用一堆变量标志位硬怼,结果就是今天改了这个模式忘了那个状态,一个按键事件在三个地方被处理&…

阅读更多 →
C语言标准本质:从施工图纸到工业级可靠性基石 2026/9/15 2:17:25

C语言标准本质:从施工图纸到工业级可靠性基石

1. 什么是C语言标准:它不是教科书,而是“施工图纸”和“验收规范”你打开任何一本《C语言程序设计》教材,翻到第一章,大概率会看到一句:“C语言是一种通用的、面向过程的编程语言。”——这话没错,但只说对…

阅读更多 →
数据流式编程中的堆数据堆积与原地重用优化实践 2026/9/15 2:17:25

数据流式编程中的堆数据堆积与原地重用优化实践

先说个我自己的经历。前阵子排查一条跑在数据流式编程框架上的处理链路,每秒要吞二十多万条设备心跳消息,业务逻辑不算复杂,无非是解析、补字段、聚合、落库。诡异的是,不管怎么压测,吞吐始终上不去,CPU 并…

阅读更多 →
基于PyTorch的果蔬识别系统:从CNN训练到Tkinter部署 2026/9/15 2:14:25

基于PyTorch的果蔬识别系统:从CNN训练到Tkinter部署

简介:基于深度学习CNN网络的水果蔬菜识别系统,是一套适合毕业设计、课程设计及实践项目使用的完整源码包,面向计算机相关专业学生、高校教师与开发者。项目包含数据预处理、模型训练、测试评估、界面登录等Python脚本,并附带配套论…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞