2019-12-11 18:20发布
zhangsusu 发表于 2015-9-30 03:40 我们设想的方案 是用一个stm8 + flash 当做stm32的下载器 gprs 把程序交给stm8 stm8通过swd 更新stm32的代 ...
zhangsusu 发表于 2015-9-30 03:38 您有没有验证过的方案 莫元给您没问题
最多设置5个标签!
我觉得没必要,STM8通过SWD更新STM32的话,还要吃透SWD才行,这方面容易出问题。
不会有完整的方案,顶多给个思路而已,具体的东西还要自己做才行。
IAP升级说白了就是代码区的覆盖,将新代码覆盖到代码区而已,我们所作的就是围绕这一目标怎么去实现它。
完全可以外挂个FLASH作为代码临时存储,通过GPRS接收IAP升级数据存储到外部FLASH,在接收完毕后如果校验完毕,复位进入bootloader,在bootloader中将原有的APP代码区复制到指定存储区作为回滚备份,然后执行正常的IAP升级覆盖即可。如果想回滚,复位后在bootloader按照一定方式将备份的代码覆盖回代码区即可。
这样有个问题就是如果升级文件本身有问题,导致升级后进入APP卡死,不能复位到bootloader也不能连接GPRS升级。这时候就可以通过增加一个STM8作为复位控制,当STM8检测到STM32启动后未能正确运行,通过对RST的控制使STM32复位进入bootloader,bootloader在跳转至APP之前进行判断,如果是升级后无法正常运行而多次复位的话,自动回滚。
我验证过啦,比如也不会一下子拿出那张图
一周热门 更多>