Other Parts Discussed in Thread: AM263P4
器件型号: AM263P4
根据 Hsmclient_loadHSMRtFirmware SDK 中的函数 (C:\ti\mcu_plus_sdk_am263px_11_00_00_19\source\security\security_common\drivers\hsmclient\soc\am263px\hsmclient_loadhsmrt.c)、我将大致介绍通过 AM263P4 上的 SBL 加载 HSM 固件的完整流程:
-
使用为 Core 0 注册 SIPC 中断
HwiP_construct、其中包括回调函数Hsmclient_mboxRxISR。 -
填充
loadHSMImage结构、包括 HSMRT 固件。 -
内核 0 将
WRITE_DONE寄存器设置为 1 (CSL_FINSR(ptrMSSCtrlRegs->R5SS0_CORE0_MBOX_WRITE_DONE, 24, 24, 1U))、从而触发 HSM 内核 (PROC6) 的 SIPC 中断。 -
主内核进入一个循环
while (gHsmRtDownloadComplete != 1)()、等待接收 SIPC 中断并等待Hsmclient_mboxRxISR被调用。 -
HSM 内核完成处理后、会触发内核 0 的 SIPC 中断、并
Hsmclient_mboxRxISR调用回调。 -
在中
Hsmclient_mboxRxISR、READ_REQ和READ_DONE寄存器被清除、中的内容CSL_MBOX_SRAM_U_BASE被复制到中loadHSMResult。 -
Hsmclient_mboxRxISR设gHsmRtDownloadComplete为 1、主内核退出等待循环。 -
主内核将
header.checksum返回的loadHSMResult与的实时计算校验和进行比较loadHSMResult。 -
如果校验和比较失败、则返回错误状态。 如果成功、它将调用
waitForBootNotify。 由于设置为SystemP_WAIT_FOREVER、主内核将无限期地等待、直到 HSM 固件运行并发回 Notify。Hsmclient_loadHSMRtFirmware然后返回SystemP_SUCCESS、完成整个过程。
问题 1: 上述流程是否正确? 我希望确认每个步骤。
问题 2: 在上述流程中、HSM 固件的验证(签名检查)和解密放在哪里? 这些步骤是否由 HSM 的 ROM 引导加载程序 (RBL) 自动执行? 如果验证/解密失败、会发生什么情况? 在哪个步骤会返回错误状态?
以前,在我刷新了一个被篡改的 HSM 固件 Hsmclient_loadHSMRtFirmware SystemP_FAILURE的情况下,函数返回。 是否会在步骤 9 中返回?
问题 3: 由于主内核 waitForBootNotify 设置为 SystemP_WAIT_FOREVER、如果 HSM 端完成加载但运行异常、并且从不执行 HsmServer_sendBootNotify(SystemP_WAIT_FOREVER) 以发送通知、那么主内核是否会无限期地等待? 在这种情况下、HSM 内核会做什么? HSM 是否有默认看门狗计时器 (WDT)?




