OpenMV IDE通信协议分析
OpenMV IDE 通过usb cdc模式连接板端,也就是usb上虚拟了一个串口,基于串口实现了一套指令应答的交互协议。早期基于stm32 usb口实现,目前openmv适配扩展到多芯片上ide dbg调试通信口不在局限于usb,也可以是wifi socket、串口等形式。
协议格式
协议为主从应答形式,主机端(pc上IDE)发出指令帧,设备端(板端)应答指令执行相应动作。任何一次对话必然由主机主动发起,设备端视情况仅执行动作或执行动作并返回应答数据,设备端不可以主动发送给主机信息。
主机发送帧格式
组成 | 长度(字节) | 说明 |
---|---|---|
帧头 | 1 | 固定为0x30 |
命令 | 1 | 见下文 |
长度 | 4(小端字节序) | 无应答指令则表示数据段长度,有应答指令则表示应答数据长度 |
数据 | n | 作为指令的补充参数,不定长,数据长度由长度字段标识 |
命令枚举如下:
enum usbdbg_cmd {
USBDBG_NONE =0x00, //空指令
USBDBG_FW_VERSION =0x80, //获取版本号
USBDBG_FRAME_SIZE =0x81, //获取帧大小
USBDBG_FRAME_DUMP =0x82, //获取帧数据
USBDBG_ARCH_STR &