BSP视频教程第22期:基于串口的XYZmodem文件传输协议实现,含上位机和下位机全开源,制作了一个Ymodem方式固件更新(2022-08-08)
本期视频教程为大家分享串口专题的XYZmodem的文件传输协议实现,视频中以Ymodem为例,制作了一个Ymodem方式固件更新,为大家介绍Ymodem的上位机和下位机通信实现。上位机我们直接采用VSCode配合C编译器实现,采用命令终端方式展示信息,会生成一个exe小文件,所以大家只要会C就可以轻松做上位机设计。
视频:
https://www.bilibili.com/video/BV1YB4y1t7pm
https://www.bilibili.com/video/BV1YB4y1t7pm?share_source=copy_web&vd_source=d44616830364cd4a0c9df5e79c9b33df
协议:
参考资料:
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
更新完毕。 {:34:}{:8:} 收藏:handshake 学习了{:34:} 硬汉哥,这个可以和下位机做个在线升级工具吧,看能不能拓展一下 mexico007 发表于 2022-8-8 18:27
硬汉哥,这个可以和下位机做个在线升级工具吧,看能不能拓展一下
可以的,大家可以拓展下。 视频通俗易懂,这种上位机适合自己调试的适合用,不能打包生成独立exe供别人用吧 浴火重生 发表于 2022-8-8 22:38
视频通俗易懂,这种上位机适合自己调试的适合用,不能打包生成独立exe供别人用吧
可以,能生成独立的exe文件。楼主位百度云给大家分享的就是带了一个exe文件。 硬汉大哥,XYZmodem协议可以用到产品里面吗,看好多人升级都是私有协议,是怕被人给误升级吗 eric2013 发表于 2022-8-9 00:17
可以,能生成独立的exe文件。楼主位百度云给大家分享的就是带了一个exe文件。
每次还是要编译,因为包含有bin文件路径,不能直接用 浴火重生 发表于 2022-8-9 13:40
每次还是要编译,因为包含有bin文件路径,不能直接用
不用,你固定好路径即可,我这里没问题。
role_2099 发表于 2022-8-9 10:52
硬汉大哥,XYZmodem协议可以用到产品里面吗,看好多人升级都是私有协议,是怕被人给误升级吗
这个没关系,可以对传输文件做AES加密。 ymodem协议发送文件的时候,串口不能设置为偶校验吗? jinjinos 发表于 2022-8-10 19:12
ymodem协议发送文件的时候,串口不能设置为偶校验吗?
没问题,不过本身已经有CRC16校验了,再做奇偶校验意义不大了 eric2013 发表于 2022-8-11 14:27
没问题,不过本身已经有CRC16校验了,再做奇偶校验意义不大了
我的板卡串口设置的是偶校验,移植了ymodem协议之后,使用SecureCRT发送ymodem数据时,secureCRT自动把串口改为无校验了
赞一个 第1阶段: 同步
从机给主机发送同步字符 C
这个代码好像没有体现到呀 ruboss 发表于 2022-9-17 12:43
第1阶段: 同步
从机给主机发送同步字符 C
对,我把这部分去掉了,不方便展示。 如果文件大小是1024字节,那它是直接转成字符串放在起始帧中,还是转成它的十六进制0x400再转成字符串放到起始帧中? 凤梨罐头 发表于 2022-10-18 10:18
如果文件大小是1024字节,那它是直接转成字符串放在起始帧中,还是转成它的十六进制0x400再转成字符串放到 ...
直接原始数据收发的。 eric2013 发表于 2022-10-18 13:03
直接原始数据收发的。
这个ymodem协议软件,有界面版本的吗?直接可用的 ssssssss 发表于 2023-2-24 08:41
这个ymodem协议软件,有界面版本的吗?直接可用的
没做界面方式,就简单做了个命令行的。 本帖最后由 tjx0512 于 2023-3-19 19:28 编辑
分享个C#的简易ymodem上位机源码,自己用在自制的SWD简易烧录器上. 当单片机用ymodem作为发送方时,发送较大文件时,应该怎么准备待发送数据,,,没法申请整个文件大小的内存
C:\Users\win10\Desktop\QQ截图20230725081105.bmp tjx0512 发表于 2023-3-19 19:26
分享个C#的简易ymodem上位机源码,自己用在自制的SWD简易烧录器上.
谢谢分享。 1026481385 发表于 2023-7-25 08:11
当单片机用ymodem作为发送方时,发送较大文件时,应该怎么准备待发送数据,,,没法申请整个文件大小的内存
图片没上传上。 eric2013 发表于 2023-7-25 08:50
图片没上传上。
就是从一号单片机读内存卡文发送到二号单片机内存卡,,一号该怎么准备待发送数据,看帖子里是一次性提前读完的,
1026481385 发表于 2023-7-26 08:53
就是从一号单片机读内存卡文发送到二号单片机内存卡,,一号该怎么准备待发送数据,看帖子里是一次性提前读 ...
对,我是一次性全部申请了,电脑的内存足够大,申请个几十MB很方便。所以我这里就直接全部申请了。 大佬,Zmodem协议资料在哪里能找到啊? 硬汉哥你好,看了你的Ymodem程序,有一点不明白,为何要在改写缓冲区读指针的时候进行临界区保护呢?缓冲区BUFFSIZE大小是固定的,而且中断也只会影响写指针而不会影响读指针,为何要对读指针进行保护呢? eric2013 发表于 2022-8-8 13:56
更新完毕。
else
{
*_pByte = _pUart->pRxBuf; /* 从串口接收FIFO取1个数据 */
/* 改写FIFO读索引 */
DISABLE_INT();
if (++_pUart->usRxRead >= _pUart->usRxBufSize)
{
_pUart->usRxRead = 0;
}
_pUart->usRxCount--;
ENABLE_INT();
return 1; zanyu 发表于 2024-3-5 11:10
大佬,Zmodem协议资料在哪里能找到啊?
协议介绍:
http://textfiles.com/programming/ymodem.txt
https://en.wikipedia.org/wiki/YMODEM
https://en.wikipedia.org/wiki/XMODEM 麦克斯韦Maxwell 发表于 2024-3-29 15:13
else
{
*_pByte = _pUart->pRxBuf; /* 从串口接收FIFO取1个数据 */
读的地方,大家可以考虑去掉临界保护。 你好,Ymodem协议传输,软件指定传输地址,传输数据较少可直接放内存操作,数据较大放不下,我想将数据直接写入spi flash, 一遍擦除一边写入可行?
newbie 发表于 2024-5-9 10:34
你好,Ymodem协议传输,软件指定传输地址,传输数据较少可直接放内存操作,数据较大放不下,我想将数据直接 ...
完全可行。
页:
[1]