请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4719|回复: 31
收起左侧

[BSP视频教程] BSP视频教程第22期:基于串口的XYZmodem文件传输协议实现,含上位机和下位机全开源,制作了一个Ymodem方式固件更新(2022-08-08)

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
发表于 2022-8-8 13:40:31 | 显示全部楼层 |阅读模式
本期视频教程为大家分享串口专题的XYZmodem的文件传输协议实现,视频中以Ymodem为例,制作了一个Ymodem方式固件更新,为大家介绍Ymodem的上位机和下位机通信实现。

上位机我们直接采用VSCode配合C编译器实现,采用命令终端方式展示信息,会生成一个exe小文件,所以大家只要会C就可以轻松做上位机设计。


视频:

https://www.bilibili.com/video/BV1YB4y1t7pm




协议:
image.png


参考资料:
1、上位机和下位机例子下载:
链接:https://pan.baidu.com/s/1_Qs-S7qYtTuyAsxS_uhdQw  提取码:ezsd

2、msys2安装:
https://www.msys2.org/

3、协议介绍:
http://textfiles.com/programming/ymodem.txt
https://en.wikipedia.org/wiki/YMODEM
https://en.wikipedia.org/wiki/XMODEM

评分

参与人数 1金币 +20 收起 理由
mydeng + 20 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-8-8 13:56:54 | 显示全部楼层
更新完毕。
回复

使用道具 举报

3

主题

1216

回帖

1225

积分

至尊会员

积分
1225
发表于 2022-8-8 14:18:21 | 显示全部楼层
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-8-8 14:39:33 | 显示全部楼层
收藏
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-8-8 14:46:30 | 显示全部楼层
学习了
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
发表于 2022-8-8 18:27:09 | 显示全部楼层
硬汉哥,这个可以和下位机做个在线升级工具吧,看能不能拓展一下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-8-8 19:18:46 | 显示全部楼层
mexico007 发表于 2022-8-8 18:27
硬汉哥,这个可以和下位机做个在线升级工具吧,看能不能拓展一下

可以的,大家可以拓展下。
回复

使用道具 举报

3

主题

134

回帖

143

积分

初级会员

积分
143
发表于 2022-8-8 22:38:58 | 显示全部楼层
视频通俗易懂,这种上位机适合自己调试的适合用,不能打包生成独立exe供别人用吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-8-9 00:17:55 | 显示全部楼层
浴火重生 发表于 2022-8-8 22:38
视频通俗易懂,这种上位机适合自己调试的适合用,不能打包生成独立exe供别人用吧

可以,能生成独立的exe文件。楼主位百度云给大家分享的就是带了一个exe文件。
回复

使用道具 举报

6

主题

126

回帖

144

积分

初级会员

积分
144
发表于 2022-8-9 10:52:14 | 显示全部楼层
硬汉大哥,XYZmodem协议可以用到产品里面吗,看好多人升级都是私有协议,是怕被人给误升级吗
回复

使用道具 举报

3

主题

134

回帖

143

积分

初级会员

积分
143
发表于 2022-8-9 13:40:42 | 显示全部楼层
eric2013 发表于 2022-8-9 00:17
可以,能生成独立的exe文件。楼主位百度云给大家分享的就是带了一个exe文件。

每次还是要编译,因为包含有bin文件路径,不能直接用
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-8-9 16:29:13 | 显示全部楼层
浴火重生 发表于 2022-8-9 13:40
每次还是要编译,因为包含有bin文件路径,不能直接用

不用,你固定好路径即可,我这里没问题。
image.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-8-9 16:30:38 | 显示全部楼层
role_2099 发表于 2022-8-9 10:52
硬汉大哥,XYZmodem协议可以用到产品里面吗,看好多人升级都是私有协议,是怕被人给误升级吗

这个没关系,可以对传输文件做AES加密。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2022-8-10 19:12:06 | 显示全部楼层
ymodem协议发送文件的时候,串口不能设置为偶校验吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-8-11 14:27:27 | 显示全部楼层
jinjinos 发表于 2022-8-10 19:12
ymodem协议发送文件的时候,串口不能设置为偶校验吗?

没问题,不过本身已经有CRC16校验了,再做奇偶校验意义不大了
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2022-8-11 21:44:46 | 显示全部楼层
eric2013 发表于 2022-8-11 14:27
没问题,不过本身已经有CRC16校验了,再做奇偶校验意义不大了

我的板卡串口设置的是偶校验,移植了ymodem协议之后,使用SecureCRT发送ymodem数据时,secureCRT自动把串口改为无校验了
回复

使用道具 举报

73

主题

667

回帖

886

积分

金牌会员

积分
886
发表于 2022-8-11 22:38:30 | 显示全部楼层
赞一个
回复

使用道具 举报

2

主题

50

回帖

56

积分

初级会员

积分
56
发表于 2022-9-17 12:43:53 | 显示全部楼层
第1阶段: 同步
    从机给主机发送同步字符 C

这个代码好像没有体现到呀
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-9-17 16:57:55 | 显示全部楼层
ruboss 发表于 2022-9-17 12:43
第1阶段: 同步
    从机给主机发送同步字符 C

对,我把这部分去掉了,不方便展示。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-10-18 10:18:17 | 显示全部楼层
如果文件大小是1024字节,那它是直接转成字符串放在起始帧中,还是转成它的十六进制0x400再转成字符串放到起始帧中?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-10-18 13:03:16 | 显示全部楼层
凤梨罐头 发表于 2022-10-18 10:18
如果文件大小是1024字节,那它是直接转成字符串放在起始帧中,还是转成它的十六进制0x400再转成字符串放到 ...

直接原始数据收发的。
回复

使用道具 举报

94

主题

297

回帖

579

积分

金牌会员

123

积分
579
发表于 2023-2-24 08:41:23 | 显示全部楼层
eric2013 发表于 2022-10-18 13:03
直接原始数据收发的。

这个ymodem协议软件,有界面版本的吗?直接可用的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2023-2-24 09:40:09 | 显示全部楼层
ssssssss 发表于 2023-2-24 08:41
这个ymodem协议软件,有界面版本的吗?直接可用的

没做界面方式,就简单做了个命令行的。
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2023-3-19 19:26:16 | 显示全部楼层
本帖最后由 tjx0512 于 2023-3-19 19:28 编辑

分享个C#的简易ymodem上位机源码,自己用在自制的SWD简易烧录器上.

YmodemC#.rar

136.08 KB, 下载次数: 39

回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-7-25 08:11:52 | 显示全部楼层
当单片机用ymodem作为发送方时,发送较大文件时,应该怎么准备待发送数据,,,没法申请整个文件大小的内存
C:\Users\win10\Desktop\QQ截图20230725081105.bmp
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2023-7-25 08:50:30 | 显示全部楼层
tjx0512 发表于 2023-3-19 19:26
分享个C#的简易ymodem上位机源码,自己用在自制的SWD简易烧录器上.

谢谢分享。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2023-7-25 08:50:41 | 显示全部楼层
1026481385 发表于 2023-7-25 08:11
当单片机用ymodem作为发送方时,发送较大文件时,应该怎么准备待发送数据,,,没法申请整个文件大小的内存

图片没上传上。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-7-26 08:53:19 | 显示全部楼层

就是从一号单片机读内存卡文发送到二号单片机内存卡,,一号该怎么准备待发送数据,看帖子里是一次性提前读完的, QQ截图20230725081105.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2023-7-27 06:43:16 | 显示全部楼层
1026481385 发表于 2023-7-26 08:53
就是从一号单片机读内存卡文发送到二号单片机内存卡,,一号该怎么准备待发送数据,看帖子里是一次性提前读 ...

对,我是一次性全部申请了,电脑的内存足够大,申请个几十MB很方便。所以我这里就直接全部申请了。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-3-5 11:10:26 | 显示全部楼层
大佬,Zmodem协议资料在哪里能找到啊?
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 5 小时前 | 显示全部楼层
硬汉哥你好,看了你的Ymodem程序,有一点不明白,为何要在改写缓冲区读指针的时候进行临界区保护呢?缓冲区BUFFSIZE大小是固定的,而且中断也只会影响写指针而不会影响读指针,为何要对读指针进行保护呢?
回复

使用道具 举报

6

主题

22

回帖

40

积分

新手上路

积分
40
发表于 5 小时前 | 显示全部楼层

else
        {
                *_pByte = _pUart->pRxBuf[_pUart->usRxRead];                /* 从串口接收FIFO取1个数据 */

                /* 改写FIFO读索引 */
                DISABLE_INT();
                if (++_pUart->usRxRead >= _pUart->usRxBufSize)
                {
                        _pUart->usRxRead = 0;
                }
                _pUart->usRxCount--;
                ENABLE_INT();
                return 1;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-3-29 20:55 , Processed in 0.380765 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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