这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3】S32K3 SecureDebug 实现

共2条 1/1 1 跳转至

【S32K3】S32K3 SecureDebug 实现

高工
2025-11-04 23:28:40   被打赏 50 分(兑奖)     打赏

【简介】

           在汽车领域信息安全方面对交付的产品需要关闭调试口的功能,在S32K3 系列芯片中可以通过配置 ADKP 的密码和 推动芯片的life cycle来实现该功能。对于Secure Debug 的实现流程如下:

image.png

在安装了HSE固件的机器上,我们只要按照上面的流程实先通过HSE 的服务配置ADKP 的值,然后通过HSE 的服务推进LC 即可完成Secure Debug 的配置,以下的三个LC 状态调试口都是关闭状态的。

image.png

在hselib 中调用如下的代码段就会完成上述的配置。

/**************************************************************************************************
 *                                        LOCAL VARIABLES                                         *
 **************************************************************************************************/
static const uint8_t        gsAdkp[16U]           =
{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
};
/**********************************************************************************************
     *                                      Program ADKP (OTP)                                    *
     **********************************************************************************************/
if(HSE_SRV_RSP_NOT_ALLOWED == HseMid_Admin_GetAttr(HSE_APP_DEBUG_KEY_ATTR_ID, sizeof(hseAttrApplDebugKey_t), (void *)&getAttrVal, NULL))
{
srvResponse = HseMid_Admin_SetAttr(HSE_APP_DEBUG_KEY_ATTR_ID, sizeof(hseAttrApplDebugKey_t), (void *)&gsAdkp, NULL);
ASSERT(HSE_SRV_RSP_OK == srvResponse);
}

/**********************************************************************************************
     *                                       Advance LC (OTP)                                     *
     **********************************************************************************************/
srvResponse = HseMid_Admin_GetAttr(HSE_SECURE_LIFECYCLE_ATTR_ID, sizeof(hseAttrSecureLifecycle_t), (void *)&getAttrVal, NULL);
ASSERT(HSE_SRV_RSP_OK == srvResponse);

if(HSE_LC_CUST_DEL == getAttrVal.lifecycle_OTP_ADVANCE)
{
setAttrVal.lifecycle_OTP_ADVANCE = HSE_LC_IN_FIELD;
srvResponse = HseMid_Admin_SetAttr(HSE_SECURE_LIFECYCLE_ATTR_ID, sizeof(hseAttrSecureLifecycle_t), (void *)&setAttrVal, NULL);
ASSERT(HSE_SRV_RSP_OK == srvResponse);

/* The LC advancement takes effect after a functional reset */
Power_Ip_MC_ME_SocTriggerResetEvent(POWER_IP_FUNC_RESET_MODE);
}

上述的代码会配置JTAG 的访问密码,并推进LC 状态,代码执行后使用Jlink 连接芯片会有如下的提示界面。

image.png

输入配置的密码即可链接芯片进行调试,上述代码段设置的128bit的密码为000102030405060708090a0b0c0d0e0f

image.png

输入密码来接成功后就可以对芯片进行调试了。



院士
2025-11-07 10:34:54     打赏
2楼

没有接触过此类知识点。

涨知识了


共2条 1/1 1 跳转至

回复

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