最近使用串口做了一个stm32的串口远程更新的项目,思路是先把更新的需要更新的.hex文件下载到本地上位机,然后串口通知stm32,stm32切换到IAP,返回上位机,上位机开始串口向stm32发送更新文件内容,这样完成单片机app程序的更新。 与之前有不同的是:1,根据.hex文件格式做检验,这样可以有效防止更新代码有问题或者串口发送出错造成stm32程序的不可远程修复的错误。.hex文件主要是有每行开始的:,数据长度字节,地址字节,功能码字节,数据字节以及校验字节组成。这里在上位机时做处理,先去掉每行开头的“:”,然后一行一行发送.hex文件。下位机根据数位数据长度字节接收一行数据后进行校验,校验成功后把程序数据写入flash,如果出错则串口通知上位机更新出错,结束更新,然后切换到APP程序。程序下载检验完成以后把flash里的数据写入SARM固化。
2,这里把app程序放在sarm开始端,上电后直接进入app程序,避免IAP程序和APP程序的来回切换。在接收到更新指令后再从app程序切换到iap程序,更新完成后再切换到APP程序。
在项目的过程中遇到的问题:在IAP程序和APP程序切换的时候一定要注意不能再中断里切换,开始时候再串口中断里做的切换,切换后串口无法使用,导致切换不回去。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>