打印
[单片机芯片]

CH559/549 IAP 升级失败问题

[复制链接]
4003|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
精灵魔仙|  楼主 | 2021-9-3 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前通过用户程序检查PIN脚来决定是否跳转到IAP程序,
那么IAP在升级过程中由于某些原因,比如突然断电,导致用户程序被擦除,
但是新的程序没有更新完成,那么重新上电后会出现什么情况?

感觉此时只能通过进入芯片自带的bootloader来升级。
是否可以在升级失败时上电自动跳转到用户的IAP? 感觉应该在0x00地址处再写一段检测跳转程序,但是由于flash块大小为1K,所以必须浪费开始的1k空间用于实现这种功能,是否有更简洁的方法?

使用特权

评论回复
沙发
caigang13| | 2021-9-5 19:16 | 只看该作者
正常做法是,存放APP的flash分为两块区域主和备,主区域存放需要运行的固件,备区域存放升级固件,每次升级时先将固件写到备区域并设置标志位,然后软重启,IAP中会去读取这个标志位,如果有效则代表有固件更新,并将备区域的固件复制到主区域。这样便能解决在写升级固件时,突然断电的问题。

使用特权

评论回复
板凳
精灵魔仙|  楼主 | 2021-9-6 11:17 | 只看该作者
caigang13 发表于 2021-9-5 19:16
正常做法是,存放APP的flash分为两块区域主和备,主区域存放需要运行的固件,备区域存放升级固件,每次升级 ...

感谢回复,您所说的是最传统的方式,这样要浪费一半的FLASH,我的意思是在升级失败后能够上电后自动跳转到用户的IAP,以进行再次升级,而不需要原来的程序继续运行,只需要失败后自动跳转到IAP。

使用特权

评论回复
地板
caigang13| | 2021-9-7 08:41 | 只看该作者
那就在APP开头放置一段标志位

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

5

帖子

1

粉丝