用stm32f103RE单片机做IAP串口远程升级,APP大于ram,这个怎么办?没有接外部flash。
如果把串口数据直接放到内部flash里必须用协议分包往里写么?可不可以指定一个内部flash地址的数组,然后把接收的串口数据放到数组里,然后再更新,这个是否可行,具体该怎...
如果把串口数据直接放到内部flash里必须用协议分包往里写么?可不可以指定一个内部flash地址的数组,然后把接收的串口数据放到数组里,然后再更新,这个是否可行,具体该怎么操作?
展开
1个回答
展开全部
IAP升级要程序要十分严谨的,你把升级文件做个校验CRC或者别的校验,把串口接收到的数据直接写入到单片机内部FLASH,把APP所有数据写入完成,在从你写入的地址到结束的地址,
把里面数据进行校验,如果正确直接跳转IAP.
把里面数据进行校验,如果正确直接跳转IAP.
追问
那往单片机内部flash里放数据的方法是直接用flash读写的方式呢?还有就是能不能实现在内部flash指定的一个地址开辟一个数据,把串口接收的数据放到这个指定的数组里,如果这样可以的话需要怎么写这个程序?u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0x08040000)));这个我试验数据放不进去。
追答
在单片机知道区域写入串口数据当然是可以的,你这样写是不对的,你还是看看STM32内部FLASH寄存器,看看是怎么写入数据的,
需要解锁FLASH擦除FLASH写入FLASH写入完成锁定FLASH的,写FLASH没有那么简单的,你还是看看手册和官方DEMO.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询