先说下我的问题。正常一个bootloader,一个APP跳转是没问题的。然后我想搞两个APP。具体的流程如下
Flash总大小为1M字节(1024KB) ,再考虑到擦除的时候只能扇区擦除。分配如下 扇区0-2 总大小48KB 存bootloader代码 扇区 3 总大小16KB 存boottable表 扇区4-7 总大小448KB 存APP1 扇区8-11 总大小512KB 存APP2 为了保证APP1和APP2区一样大,我们规定APP固件大小不能大于448KB bootloader代码仅仅用来读取boottable表来确定应该跳转到哪个APP。在应用中需要升级的时候,先读取table。
如果当前是运行在APP1区,则将固件写入APP2区,校验正确之后修改table。软件复位之后就能运行APP2新的固件。
然后我发现这样的话,我生成两个固件的时候必须要自己先区分APP1和APP2,两个固件要分别做工程,偏移的地址不一样(要修改IROM1的内容),那这样太容易搞混了。
当然,我也可以把APP1区作为代码运行区。APP2区作为新固件存放区。但是这样的话总是没有两个运行区好的。
所以想请教下有什么方法吗?我自己对比了APP生成bin文件时候修改IROM偏移和不修改,两bin文件是有不同的。
|