概要
HSM如何触发系统复位
整体架构流程
对应UCB_HSMCOTP0内容HSMENRES,Enable HSM Triggering Resets。从HSM内核中允许通过bridge寄存器触发应用/系统复位功能(application reset Or system reset)。
- RSTPWD 寄存器写入对应password
- 置位RSTCTRL 复位请求类型寄存器
主核侧感知HSM引发的复位可通过读取SCU寄存器获得,SCU_RSTSTAT,区分应用复位和系统复位两种复位类型:
• if bit 26 is set the last reset was a system reset triggered by the HSM.
• if bit 27 is set the last reset was an application reset triggered by the HSM.`
技术名词解释
/*! HSM software reset password /
#define VHSM_HAL_HW_RSTPWD (0x55AA00FFu)
/ Reset Control Register Definitions /
#define RSTCTRL_APPRST_Pos 0 / RSTCTRL: APPRST Position /
#define RSTCTRL_APPRST_Msk (0x1ul << RSTCTRL_APPRST_Pos) / RSTCTRL: APPRST Mask /
#define RSTCTRL_SYSRST_Pos 1 / RSTCTRL: SYSRST Position /
#define RSTCTRL_SYSRST_Msk (0x1ul << RSTCTRL_SYSRST_Pos) / RSTCTRL: SYSRST Mask */
技术细节
void vHsm_Hal_TriggerSoftwareReset(void) /* COV_VHSM_HAL_TRIGGER_SOFTWARE_RESET */
{
volatile boolean loop = TRUE;
/* Clear Hsm2Host register */
HSM2HOST = 0u; /* PRQA S 0306 */ /* MD_VHSM_HAL_0306_REGISTER_ACCESS */
/* Trigger software reset */
HSM_BRIDGE->RSTPWD = VHSM_HAL_HW_RSTPWD; /* PRQA S 0306 */ /* MD_VHSM_HAL_0306_REGISTER_ACCESS */
HSM_BRIDGE->RSTCTRL = (RSTCTRL_SYSRST_Msk | RSTCTRL_APPRST_Msk); /* PRQA S 0306 */ /* MD_VHSM_HAL_0306_REGISTER_ACCESS */
while (loop)
{
/* If reset was not successful stay here */
}
} /* vHsm_Hal_TriggerSoftwareReset() */
#endif /* (VHSM_HAL_CALLOUT_TRIGGERSOFTWARERESET == STD_ON) */