OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6236|回复: 24

公司需要给客户做一个IAP更新的功能,需要用串口接收BIN来更新,有一些问题请大家指教

[复制链接]

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
发表于 2016-11-2 10:10:20 | 显示全部楼层 |阅读模式
10金钱
一,公司目前在做GPS一个项目,芯片用的是STM32F107VB,目前需要用串口接收.bin更新程序;
二,我们目前的程序有300K字节左右,无外挂SRAM,片上SRAM也就64KB,如果按照原子哥说的串口接收.bin缓冲,暂存在SRAM中,可是我们的程序300K,那接收不了这么大文件,此时应该怎么办;

最佳答案

查看完整内容[请看2#楼]

随便一个terminal都支持xyzmodem,直接一边接受一边写就行了,哪里搞得这么麻烦,300K也不少,用128字节比较慢,可以采用XMODEM-1K,你只需要提供一个1K的buffer即可,这个buffer你可以动态或者静态获取!接收完再通知terminal发送下一个包即可(这个是xyzmodem自身协议)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2016-11-2 10:10:21 | 显示全部楼层
mupb 发表于 2016-11-3 11:40
今天在淘宝上问原子哥了,他也说如果要控制串口每次发送N个字节需要自己做一个上位机,但是目前的条件不 ...

随便一个terminal都支持xyzmodem,直接一边接受一边写就行了,哪里搞得这么麻烦,300K也不少,用128字节比较慢,可以采用XMODEM-1K,你只需要提供一个1K的buffer即可,这个buffer你可以动态或者静态获取!接收完再通知terminal发送下一个包即可(这个是xyzmodem自身协议)
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2016-11-2 10:31:36 | 显示全部楼层
107VB的FLASH是256KB,SRAM是64KB。
你300多KB

不管哪种,想一次性收全,得外扩个暂存区。如SPI FLASH。
或MCU最前面放个小的boot,然后boot里面接收数据直接写入。
收全并校验通过后再去RUN。
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-2 10:42:19 | 显示全部楼层
aozima 发表于 2016-11-2 10:31
107VB的FLASH是256KB,SRAM是64KB。
你300多KB

板子上有外挂Flash,不用担心容量的问题,只是在接收.bin时,串口接收后我保存在哪是个问题
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-2 10:43:37 | 显示全部楼层
aozima 发表于 2016-11-2 10:31
107VB的FLASH是256KB,SRAM是64KB。
你300多KB

你的意思是 不需要缓冲区,直接用Bootloader接收程序,边接收边写入的意思吗
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-11-2 15:53:58 | 显示全部楼层
没上位机不好弄,很容易变砖。最好有上位机,然后每次发送一定的数据并带校验码,bootloader里面对接收数据进行校验保证数据正确性。
这样可以边收边写flash,因为你的内存不够,无法全部接收后写入。所以只能这样。等全部上传完毕后可以边读文件边写。
另外原子的iap_write_appbin函数你要改写才行。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-2 16:04:45 | 显示全部楼层
ysq7120 发表于 2016-11-2 15:53
没上位机不好弄,很容易变砖。最好有上位机,然后每次发送一定的数据并带校验码,bootloader里面对接收数据 ...

赞同,另外原子自己提供的上位机可以命令串口每60字节传输一次吗?我同事说x、y、zmodem协议可以控制串口每次传输多少字节,不知道是不是有这么个协议,望不吝赐教啊
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2016-11-2 16:48:11 | 显示全部楼层
mupb 发表于 2016-11-2 16:04
赞同,另外原子自己提供的上位机可以命令串口每60字节传输一次吗?我同事说x、y、zmodem协议可以控制串口 ...

Xmode 协议每次128个字节.你也可以自己做上位机,做成缓冲区1024个字节.这样子会效率高一些.Xmode 协议网上有.查得到.很详细.
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-2 17:09:42 | 显示全部楼层
操作系统 发表于 2016-11-2 16:48
Xmode 协议每次128个字节.你也可以自己做上位机,做成缓冲区1024个字节.这样子会效率高一些.Xmode 协议网 ...

自己做上位机得有VB编程基础,只有C和C++基础,目前主要用C,你的意思是Xmodem是可以控制的是吗?那么我把Xmodem的源码找来就可以实现了吗?
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-11-2 17:26:20 | 显示全部楼层
mupb 发表于 2016-11-2 16:04
赞同,另外原子自己提供的上位机可以命令串口每60字节传输一次吗?我同事说x、y、zmodem协议可以控制串口 ...

没用过这个协议,但是如果你有上位机,那么要怎么定义串口协议都可以。只要能达到安全方便传送完你的升级数据就行。以前公司的产品都是跟网络协议通用的,所以采用的都是MTU的长度。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2016-11-2 17:30:53 | 显示全部楼层
mupb 发表于 2016-11-2 17:09
自己做上位机得有VB编程基础,只有C和C++基础,目前主要用C,你的意思是Xmodem是可以控制的是吗?那么我 ...

Xmode有上位机了.你把MCU的代码写好就行了.网上有支持XCODE的上位机下载.好像我自己也有做过一个.
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-3 11:40:17 | 显示全部楼层
操作系统 发表于 2016-11-2 17:30
Xmode有上位机了.你把MCU的代码写好就行了.网上有支持XCODE的上位机下载.好像我自己也有做过一个.

今天在淘宝上问原子哥了,他也说如果要控制串口每次发送N个字节需要自己做一个上位机,但是目前的条件不允许所以就pass了;然后第二种是直接写入flash,怎么写呢?我们必须串口更新,他说用flash模拟eeprom应该可以实现,今天读了那个实验,你们看我说的对不对哈。内部Flash模拟EEPROM,把数据最终存储在了内部FLASH中,只是省去了SPI传输数据这一块,这是其一;其二呢,我这边的程序比较大,大约260KB左右(缩减了代码),毕竟原子实验只是定义了一个const u8 TEXT_Buffer[]={"STM32 FLASH TEST"};这样的数据包,很小,根本不能满足大程序的写入。求求各位同仁了,这项目还有救吗?
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-3 14:13:30 | 显示全部楼层
our单片机 发表于 2016-11-3 11:54
随便一个terminal都支持xyzmodem,直接一边接受一边写就行了,哪里搞得这么麻烦,300K也不少,用128字节 ...

还是要用支持XMODEM-1K协议的上位机来实现吧
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-3 14:46:11 | 显示全部楼层
mupb 发表于 2016-11-3 14:13
还是要用支持XMODEM-1K协议的上位机来实现吧

麻烦大家了,上位机找到了,公司本来就有,支持xmodem 、y、 z、 1K协议,谢谢大家这么热心回答。
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-4 11:07:21 | 显示全部楼层
our单片机 发表于 2016-11-2 10:10
随便一个terminal都支持xyzmodem,直接一边接受一边写就行了,哪里搞得这么麻烦,300K也不少,用128字节 ...

兄台啊,我的问题还是没有解决,加我QQ,帮忙指导一下吧,524156617,感激不尽,事后有重谢
回复

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2016-11-6 21:16:32 | 显示全部楼层
mupb 发表于 2016-11-4 11:07
兄台啊,我的问题还是没有解决,加我QQ,帮忙指导一下吧,524156617,感激不尽,事后有重谢

解决了没,如果没解决,我可以私下给你提供源码
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-7 10:03:56 | 显示全部楼层
our单片机 发表于 2016-11-6 21:16
解决了没,如果没解决,我可以私下给你提供源码

没呢,兄台,请助我一臂之力,不胜感激。加下我QQ吧,在15楼。
回复

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2016-11-7 14:21:25 | 显示全部楼层
mupb 发表于 2016-11-7 10:03
没呢,兄台,请助我一臂之力,不胜感激。加下我QQ吧,在15楼。

抱歉,加QQ就免了吧,你留下邮箱,我会把源码发到你邮箱中,你自行参考即可!
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-7 14:38:13 | 显示全部楼层
our单片机 发表于 2016-11-7 14:21
抱歉,加QQ就免了吧,你留下邮箱,我会把源码发到你邮箱中,你自行参考即可!

hxtj_mupb@126.com,感谢
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-7 14:55:07 | 显示全部楼层
外挂一片flash解决~
回复

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2016-11-7 16:09:08 | 显示全部楼层

已发!               
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2016-11-13 16:53:05 | 显示全部楼层
x/y/z modem 协议的上位机很多,PC机自带的超级终端、secureCRT都支持该协议。实现起来不难
回复

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2016-11-13 17:18:57 | 显示全部楼层
mark
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-11-14 18:42:02 | 显示全部楼层
1375917982gxut 发表于 2016-11-13 16:53
x/y/z modem 协议的上位机很多,PC机自带的超级终端、secureCRT都支持该协议。实现起来不难

源码移植过来了,想用超级终端,听人说超级终端只支持XP、WIN7-32,公司电脑全是64位,而且secureCRT不支持最新的Ymodem协议,我是用的ST官网的IAP更新移植过来的,有资源请帮忙分享下,谢谢
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2016-11-14 22:14:14 | 显示全部楼层
mupb 发表于 2016-11-14 18:42
源码移植过来了,想用超级终端,听人说超级终端只支持XP、WIN7-32,公司电脑全是64位,而且secureCRT不支 ...

SecureCRT有很多版本的,支持xyz modem,很好用
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 03:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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