为RT-Thread增加Ymodem传输协议

2013-2-3 02:56 [复制链接] 20 12562

Ymodem是Xmodem传输协议的升级版,跟Xmodem-1K相似,不同之处是Ymodem在开始传送前会有个文件名传送的过程,每包固定为1024字节,采用CRC16校验  [9 Y+ T0 h$ w& c' G# |

5 q% L, y7 a2 K8 l9 ]CRC16校验保证了传输的可靠性.3 n! n3 A$ J( Z5 n1 }5 Y9 n

( x: A) D) m5 t. U* D; f使用:
. J& O; \: M2 w7 k( X$ V2 ~首先,必须有文件系统或者其它能存放数据的地方! I# D1 h  x7 {2 ]
其次,传输依赖Finsh,调用ry函数后将使用finsh的设备来传输数据2 U* m7 j# h* q. G% |( V. P! ?1 [
最后,解压附件中的三个文件并添加到你的工程
' n; j' i- ]' D0 s1 _' H* [( v+ z; k  }
1.打开超级终端或其它类似支持Ymodem的终端
. M5 k  X4 N' K7 X% N' K' S2.finsh里执行ry(char *),参数是接收文件存放的路径,或者其它.例如我要将接收的文件存放在文件系统的根目录下:ry("/")6 f& j& j/ \5 Y# U( J( G1 r( i* ]) {
3.此时超级终端里会每隔三秒收到一个字符'C',十次后退出.3 d, ^- A% W, i& p5 x
4.选择你要传送的文件,然后选择Ymodem协议,点击发送
( K( Z, r- c& V  V5.观看进度条....
; |3 Y. Q6 f5 M: N8 I2 _" j6.完成
7 l. e& Z  S7 p0 h  a: x
/ s7 R, Z, x, ^; x# i) a$ S8 X[attachment=-2]) W5 `# ?( [- Y+ U+ H

: Z: T- M. Q' b  i* P9 S, A. C3 T[attachment=-1]
/ T4 n. X/ B7 Y1 s  ~
& o& p0 O7 O, E+ d, d* S7 \+ a* l. M! O2 b4 ]; x1 t" v
6 G  J7 d+ n# B  t) ~+ h
[attachment=-3]
ymodem.png
ymodem1.png
ymodem3.png

Ymodem.zip

2.93 KB, 下载次数: 495

ymodem.zip

2.93 KB, 下载次数: 415

ymodem.zip

3.91 KB, 下载次数: 469

使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2013-2-3 09:25:32 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

沙发,学习。
使用道具 举报 回复
发表于 2013-3-25 23:23:23 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

修正了一个新建文件的bug% P6 ~- G& E2 y: @8 {7 _3 G
使用道具 举报 回复
发表于 2013-3-25 23:40:45 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

狼呆死嘎!
使用道具 举报 回复
发表于 2013-3-25 23:45:55 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

可行?如果好的话,可以考虑加到RT-Thread中呐
使用道具 举报 回复
发表于 2013-3-26 10:55:18 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

我使用中是还可以,不过只实现了接收的部分,文件系统好了后,发送一些字库文件,资源文件啥的还是蛮方便
) V, S& @0 t9 n5 u1 N& @4 b* p. I; L发送部分因使用的较少,还没有实现
使用道具 举报 回复
发表于 2013-3-26 13:34:00 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

我使用中是还可以,不过只实现了接收的部分,文件系统好了后,发送一些字库文件,资源文件啥的还是蛮方便3 @, Z; n4 l+ ~1 c& S4 J9 y
发送部分因使用的较少,还没有实现
你就没验证把接收到的文件发送回去,看是否有问题啊? 也许文件有问题呢?
使用道具 举报 回复
发表于 2013-3-29 18:39:56 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

再更新一次
; n% \# e  F1 [/ h
" g1 e6 l5 _% q8 Y6 x) |Ymodem当传输到最后一包的时候(1024字节或者128字节),不足一包会用CTRL-Z(0x1A)自动补齐一包,这样接收到的文件后面会写上一些无用的0x1A
, j: h6 D0 x3 b+ c大多数应用是不会影响的,但是越看越不爽
- Z+ k& O) B5 {2 N3 Z. l* P5 f1 U: Q" g9 @- {) c, Y; h
就修正了! Z+ F7 ]% F: e
使用道具 举报 回复
发表于 2013-3-29 18:40:19 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

[quote]我使用中是还可以,不过只实现了接收的部分,文件系统好了后,发送一些字库文件,资源文件啥的还是蛮方便4 o& I: N' u% D# X' H. \
发送部分因使用的较少,还没有实现
你就没验证把接收到的文件发送回去,看是否有问题啊? 也许文件有问题呢?[/quote]3 |- {+ {% b7 [, n+ f- H6 }, D7 e

# B1 q, h1 ^( p0 g( A! acat打印出来看还不行吗?
使用道具 举报 回复
发表于 2013-3-29 19:34:40 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

cat不出换行符差异吧。
使用道具 举报 回复
发表于 2013-6-3 22:47:24 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

我的为何收到的第一个包都是0x00呢?:PC已经收到C
使用道具 举报 回复
发表于 2013-6-7 20:15:00 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

<!-- l --><a class="postlink-local" href="http://www.rt-thread.org/phpBB3/viewtopic.php?f=3&t=1749">viewtopic.php?f=3&t=1749</a><!-- l -->
0 m& G; L* y: y& ^1 @: ]0 H  zRT-Thread有Ymodem协议栈么?[已实现]
; t$ C9 Z  m" f  f
* r7 Q* b1 p* h7 P这个是我12年发的帖子
使用道具 举报 回复
发表于 2013-7-1 22:22:58 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

只收到一个字节:0x01。不知为啥?有遇到此种情况的没?”
使用道具 举报 回复
发表于 2013-8-16 13:25:01 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

只收到一个字节:0x01。不知为啥?有遇到此种情况的没?”

6 C) n. M2 ~2 N5 e9 j
5 `) x# |9 e+ q& U设备只收到一个字节吗?用的是啥终端?
使用道具 举报 回复
发表于 2013-10-9 11:24:30 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

好像很慢的样子,不知道为什么?
使用道具 举报 回复
发表于 2013-12-19 12:38:11 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

这个绝对是 利好~~~
使用道具 举报 回复
发表于 2013-12-19 13:10:42 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

在STM32用做升级的boot里用过别人写的一个,升级比较方便,XP以前的系统不用装软件
使用道具 举报 回复
发表于 2013-12-20 10:52:27 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

这个和zmodem有什么差别吗?
使用道具 举报 回复
发表于 2013-12-20 10:52:50 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

zmodem用的挺好的
使用道具 举报 回复
发表于 2013-12-20 10:53:07 | 显示全部楼层

为RT-Thread增加Ymodem传输协议

超级终端也支持(windows版本)
使用道具 举报 回复
发表于 2019-3-9 10:46:03 | 显示全部楼层
Ymodem协议还是挺好用的,传数据有序列号,有CRC校验和重传,感觉还是很完善了。串口嘛,要想很快的速率也是不现实的。我有自己用MFC写的一个Ymodem升级工具
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|RT-Thread开发者社区  

© 2013-2017 上海睿赛德电子科技有限公司 沪ICP备13014002号-1

Powered by RT-Thread

快速回复 返回顶部 返回列表