IAP的思路

1。将flash分为boot、a、b三个区; 
2。应用程序总是运行a区代码; 
3。在a区设有两个标记:a区代码有效标记和升级请求标记; 
4。在b区设有一个标记:b区代码有效标记; 
5。对flash破_处时使用JTAG工具同时写入boot代码、应用程序代码到a区、应用程序代码到b区(可选)、擦除升级请求标记、设置a区代码有效标记、设置b区代码有效标记(可选); 
6。上电时首先进入boot区,boot代码检查有无升级请求,若没有升级请求,则检查a区代码是否有效,若a区代码有效,则执行a区代码;很明显,flash破_处后满足这一要求,a区代码被执行。 
7。运行时若有升级请求,则应用程序响应升级请求,但只是在a区打上升级请求标记,然后放狗咬人; 
8。咬人狗导致系统复位后,boot代码查到升级请求标记,转入升级程序; 
9。升级程序擦除b区代码有效标记、擦除b区代码(看出对flash破_处时,为什么应用程序代码到b区是可选的); 
10。升级程序写入新代码到b区、设置b区代码有效标记; 
11。升级程序擦除a区代码有效标记、擦除a区代码; 
12。升级程序拷贝b区代码到a区、设置a区代码有效标记; 
13。升级程序擦除升级请求标记。 
14。升级程序转入a区运行新代码。 
15。如果上位机中途放弃升级,应有明确的放弃指令下传。下位的升级程序检查a区代码是否有效,若a区代码有效,则擦除升级请求标记,同意放弃升级。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值