您好,NXP团队:
我正在研究 KW47双映像启动/OTA更新概念,我想澄清一下 ROM引导加载程序在启动期间如何选择最新的镜像。
据我所知,在双镜像设置中,内部闪存中可能有两个有效的应用程序镜像:
主映像 -> 地址由 ROMCFG/IFR0
次 映像中的启动映像基本地址配置-> 地址由 FLW 区域/ABASE 在 ROMCFG/I FR0 中配置
在 RESET 期间,ROM 引导加载程序会检查两个映像并决定应启动哪一个映像。
我的疑问主要在于这一点:
KW47 ROM 引导加载程序如何知道哪个映像较新?
你好,希望你一切都好!
在双镜像设置中,镜像被视为主镜像(实验镜像或最新固件镜像)和次镜像(作为备份后备镜像)。
KW47 ROM 引导加载程序会使用每个映像元数据中的固件版本字段确定较新的映像,并引导较高版本。如果两个版本相等,则会考虑使用启动映像基本地址进行启动(作为决胜局面),如果新版本的映像未通过验证/身份验证或回滚保护,则引导 ROM 会回退到旧映像。
在固件版本强制执行方面,Boot ROM 通过在更新映像版本早于系统允许的版本时阻止固件更新,以及在固件版本早于允许执行的最低版本时防止启动(安全启动失败)来提供回滚保护。
有关更多信息,请参阅 KW47 网络安全参考手册。
致以最崇高的敬意,
Sofia。
你好,索菲亚、
感谢您的回复。
"KW47 ROM 引导加载程序会使用每个映像元数据中的固件版本字段确定较新的映像,并引导较高版本。如果两个版本相等,则会考虑使用启动映像基本地址进行启动(作为决胜局面),如果新版本的映像未通过验证/身份验证或回滚保护,则引导 ROM 会回退到旧映像。"
我想从应用程序/开发人员方面澄清一个实施细节。
我们应该如何在每个固件镜像中配置或放置这些镜像元数据,尤其是固件版本字段,以便 KW47 ROM 引导加载程序能够读取?
具体来说
每个可启动映像中是否都有一个固定的元数据/头文件地址,ROM 引导加载程序希望在其中找到固件版本?
这些元数据是否与图像起始地址相对应,例如位于图像矢量表或图像标题附近?