这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3XX】HSE 安全启动 CR配置

共1条 1/1 1 跳转至

【S32K3XX】HSE 安全启动 CR配置

高工
2026-04-28 14:21:17     打赏

【简介】

之前的帖子介绍了S32K3 安全启动的配置流程,以及依赖的key 管理,SMR配置的服务,还有最后一个依赖的服务CR 表的配置。CR表的配置主要用于配置启动应用核依赖的SMR的配置,以及如果校验失败执行的动作。

以下是对CR 表进行配置的代码,实现是通过HSE 的 HSE_SRV_ID_CORE_RESET_ENTRY_INSTALL 服务来进行配置的。

hseSrvResponse_t HseFrm_SecureBoot_InstallCoreResetEntry
(
const uint8_t entryIndex,
const hseCrEntry_t *pCrEntry
)
{
hseSrvResponse_t hseSrvResponse = 0xFFFFFFFF;

hseSrvDescriptor_t hseSrvDesc ;
hseSrvDescriptor_t* pHseSrvDesc = &hseSrvDesc;

hseCrEntryInstallSrv_t *pCrEntryInstallSrv = &(pHseSrvDesc->hseSrv.crEntryInstallReq);

MEMSET(pHseSrvDesc, 0, sizeof(hseSrvDescriptor_t));

pHseSrvDesc->srvId = HSE_SRV_ID_CORE_RESET_ENTRY_INSTALL;

pCrEntryInstallSrv->crEntryIndex = entryIndex;
pCrEntryInstallSrv->pCrEntry = (HOST_ADDR)hsePort_Mem_AddrHandler((HOST_ADDR)(pCrEntry));

hseSrvResponse = gHsePort_HseIf.reqApi( pHseSrvDesc , NULL );

return hseSrvResponse;
}

以下是CR配置的数据结构说明:

image.png

以下代码是本地配置的CR表和SMR 启动依赖关系,在上一篇介绍SMR的配置信息时我么定义了三个SMR区域,这三个SMR区域和CR表可以进行关联。本地的CORE0 的启动依赖SMR0和SMR2 core1 的启动依赖SMR1 和 SMR2,只有校验区域验证通过后才会启动应用核。

const hseCrEntry_t gHseBootCfg_CrEntry_Core_0 =
{
	.coreId                             = HSE_APP_CORE0,
	.crSanction                         = HSE_CR_SANCTION_DIS_INDIV_KEYS,
	.preBootSmrMap                      = (uint32_t)(BOOT_SMR_MAP(0) | BOOT_SMR_MAP(2)),
	.pPassReset                         = SMR_0_ADDR,
	.altPreBootSmrMap                   = 0U,
	.pAltReset                          = 0U,
	.postBootSmrMap                     = 0U,
	.startOption                        = HSE_CR_AUTO_START,
	.reserved0                          = {0U},
	.reserved1                          = {0U},
};

const hseCrEntry_t gHseBootCfg_CrEntry_Core_1 =
{
	.coreId                             = HSE_APP_CORE1,
	.crSanction                         = HSE_CR_SANCTION_DIS_INDIV_KEYS,
	.preBootSmrMap                      = (uint32_t)(BOOT_SMR_MAP(1) | BOOT_SMR_MAP(2)),
	.pPassReset                         = SMR_1_ADDR,
	.altPreBootSmrMap                   = 0U,
	.pAltReset                          = 0U,
	.postBootSmrMap                     = 0U,
	.startOption                        = HSE_CR_AUTO_START,
	.reserved0                          = {0U},
	.reserved1                          = {0U},
};

   

Key/SMR/CR 配置完成后就可以组合起来验证Secure Boot 的功能了,启动成功后我们可以通过HSE的服务来获取当前的启动状态信息,可以该服务来获取对应的状态信息 。

image.png

image.png

本地通过该服务来获取core0 core1 的启动状态及SMR区域的验证结果。

image.png

获取的结果为三个SMR 都校验成功了,并且两个核也成功通过secure boot启动。



           


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]