3795|17

50

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

串口一次性发送14k数据,单片机如何接收 [复制链接]

 

各位大神好,最近我在摸索bootloader的编写,卡在串口接收数据这一步了。

单片机是msp430,通过串口接收到文件数据并进行APP升级,文件数据在两个c文件都有处理。之前我测试的时候,LED文件数据只有400个字节,当时使用全局变量数组接收串口数据,这样的处理没问题。后来用日常工作的项目工程文件测试,它生成的txt文件有14k,而我的RAM只有4K,请问该如何接收这14k数据呢(当然也可能有25k的数据)

此帖出自单片机论坛

最新回复

方向没问题,只不过是上位机自动处理数据分段传输还是你手动处理数据分段。其他乱七八糟的都只是在这之上的保障措施。   详情 回复 发表于 2020-8-14 10:44
点赞 关注
 

回复
举报

50

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

小白第一次发帖,希望有人帮帮忙,不管有没有进展,都对各位感激不尽

此帖出自单片机论坛
 
 

回复

1972

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 

分段发送和接收,收到一段就烧写一段数据到flash中,直到接收完成后,再对烧录的数据进行校验比对是否数据准确无误

此帖出自单片机论坛
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

4
 
本帖最后由 luaffy 于 2020-8-13 09:25 编辑
bobde163 发表于 2020-8-13 09:10 分段发送和接收,收到一段就烧写一段数据到flash中,直到接收完成后,再对烧录的数据进行校验比对是否数据 ...

感谢您的指导

但是有一个问题,我没有配套的上位机,用的是传统的串口调试助手,在发送区直接发送数据,帧头帧尾都是要写入的flash地址,没有校验码,如果是分段发送和分段接收,可能容易接收到错误帧,或者说存放在错误的地址

因为是非专业人员操作的升级APP的步骤,按照流程来说,我只需把txt文件给他们,所以最好省略手动添加校验码

此帖出自单片机论坛

点评

没有上位机就自己写一个。没办法。  详情 回复 发表于 2020-8-13 09:26
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

5
 
luaffy 发表于 2020-8-13 09:22 bobde163 发表于 2020-8-13 09:10 分段发送和接收,收到一段就烧写一段数据到flash中,直到接收完成后, ...

没有上位机就自己写一个。没办法。

此帖出自单片机论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

6
 
freebsder 发表于 2020-8-13 09:26 没有上位机就自己写一个。没办法。

受各位的启发,我想这样行不行——

串口调试助手1000ms循环发送文件数据,我开辟一个1000大小的变量空间,接收满1000个字节后,检测最后一个字符是否结束标志“q”,不是的话就保存当前接收字节长度,关闭串口中断,存入flash后再清空变量并打开中断,下一次接收从上次的接收字节长度开始,将数据录入变量数组,依次循环....虽然肉眼可见的缓慢升级速度

孩子难啊,前辈们在忙别的项目,没有人帮我写上位机

 

此帖出自单片机论坛

点评

可以,麻烦而已  详情 回复 发表于 2020-8-13 12:40
可以用超级终端,用里面得协议就可以做升级,一般YMODE  详情 回复 发表于 2020-8-13 10:46
 
 
 

回复

650

帖子

8

TA的资源

纯净的硅(初级)

7
 
luaffy 发表于 2020-8-13 09:39 受各位的启发,我想这样行不行—— 串口调试助手1000ms循环发送文件数据,我开辟一个1000大 ...

可以用超级终端,用里面得协议就可以做升级,一般YMODE

此帖出自单片机论坛
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

8
 
29447945 发表于 2020-8-13 10:46 可以用超级终端,用里面得协议就可以做升级,一般YMODE

非常感谢

这个还没有尝试过,等会我试试看

此帖出自单片机论坛
 
 
 

回复

1万

帖子

25

TA的资源

版主

9
 

可以用超级终端或类似支持XModem/YModem协议的软件,虽然没有专用软件方便。最好有错误处理机制,在数据传输错误时,可以重新传输。

此帖出自单片机论坛
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

10
 
luaffy 发表于 2020-8-13 09:39 受各位的启发,我想这样行不行—— 串口调试助手1000ms循环发送文件数据,我开辟一个1000大 ...

可以,麻烦而已

此帖出自单片机论坛
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

11
 
dcexpert 发表于 2020-8-13 11:23 可以用超级终端或类似支持XModem/YModem协议的软件,虽然没有专用软件方便。最好有错误处理机制,在数据传 ...

您好,感谢您的建议

我电脑安装不了超级终端,找了一圈找到了章鱼调试助手1.6,先将就着试试看

此帖出自单片机论坛
 
 
 

回复

1万

帖子

142

TA的资源

版主

12
 

固件更新必须保证足够的可靠性,而为保证可靠性,不能简单单向直接连续发,那样的话,错一个位,全部固件就废了,甚至会影响到再次更新,导致设备彻底报废,这是绝对不可以的。所以,远程更新固件,数据的可靠性必须保证。如此,必须将固件拆成一系列小包,用协议打包,必须严格校验,用会话机制双向通迅,帧长度限制在系统RAM尺寸以内。非远程升级,在大幅放宽通迅中出错可能性时,可以用串口的9位模式,即按字节发送,奇偶校验,但依然得是会话式的。一个字节编程完后,回一个标志字节,上位机/编程器再发送下一个字节。校验未通过时,则返回特定的标志,然后重新发送,若干次失败则报错提醒。这是远程更新以及所有ISP、IAP编程的通用工艺。

此帖出自单片机论坛
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

13
 
chunyang 发表于 2020-8-13 15:12 固件更新必须保证足够的可靠性,而为保证可靠性,不能简单单向直接连续发,那样的话,错一个位,全部固件就 ...

谢谢谢谢,学到了学到了,那我就不在我的方案上浪费时间了

感谢您的指点

此帖出自单片机论坛
 
 
 

回复

4005

帖子

0

TA的资源

版主

14
 

把flash划分出两块,升级时写另外一块,以串口速度写flash应该没问题,写完后校验,没问题再切换到新系统。

此帖出自单片机论坛
 
 
 

回复

124

帖子

1

TA的资源

一粒金砂(中级)

15
 

python写个上位机小脚本挺简单的,定义个简单的数据帧格式

此帖出自单片机论坛
 
 
 

回复

321

帖子

1

TA的资源

一粒金砂(高级)

16
 

参照STM32的boot loader例程和说明里面详细描述了超级终端怎么使用,例程里面有ymodem的CRC算法例程可以直接拿来用

此帖出自单片机论坛
 
个人签名模电临时工
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

17
 

方向没问题,只不过是上位机自动处理数据分段传输还是你手动处理数据分段。其他乱七八糟的都只是在这之上的保障措施。

此帖出自单片机论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

18
 

任务接近尾声啦,感谢各位的指导!

左右都得给师傅写份整理文档,也了解到论坛里似乎没怎么讨论到bootloader,故贴出我的文档,希望能给到路人一点帮助

https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1137234&page=1&extra=#pid3002463

(不会指路,直接贴链接了)

此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表