IAP 协议

lichongyang
lichongyang
lichongyang
111
文章
0
评论
2019年8月28日20:46:00 评论 338 次浏览

协议采用Yomdem协议,

Ymodem协议主要有3部分组成:

1.文件传输开启

2.数据传输

3.文件传输结束

文件传输过程:

(1)开启是由接收方开启传输,它发一个大写字母"C"开启传输。然后进入等待(SOH)状态,如果没有回应,就会超时退出。

(2)发送方一开始时处于等待过程,等待C。收到C以后,发送(SOH)数据包开始信号,发送序号(00),补码(FF),“文件名”,“空格”“文件大小”“除去序号外,补满128字节”,CRC校验两个字节。进入等待(ACK)状态。

(3)接收方收到以后,CRC校验满足,则发送ACK。发送方接收到ACK,又进入等待“文件传输开启”信号,即重新进入等待“C”的状态。

(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,Ymodem支持128字节和1024字节一个数据包。128字节以(SOH)开始,1024字节以(STX)开始。

 接收方又发出一个“C”信号,开始准备接收文件。进入等待“SOH”或者“STX”状态。

 (5)发送接收到“C”以后,发送数据包,(SOH)(01序号)(FE补码)(128位数据)(CRC校验),等待接收方“ACK”。

 (6)文件发送完以后,发送方发出一个“ETO”信号,接收方也以“ACK”回应。然后接收方会再次发出“C”开启另一次传输,若接着发送方会发出一个“全0数据包”,接收方“ACK”以后,本次通信正式结束。

所用到的符号:

#define MODEM_SOH 0x01  //数据块起始字符

#define MODEM_STX 0x02  //1028字节开始

#define MODEM_EOT 0x04  //文件传输结束 

#define MODEM_ACK 0x06  //确认应答

#define MODEM_NAK 0x15  //出现错误

#define MODEM_CAN 0x18  //取消传输

#define MODEM_C 0x43   //大写字母C

CRC计算方法

u16 Crc(u8 *bytes, u32 len)

{

  int crc = 0;

  int i, j;

  for(i = 0; i < len; i++)   {    crc = crc ^ bytes[i] << 8;    for(j = 0; j < 8; j++)    {      if((crc & ((int) 0x8000)) != 0)        crc = crc << 1 ^ 0x1021;      else        crc = crc << 1;    }  }  return crc & 0xFFFF; }

协议解析

接收方:发出0x43 ("C") 表示请求对方发送数据

发送方:发出第0个数据包

    数据包构成:

     1:0x01或者0x02;

      0x01表示128字节,0x02表示1024字节

     2:0x00 

       表示第0个数据包

      3:0xff 

       第几个数据包的补码

      4: 4+  文名的长度        文件名,以0x00结束  

      4+  文件名的长度 +1     文件大小,以0x00结束

       正文不足128字节补0x00

     Crc校验

接收方:0x06或者0x15 

    0x06应答,0x15非应答

接收方:0x43 请求对方发送正文

发送方:发出第1个数据包

    数据包构成:

      1:0x01或者0x02;

         0x01表示128字节,0x02表示1024字节 

        2:0x01 表示第1个数据包

      3:0xfe 第几个数据包的补码

      4:正文

         Crc校验

接收方:0x06或者0x15 

    注:发送方收到应答后马上发送第二个数据包直到数据包发送结束后发出0x04 

发送方:发出第2个数据包

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信小程序
  • 我的微信小程序扫一扫
  • weinxin
lichongyang
  • 本文由 发表于 2019年8月28日20:46:00
  • 转载请务必保留本文链接:https://www.chongyangli.com/archives/iap-%e5%8d%8f%e8%ae%ae/
IAP协议 总线

IAP协议

协议采用Yomdem协议, Ymodem协议主要有3部分组成: 1.文件传输开启 2.数据传输 3.文件传输结束 文件传输过程: (1)开启是由接收方开启传输,它发一个大写字母"C"开启传输。然后进入...
汽车boot loader开发要点 车载知识

汽车boot loader开发要点

1. Bootloader 的功能 Bootloader,顾名思义,就是驻留在 ECU 非易失性存储器中的一段程序加载代码,每次 ECU 复位后,都会运行 Bootloader。它会检查是否有来自通信...
汽车CAN总线资料下载 CANoe

汽车CAN总线资料下载

CAN总线基础 CAN总线技术基础下载 CAN总线详细教程精心编制不可错过下载 CANoe介绍 CANoe培训介绍下载 Part1-CANoe概述下载 Part2-CANoe软件界面介绍下载 Part...
CAPL语言学习文档 车载知识

CAPL语言学习文档

(一)CAPL简介 CAPL全称为Communication Access Programming Language。CAPL语言允许你编写单独的应用程序。比如说:当你添加新节点的时候,你要测试新添加...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: