一、OpenThread 资源
有两种类型的 OpenThread 文档:
GitHub — 专注于设置、如何构建示例平台、如何使用工具
openthread.io — 关注 OpenThread 新闻和特性、用例、指南、API 参考
二、Thread 网络基础
https://openthread.io/guides/thread-primer
1、Thread 网络基础目录
- 什么是Thread?
- 节点角色和类型
- IPv6寻址
- 网络发现和形成
- 路由器选择
在 Thread 网络中,节点分成两种转发角色:Router 和 End Device。
2、Thread 网络的角色
(1)Router
Router 节点的行为如下:
- 为网络设备转发数据包
- 为尝试加入网络的设备提供安全的 commissioning 服务
- 始终打开它的收发器
(2)End Device
End Device 节点的行为如下:
- 主要与单个 Router 进行通信
- 不会为其他网络设备转发数据包
- 可以关闭它的收发器来降低功耗
(3)小结
Thread 设备可以是 Router(父)或 End Device(子)
Thread 设备可以是 FTD(维护 IPv6 地址映射),也可以是 MTD(将所有消息发送给其父节点)
REED 可以升级为 Router,Router 也可以降级为 REED
每个 Thread 网络分区都有一个 Leader 来管理 Router
Border Router 用于连接 Thread 和其他网络
一个 Thread 网络可能由多个分区组成
3、IPv6 寻址
Thread 网络包含三个域:Link-Local、Mesh-Local 和 Global
Thread 设备具有多种单播 IPv6 地址
RLOC 表示设备在 Thread 网络中的位置
ML-EID 对于分区内的 Thread 设备是唯一的,并且应由应用程序使用
Thread 使用多播将数据转发到节点组和 Router 组
当目的地的 RLOC 未知时,Thread 可以使用任播
三、OpenThread 模拟第一个 Thread 网络
(https://openthread.io/codelabs/openthread-simulation#0)
在此 Codelab 中,您学习了如何:
- 启动和管理 OpenThread Simulation Docker 容器
- 模拟 Thread 网络
- 验证线程节点
- 使用 OpenThread Daemon 管理 Thread 网络
四、将 OpenThread 移植到硬件平台
将 OpenThread 堆栈移植到新的硬件平台包括几个步骤(https://openthread.io/guides/porting):
- 设置构建环境
- 定义 CMake 规则
- 实现平台抽象层 API
- 实现高级功能(硬件抽象层)
- 验证端口
- 认证和自述文件
- 硬件平台要求