OpenMV IDE通信协议分析

2023-11-06

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         &
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenMV IDE通信协议分析 的相关文章

随机推荐

  • c++四舍五入函数,向上取整,向下取整函数

    对含有小数点的数进行四舍五入是比较普遍的一种需求 在C 中也有类似的取整函数 在C 的头文件中有floor 和ceil 函数 在STL中还有round 函数 向下取整 floor 向上取整ceil 四舍五入取整round
  • 计算机需要解决的基本问题是,【基本计算机问题】计算机不是遇到非常严重的问题,请看这里解答...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 5 启动计算机时出现 Invalid Boot ini 无效 Boot ini 或 Windows could not start Windows 无法启动 错误信息 Invalid Boot
  • 【C++】可变参数模板

    2023年9月9日 周六下午 这个还是挺难学的 我学了好几天 在这里我会举大量的示例程序 这样可以有一个更好的理解 不定期更新 目录 推荐文章 示例程序一 拼接字符串 示例程序二 求整数和 示例程序三 输出一串整数 推荐文章 这里有一些不错
  • [蓝桥杯][2017年第八届真题]分巧克力 二分查找 c语言

    题目描述 儿童节那天有K位小朋友到小明家做客 小明拿出了珍藏的巧克力招待小朋友们 小明一共有N块巧克力 其中第i块是Hi x Wi的方格组成的长方形 为了公平起见 小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们 切出的巧克力需要满足
  • 数据结构-二分搜索树转双向链表(Java)

    二分搜索树转双向链表 牛客JZ36 题目 思路 1 对二分搜索树进行中序遍历 2 将二分搜索树左节点和根节点相连接 右节点和根节点相连接 遍历左子树 连接 左子树尾部不为空 leftTail right pRootOfTree pRootO
  • 求字符相似度的广度优先搜索问题请教

    有n名选手在玩游戏 他们每个人有一个字符 每个字符都有自己固定的若干个特征 特征的种类数为k 每个人的特征为特征总集的一个子集 两个字符的相似度定义为 如果两个字符A和B同时拥有某个特征或者同时没有某个特征 它们的相似度加一 蒜头君想创造出
  • 区块链三加一:去中心化的分布式记账系统

    区块链分布式账本技术的发展有利于人们掌控个人信息 并通过不变的记录保存服务或产品交易 减少对集中系统的依赖 而这场革命正在创造一个去中心化的可信环境 从而颠覆传统业务 区块链技术的核心是分布式记账 去中心化 不容易篡改 比特币等数字货币是区
  • 【PTA】【C语言】判断给定整数是否素数[加强版]

    素数是指在大于1的自然数中 除了1和它本身以外 不能被其他自然数整除的数 本题要求编写程序 判断从键盘输入的数是否素数 如果是素数 输出XX is prime number 的信息 输出XX is not prime number 的信息
  • jquery 取值 radio 问题

    1 获取选中值 三种方法都可以 input radio checked val input type radio checked val input name rd checked val 2 设置第一个Radio为选中值 input ra
  • android 文字高斯模糊,android高斯模糊

    高斯模糊 param context param sentBitmap param radius 0 lt radius lt 25 return SuppressLint NewApi public static Bitmap fastB
  • 【HUAWEI】PPP&PPPoE配合Radius认证配置案例

    背景 对于在一个大的园区网 要保证接入的安全性和合法性 有许多种手段 对于到端的接入用户 可以使用802 1X 对于移动办公人员 可以使用SSL 可以配合使用IPS 防火墙 上网行为管理等手段 不过 对于网关分布的网络呢 或者说 公司合并
  • 如何替代即将淘汰的Flash方案?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由MarsBoy发表于云 社区专栏 导语 Web技术飞速发展的如今 我们在感受新技术带来的便捷和喜悦的同时 也时常在考虑着一个问题 老技术如何迁移 正如本文的主题一样 Flash
  • unity 项目仿cs知识点

    一 简介 1 人物部分 a 人物移动 b 镜头旋转 c 玩家开枪 动画 音频 枚举 弹孔 倍镜 2 敌人部分 a 敌人克隆 b 走向玩家 距离 方向 朝向 点乘 叉乘 二 人物部分 1 人物移动 CharacterController c
  • 几种主流国产linux操作系统配置pyqt5环境说明

    一 银河麒麟桌面 pyqt5已安装 直接运行就行 二 银河麒麟服务器 python3 get pip py local bin pip3 install pyqt5 python3 test1 py This application fai
  • JavaScript中的深拷贝

    1 什么是深拷贝 浅拷贝只是解决了第一层的拷贝问题 拷贝第一层的 基本类型值 以及第一层的 引用类型地址 并没有递归拷贝第二层以后的属性 深拷贝会拷贝所有的属性 拷贝的属性指向动态分配的内存 当对象和它所引用的对象一起拷贝时即发生深拷贝 深
  • C语言头插法创建双链表

    1 问题描述 使用头插法创建双链表 2 与单链表不同的是 双链表的结构体中多了一个变量就是指向当前节点的前驱节点 这样我们在循环遍历的时候可以通过当前节点的前驱指针找到前驱节点 在创建双链表的时候比单链表多了一个步骤就是对于前驱指针的操作
  • OpenMMLab OpenMMLab mmdeploy v1.1.0模型部署(一)

    一 MMDepoly整体框架 模型部署是指把机器学习训练生成的算法模型 部署到各类云 边 端设备上去 并使之高效运行 从而将算法模型实际地应用到现实生活中的各类任务中去 从而实现AI 的智能化转型 目前 我们已经支持 5 个算法库和 5 种
  • 动态规划:国王与金矿

    题目解析 有一个国家发现了5座金矿 每座金矿的黄金储量不同 需要参与挖掘的工人数也不同 参与挖矿工人的总数是10人 每座金矿要么全挖 要么不挖 不能派出一半人挖取一半金矿 要求用程序求解出 要想得到尽可能多的黄金 应该选择挖取哪几座金矿 第
  • 乔宇:深度模型让机器理解场景

    点击上方 深度学习大讲堂 可订阅哦 编者按 所谓场景 无论是 万家灯火 亦或是 巴山夜雨 于人是一种直观自然的感受 然而 对于机器而言 再多的温情脉脉 都也只是计算机世界冰冷的二进制符号 这区别的背后 其实是人在成长过程中形成的对世界的认知
  • OpenMV IDE通信协议分析

    OpenMV IDE通信协议分析 OpenMV IDE 通过usb cdc模式连接板端 也就是usb上虚拟了一个串口 基于串口实现了一套指令应答的交互协议 早期基于stm32 usb口实现 目前openmv适配扩展到多芯片上ide dbg调