2393077_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2393077_zh-CN

2393077_zh-CN

S32K3引导加载程序和HSE - 最佳实践?

您好,NXP团队:

我们正在 S32K312 上实施一个强大的 OTA 更新架构,采用 HSE 全块 A/B 交换。

我们的目标架构是:

- S32K312,2 MB PFlash 分为两个 1 MB 物理块。
- HSE AB_SWAP 通过被动块激活服务使用。
- 通过 Modbus/串口接收 OTA 数据包。
- 引导加载程序将签名映像加载到被动 PFlash 块中。
- HSE 验证被动图像/SMR。
- 引导加载程序请求 AP_SWAP。
- RESET后,新更换的银行暂时启动。
- 确认命令可使交换永久生效;否则设备将回滚。

最初我们尝试将一个全局引导加载程序放在 DFlash 中,位于两个 PFlash 存储区之外。该引导加载程序将接收 OTA,对被动 PFlash 存储进行编程,请求 HSE AP_SWAP,然后继续管理确认/回滚。

我们采用这种方法遇到了架构和运行时复杂性方面的问题:

1. HSE AB_SWAP 似乎在完整的 PFlash 块边界上进行操作,而不是在任意应用程序分区上进行操作。
2. 单个 DFlash 引导加载程序位于已交换/已验证的银行映像之外。
3. 交换后,活动的 PFlash 存储体仍然需要有效的启动/IVT/RESET 结构。
4. 当 DFlash 也参与引导加载程序运行时/记录处理时,我们遇到了执行方面的困难。
5.目前还不清楚全局 DFlash 引导加载程序是否与干净的全库 HSE AB_SWAP 生产设计兼容。

因此,我们暂时改用复制的PFlash引导加载程序模式:

- 每个 1 MB PFlash 存储区包含自己的 IVT + 引导加载程序 + 应用程序。
- 引导加载程序在每个存储体的底部都有一个预留插槽。
应用程序在引导加载程序槽之后启动。
- 已签名的 OTA 镜像是一个完整的银行镜像,包含引导加载程序和应用程序。
- 在 HSE AB_SWAP 之后,新激活的银行是独立的,可以启动。

对于 HSE 全模块 A/B 更换来说,这似乎要干净得多,但我希望确认其预期/生产安全的方法。这样做并不理想,因为它在一定程度上违背了工厂引导加载程序的初衷。

问题:

1.对于 S32K312 HSE AB_SWAP,在交换后的 PFlash 存储体之外,单个全局 DFlash 驻留引导加载程序是否是一种受支持/推荐的架构?
2. 或者 HSE AB_SWAP 是否有效地要求/建议每个被交换的 PFlash 块都是可独立启动的,具有自己的 IVT/引导加载程序/RESET 路径?
3.如果可以使用 DFlash 引导加载程序,那么交换后的引导流程应该如何构建,才能仍然满足 SBAF/HSE 引导预期?
4. NXP 是否有任何参考示例展示了 DFlash 引导加载程序如何在 S32K3 上管理全块 HSE AB_SWAP?
5.对于具有回滚/确认语义的生产 OTA,重复的 PFlash 引导加载程序模型是否是更安全的预期设计?

我们已经看到,通过修改链接器脚本可以将代码和 IVT 链接到 DFlash 中(我们也尝试过),但我们的问题具体是,在使用 HSE 全块 A/B 交换和安全启动/SMR 验证时,这样做是否合适。

谢谢!

Tags (1)
No ratings
Version history
Last update:
13 hours ago
Updated by: