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

2019-07-20 18:53发布

一,公司目前在做GPS一个项目,芯片用的是STM32F107VB,目前需要用串口接收.bin更新程序;
二,我们目前的程序有300K字节左右,无外挂SRAM,片上SRAM也就64KB,如果按照原子哥说的串口接收.bin缓冲,暂存在SRAM中,可是我们的程序300K,那接收不了这么大文件,此时应该怎么办;

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
our单片机
1楼-- · 2019-07-20 21:16
mupb 发表于 2016-11-3 11:40
今天在淘宝上问原子哥了,他也说如果要控制串口每次发送N个字节需要自己做一个上位机,但是目前的条件不 ...

随便一个terminal都支持xyzmodem,直接一边接受一边写就行了,哪里搞得这么麻烦,300K也不少,用128字节比较慢,可以采用XMODEM-1K,你只需要提供一个1K的buffer即可,这个buffer你可以动态或者静态获取!接收完再通知terminal发送下一个包即可(这个是xyzmodem自身协议)
aozima
2楼-- · 2019-07-20 22:28
107VB的FLASH是256KB,SRAM是64KB。
你300多KB

不管哪种,想一次性收全,得外扩个暂存区。如SPI FLASH。
或MCU最前面放个小的boot,然后boot里面接收数据直接写入。
收全并校验通过后再去RUN。
mupb
3楼-- · 2019-07-21 02:12
aozima 发表于 2016-11-2 10:31
107VB的FLASH是256KB,SRAM是64KB。
你300多KB

板子上有外挂Flash,不用担心容量的问题,只是在接收.bin时,串口接收后我保存在哪是个问题
mupb
4楼-- · 2019-07-21 02:59
 精彩回答 2  元偷偷看……
ysq7120
5楼-- · 2019-07-21 07:39
没上位机不好弄,很容易变砖。最好有上位机,然后每次发送一定的数据并带校验码,bootloader里面对接收数据进行校验保证数据正确性。
这样可以边收边写flash,因为你的内存不够,无法全部接收后写入。所以只能这样。等全部上传完毕后可以边读文件边写。
另外原子的iap_write_appbin函数你要改写才行。
mupb
6楼-- · 2019-07-21 10:11
 精彩回答 2  元偷偷看……

一周热门 更多>