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区代码有效,则擦除升级请求标记,同意放弃升级。 

你可能感兴趣的:(Flash,工具)