你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
zhao.zhao 发表于 2019-1-27 13:38 方案: 1、设计一个BOOT程序,开机30秒(实际等待实间可调)内没有串口升级要求,跳转到应用程序中运行 ...
yklstudent-1794 发表于 2019-1-27 16:17 为什么要搞30秒开机等待升级,有需要就直接进BOOT,无需要就直接进APP啊
zhao.zhao 发表于 2019-1-28 11:49 1、一般BOOT程序比较小,FlASH中占的空间是有限的,且基本不变,但是应用程序大小可能变化比较大,所以BO ...
斯文人 发表于 2019-2-13 15:51 这样有可能出现一个问题就是当我在接收到一页数据,然后开始写falsh时候,此时如果上位机还在通过串口发 ...
串口收发就不怀疑了;
那么flash到底是写出问题,还是读出的问题,总得验证吧?
还是说串口发送和flash写操作没协调好呢?
串口升级程序,这些都是得定好协议的。串口往下发送时都带着协议头、尾、长度、校验等信息的,一般是串口往下传一批数据,往flash写一批数据;然后下位机告诉上位机,已经写结束了,上位机才再次往下传下一批数据的。
评分
查看全部评分
评分
查看全部评分
至少确认一包成功了才能进行下一包的发送啊
评分
查看全部评分
评分
查看全部评分
1、设计一个BOOT程序,开机30秒(实际等待实间可调)内没有串口升级要求,跳转到应用程序中运行正常程序,串口有升级要求,则进入升级进程;
2、升级程序可以根据MCU的FLASH一个页面多少字节,设计每个串口接收的数据帧相同字节数,再加个帧头帧尾校验等,当串口接收完成一帧数据后,解出实际需要的帧数据字节,这些数据存在SRAM内,一般最多4K字节/页面,然后将SRAM内的数据一次性写入FLASH对应的页面内;完成后对该串口发出应答,告诉上位机,写入完成,准备下一帧数据的传输。以此类推,可以完成串口升级。
3、升级完成后,重启,30秒后,进入升级过的程序。
评分
查看全部评分
为什么要搞30秒开机等待升级,有需要就直接进BOOT,无需要就直接进APP啊
评分
查看全部评分
1、一般BOOT程序比较小,FlASH中占的空间是有限的,且基本不变,但是应用程序大小可能变化比较大,所以BOOT程序应该放在前面,应用程序放在后面。
2、应用程序中该串口只能用于升级用,不做别的应用时是可以的,如果还有别的应用,又要升级用,那处理就相对比较麻烦了。
这样有可能出现一个问题就是当我在接收到一页数据,然后开始写falsh时候,此时如果上位机还在通过串口发升级数据给我,因为正在操作写falsh,所以串口中断无法产生,就会导致丢数问题。除非是写falsh期间告诉上位机,别发数据了,等我写完了你在发,难道只能这样异步进行吗,不可以边接收数据,边写falsh吗?(以上所讲的flash都是内部falsh)
解决这个问题一定要有串口升级协议的,上位机发完一定数量的数据后要等待单片机的应答,然后再发后面的数据,否则的话只能加高速缓存接受完所有数据再写FLASH升级。FLASH写速度比较慢,不能指望一边接收串口数据一边写。