在APROM中我觉得这样编写程序就可以了:
1. 接收命令包头如256字节,检查确定后续的IAP代码是否有效。
u8 IAPStart(u8* ptr,u32 addr,u16 len);
2. void IAProgram(u8* ptr,u32 addr,u16 len);
将接收到的数据包,对APROM擦除和编程。重复当前操作,直至完全编程。
3. void IAPComplete(u8* ptr,u32 addr,u16 len);
检查编程数据的完整性,确定IAP代码是否可以被运行,并设置IAP完成标志。
如果主程序/引导程序在初始化程序检测到IAP完成标志为真,那么IAP程序即可被运行;反之需要重新IAP,这可以保证在IAP过程中,不至于变为砖头。 |