ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:19.07KB ,
资源ID:5706433      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5706433.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(xmodem协议源码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

xmodem协议源码.docx

1、xmodem协议源码竭诚为您提供优质文档/双击可除xmodem协议源码篇一:ymodem协议例子一、ymodem协议学习的目的1、ymodem协议的应用打开超级终端,在传送主菜单里,有接收文件和发送文件的子菜单。也就是超级终端可以与连接的对象之间相互传送文件。打开发送文件选项,可知,只需要选择“文件名”和“协议”两个选项,就可以进行文件的传送了。协议的类型有7中,xmodem及改进的1k-xmodem,ymodem和ymodem-g,zmodem及其改进协议,以及kermit,我这次主要学习嵌入式系统中用得较多的ymodem协议。2、学习的目标(1)传送文件的实现添加一个命令,fsend,这个

2、命令接受一个参数,就是文件的最终存放目录。当开发板接收到这个命令后,做好接收文件的准备。与超级终端进行协商后,将收到的文件写入指定位置。(2)接收文件的实现添加一个命令frecv,这个命令接受一个参数,就是超级终端所要索取的文件。当开发板接收到这个命令后,就等待终端发送索取文件的协商要求。二、ymodem协议分析1、明确概念一步一步来,先把概念搞清楚。ymodem协议是一种发送并等待的协议。即发送方发送一个数据包以后,都要等待接收方的确认。如果是ack信号,则可以发送新的包。如果是nak信号,则重发或者错误退出。、文件传输过程文件传输过程的开启:(1)开启是由接收方开启传输,它发一个大写字母c

3、开启传输。然后进入等待(soh)状态,如果没有回应,就会超时退出。(2)发送方开始时处于等待过程中,等待c。收到c以后,发送(soh)数据包开始信号,发送序号(00),补码(FF),“文件名”,“空格”“文件大小”“除去序号外,补满128字节”,cRc校验两个字节。进入等待(ack)状态。(3)接收方收到以后,cRc校验满足,则发送ack。发送方接收到ack,又进入等待“文件传输开启”信号,即重新进入等待“c”的状态。(4)前面接收方只是收到了一个文件名,限制正式开启文件传输,ymodem支持128字节和1024字节一个数据包。128字节以()开始,字节以()开始。接收方又发出一个“”信号,开

4、始准备接收文件。进入等待“”或者“”状态。()发送接收到“”以后,发送数据包,()(序号)(补码)(位数据)(校验),等待接收方“”。()文件发送完以后,发送方发出一个“”信号,接收方也以“”回应。然后接收方会再次发出“”开启另一次传输,若接着发送方会发出一个“全数据包”,接收方“”以后,本次通信正式结束。()当然相对于改进的地方就在于传输再次开启以后,又可以发送另外一个文件,即一次传输允许发送多个文件,但这个特性我就不准备实现了。/帧格式/128字节数据帧/1024字节数据帧应答方式senderReceiver40-.-/filenameandlengthetc.-/data.-.-/tar

5、smitionover/nextfile.-/取消传输/至少2个实例:(1)00400040ff0a0b0c0d937bff(2)004000b0FF43e780FF/c(3)00400040ff0100fe01444b515632302d53544d33322e62696e003239303532000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

6、000000000000000000000000000000000000000000000000000000000000001b0593adff/filenameandlengthetc(4)004000b0ff064e95ff/ack/(5)004000b0ff434e95ff/c(6)00400040ff0101Fe00000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030

7、405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0fcfeb3205ff/data(7)004000b0ff064e95ff/ack(8)00400040ff0102fd000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c

8、0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0fcfeb1fafff/data(9)004000b0ff064e95ff/ack(10)00400040ff0103fc000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f0001020304

9、05060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0fcfeb04c9ff/data(11)004000b0ff064e95ff/ack(12)00400040ff0104fb000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0

10、c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0fcfeb54f3ff/data(13)004000b0ff064e95ff/ack(14)00400040ff0105fa000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f00010203

11、0405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0fcFeb4f95ff/data(15)004000b0ff064e95ff/ack(16)00400040ff0106f9000102030405060708090a0b0c0d0e0f000102030405060708090a0

12、b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0fcFeb623fff/data(17)004000b0ff064e95ff/ack(18)00400040ff045cb6ff/eot(19)004000b0ff064e95ff/ack(20)00

13、4000b0ff434e95ff/c(21)00400040ff0100Fe0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

14、1363ff/end发送端中止发送00400040ff18b16cff手动取消00400040ff61f782ff/a00400040ff41f5a3ff/a(20xx/5/24)版本2:修改:应答方式senderReceiver40-.-/filenameandlengthetc.-/data.-.-/tarsmitionover/nextfile.-篇二:xmoedm必看xmoedm必看1xmodem协议是什么?xmodem协议是一种串口通信中广泛用到的异步文件传输协议。分为标准xmodem和1k-xmodem两种,前者以128字节块的形式传输数据,后者字节块为1k即1024字节,并且每个

15、块都使用一个校验和过程来进行错误检测。在校验过程中如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个确认字节(ack)。由于xmodem需要对每个块都进行认可,这将导致性能有所下降,特别是延时比较长的场合,这种协议显得效率更低。除了xmodem,还有ymodem,zmodem协议。他们的协议内容和xmodem类似,不同的是ymodem允许批处理文件传输,效率更高;zmodem则是改进的了xmodem,它只需要对损坏的块进行重发,其它正确的块不需要发送确认字节。减少了通信量。2xmodem协议相关控制字符soh0x01stx0x02eot0x04ack0x06nak

16、0x15can0x18ctRlz0x1a3标准xmodem协议(每个数据包含有128字节数据)帧格式_|soh|信息包序号|信息包序号的补码|数据区段|校验和|_|_|_|_|_|41k-xmodem(每个数据包含有1024字节数据)帧格式_|stx|信息包序号|信息包序号的补码|数据区段|校验和|_|_|_|_|_|5数据包说明对于标准xmodem协议来说,如果传送的文件不是128的整数倍,那么最后一个数据包的有效内容肯定小于帧长,不足的部分需要用ctRl-z(0x1a)来填充。这里可能有人会问,如果我传送的是bootloader工程生成的.bin文件,mcu收到后遇到0x1a字符会怎么处理

17、?其实如果传送的是文本文件,那么接收方对于接收的内容是很容易识别的,因为ctRl-z不是前128个ascii码,不是通用可见字符,如果是二进制文件,mcu其实也不会把它当作代码来执行。哪怕是excel文件等,由于其内部会有些结构表示各个字段长度等,所以不会读取多余的填充字符。否则xmodem太弱了。对于1k-xmodem,同上理。6如何启动传输?传输由接收方启动,方法是向发送方发送c或者nak(注意哦,这里提到的nak是用来启动传输的。以下我们会看到nak还可以用来对数据产生重传的机制)。接收方发送nak信号表示接收方打算用累加和校验;发送字符c则表示接收方想打算使用cRc校验(具体校验规则下

18、文xmodem源码,源码胜于雄辩)。7传输过程当接收方发送的第一个c或者nak到达发送方,发送方认为可以发送第一个数据包,传输已经启动。发送方接着应该将数据以每次128字节的数据加上包头,包号,包号补码,末尾加上校验和,打包成帧格式传送。发送方发了第一包后就等待接收方的确认字节ack,收到接收方传来的ack确认,就认为数据包被接收方正确接收,并且接收方要求发送方继续发送下一个包;如果发送方收到接收方传来的nak(这里,nak用来告诉发送方重传,不是用来启动传输)字节,则表示接收方请求重发刚才的数据包;如果发送方收到接收方传来的can字节,则表示接收方请求无条件停止传输。8如何结束传输?如果发送

19、方正常传输完全部数据,需要结束传输,正常结束需要发送方发送eot字节通知接收方。接收方回以ack进行确认。当然接收方也可强制停止传输,当接收方发送can字节给发送方,表示接收方想无条件停止传输,发送方收到can后,不需要再发送eot确认(因为接收方已经不想理它了,呵呵)。9特殊处理虽然数据包是以soh来标志一个信息包的起始的,但在soh位置上如果出现eot则表示数据传输结束,再也没有数据传过来。接收方首先应确认数据包序号的完整性,通过对数据包序号取补,然后和数据包序号的补码异或,结果为0表示正确,结果不为0则发送nak请求重传。接收方确认数据包序号正确后,然后检查是否期望的序号。如果不是期望得

20、到的数据包序号,说明发生严重错误,应该发送一个can来中止传输。如果接收到的数据包的包序号和前一包相同,那么接收方会忽略这个重复包,向发送方发出ack,准备接收下一个包。接收方确认了信息包序号的完整性和是正确期望的后,只对128字节的数据区段进行算术和校验,结果与帧中最后一个字节(算术校验和)比较,相同发送ack,不同发送nak。10校验和的说明xmodem协议支持2种校验和,它们是累加和与cRc校验。当接收方一开始启动传输时发送的是nak,表示它希望以累加和方式校验。当接收方一开始启动传输时发送的是字符“c”,表示它希望以cRc方式校验。可能有人会问,接收方想怎么校验发送方都得配合吗,难道发

21、送方必须都支持累加和校验和cRc校验?事实上xmodem要求支持cRc的就必须同时支持累加和,如果发送方只支持累加和,而接收方用字符“c”来启动,那么发送方只要不管它,当接收方继续发送“c”,三次后都没收到应答,就自动会改为发送nak,因为它已经明白发送方可能不支持cRc校验,现在接收方改为累加和校验和发送方通讯。发送方收到nak就赶紧发送数据包响应。11xmodem协议代码看了以上说明,再参考代码,应该很容易会理解代码编写者的思路。篇三:lrzsz串口工具移植到aRmlinux教程lrzsz是一个unix通信包,提供xmodem、ymodem和zmodem文件传输协议。lrzsz以前是ome

22、n科技的主打软件,现在已经免费,并且遵循gnu开源协议。lrzsz适合这样一种开发环境,一块板子,除了串口,没有任何外部出入输出设备,没有sd卡,没有网线,这个时候如果想跟这块板子传输交互文件,就需要用到串口传输了。根据modem所采用的文件传输协议:xmodem、ymodem、zmodem将其分类xmodem:简单通用,传输信息单位是“包=128b”,传输速度慢,适合电话线路质量差的情况下用。ymodem:由xmodem演变来,效率可靠性高“包=128*8b”,一次传输可发送或接受几个文件。zmodem:与上两种不同,已连续的数据流发送数据,效率更高。在ubuntu主机中可以直接使用rz或者

23、sz命令与securecRt交互文件,如果想在开发板中,上传下载文件的话,需要移植完整版的lrzsz到开发板,使用其完整功能。移植步骤:1下载源码包首先下载最新版的lrzsz,地址:https:/ohse.de/uwe/software/lrzsz.html。下面以0.12.20版本为例,下载源码包为:lrzsz-0.12.20.tar.gz。2复制并解压源码包3配置4编译安装make完成之后,会在当前目录src/下生成lrz和lsz两个文件。5复制到目标板并执行通过网络、u盘、sd卡等方式,将生成的lrz和lsz复制到目标板的/usr/sbin目录,并在目标版上添加可执行权限:6配置串口在使用之前,需要设置串口:7测试在目标版上,执行lrz命令将文件从pc机传送到目标版上,执行lsz命令将文件从目标版传到pc机上:参考地址:/seven_7_one/blog/static/16260641220xx1113111645638/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1