写在前面的废话
众所周知,ECU软件包括BOOT和APP两部分,一般来说,boot是固化的软件,改动可能性很小,一般用来更新APP,但是,如果有一天boot真的需要更新呢,而且是大批量的更新,真的需要一个个的开盖烧录吗,有没有一种便捷的方式去实现boot的替换呢?下面提供一种boot替换的方法。
主要思想就是,将新编译的boot文件作为APP的一部分下载到flash中去,在app中擦除掉原来的boot的flash区域,再将新的boot文件写入到原来的flash区域,之后,软件复位即可。需要注意,需要约定好boot在app中的映射地址。另外,因为flash大小限制,新组合的falsh不能超过最大范围,可以将原来APP的代码删除一部分,只留下和刷写相关的功能即可。
1.首先通过编译得到最新的boot的源文件,如S19文件
2.根据约定好的映射地址,修改boot文件的起始地址,并进行代码块的填充
3.将boot和app文件合并,即选择hexview中的Merge功能
app中需要做的事情就是擦除对应区域的代码,以及重新写入: