嵌入式调试笔记之Ymode协议

概要

记录调试Ymode传输Bin文件的经验,分享给大家

Ymode传输协议的传输流程通常包括以下几个关键步骤。这些步骤确保数据在设备之间可靠地传输。虽然具体实现可能因应用场景而异,以下是一个典型的Ymode传输流程概述:

1. 初始化连接

  • 设备检测:在开始通信之前,设备需要检测网络中其他设备的存在。这通常通过广播或寻址机制完成。
  • 连接建立:一旦设备发现彼此,它们会协商连接参数,如数据速率和协议版本,以建立通信链接。

2. 数据准备

  • 数据封装:发送方将要传输的数据封装成Ymode数据包,包括头部、有效载荷和校验信息。头部通常包含源地址、目标地址、数据长度和类型等信息。
  • 错误检测:在数据封装期间,发送方会计算校验和或哈希,以帮助在接收方进行错误检测。

3. 数据发送

  • 数据传输:发送方通过物理媒介(如电力线或无线信号)将数据包发送给接收方。
  • 信道管理:在发送数据时,Ymode协议会管理信道以避免干扰,这可能涉及时隙分配或频率跳变。

4. 数据接收

  • 数据接收:接收方在指定的信道上监听数据包,并接收到信息后进行初步处理。
  • 错误检测:接收方通过校验和或其他错误检测方法确认数据的完整性。如果发现错误,接收方可以请求重发数据。

文件的传输过程,以具体的例子说明。把foo.c,大小为4196Byte(16进制为0x1064)的文件作为传输的对象,则它的传输过程如下:

发送端----------------------------------------------------------------接收端

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< C

SOH 00 FF “foo.c” "1064’’ NUL[118] CRC CRC >>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< C

STX 01 FE data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

STX 02 FD data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

STX 03 FC data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

STX 04 FB data[1024] CRC CRC>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

SOH 05 FA data[100] 1A[28] CRC CRC>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

EOT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< NAK

EOT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< C

SOH 00 FF NUL[128] CRC CRC >>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ACK

5. 确认与响应

  • 发送确认:接收方在成功接收数据并验证其完整性后,会向发送方发送确认消息(ACK),通知其数据已成功接收。
  • 重传机制:如果接收方检测到错误或未收到数据,会发送非确认消息(NACK),请求重新发送数据包。

6. 连接终止

  • 会话结束:在数据传输完成后,设备可以选择继续保持连接或终止会话。如果保持连接,可以随时回复传输新的数据;如果终止,则进入解除连接流程。

Ymode帧格式

名称结构长度byte备注
帧头SOH/STX1SOH表示数据域128 字节,STX表示数据域1024 字节
帧序号Fn1包序号,到255后归零
帧序号取反XFN1包序号取反(~)
数据域DATA128/1024数据域,数据不足的填充0x1A
校验码CRC2针对数据域校验

起始帧

帧头帧序号帧序号取反数据校验
SOH0FFdata[128]CRC

数据帧

提示:当帧序号大于 255 后,序号重新从 0 开始累加;

帧头帧序号帧序号取反数据校验
STX1~255255~1data[1028]CRC

结束帧

提示:结束帧的长度有两种情况,最后一包如果不足128字节,则按SOH帧发送,否则按STX的1024字节发送

帧头帧序号帧序号取反数据校验
SOH/STX0FFdata[128]/data[1024]CRC

总结和补充

Ymod协议适合单片机升级使用,或者传输一些比较大的文件。

引用链接:
Ymodem 协议详解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值