跳转至

AirLink通信协议

简介

AirLink通信协议是合宙定义的, 用于两个芯片之间的通用通信协议, 载体可以是SPI主从, 也可以是UART, 也可以是其他双向通信手段.

协议分成多个层

  1. 物理层, 负责数据包在物理界面的传输, 保证传输的完整性
  2. 链路层, 将指令数据打包/解包,含包头magic/校验码的规则,流控等
  3. 指令层, 负责描述指令的类型, 长度, 命令序号, 附加数据等
  4. 执行层, 负责执行指令, 用于协调队列优先级, 执行时序等

物理层

当前的实现有2种, 将来会增加更多

  1. SPI主从模式
  2. UART对等模式

详细描述请查阅 AirLink物理层描述

链路层

链路层的头部, 包含16个字节, magic,len,crc16,pkgid, flags

详细描述请查阅 AirLink链路层描述

指令层

指令层的数据

  1. 2字节的指令id
  2. 2字节的数据长度
  3. 不定长的数据

详细描述请查阅 AirLink指令层描述

指令层支持非常多的指令类型, 对于不支持的指令,应该给予忽略处理

指令分类

  1. 基础指令, 包括设备信息
  2. IP包, 包括IP包/MAC包的传输, 对有联网需求的设备是必须实现
  3. GPIO指令, 初始化GPIO,设置GPIO输出状态,读取GPIO输入状态
  4. UART指令, 初始化UART,读写UART,处理UART事件
  5. FOTA指令, 执行FOTA相关的操作
  6. WIFI指令, WIFI操作相关
  7. BT指令, 蓝牙操作相关
  8. PM指令, 功耗控制相关

执行层

执行层分2部分组成:

  1. 处理物理层的task, 即SPI主机任务, SPI从机任务, UART的收发任务, 通过airlink.start按类型启动
  2. 处理指令的task, 即 airlink 主任务task

对数据包的优先级处理:

  1. IP包的优先级最低, 而且受流量控制, 必要时抛弃
  2. 非IP包的优先级较高, 有数据就传输, 不做抛弃处理