MWCT2016 HSE 2.40.0 安全启动配置失败 - ImportPlainSymKeyReqMuChannel 环境 MCU:基于MWCT2016S的无线充电控制器 工作设置(旧版) : HSE固件版本:2.6.0 (应用程序 + 安全启动)合并十六进制。 新设置(失败) : HSE固件版本:2.40.0 (应用程序 + 安全启动)合并十六进制。 我们正在从 HSE FW v2.6.0 迁移到 HSE FW v2.40.0,同时保持相同的 Qi 密钥配置和安全启动流程。 问题陈述 使用 HSE FW v2.6.0,完整的配置序列可以成功执行: HSE 安装 擦除按键 S2TP密钥槽配置 Qi 键编程 安全启动配置 应用程序启动成功 使用HSE FW v2.40.0时,所有配置步骤均成功完成,直到启动安全启动配置。 在安全启动配置期间,以下API 失败: 在安全启动代码中导入PlainSymKeyReqMuChannel()。 返回HSE 响应: 0x55A5A399 ,对应于: #define HSE_SRV_RSP_INVALID_PARAM ((hseSrvResponse_t)0x55A5A399UL) 出现此故障后,安全启动配置无法完成,ECU 将卡在安全启动代码中。 配置顺序 工作配置(HSE 2.6.0) 00_Blank_MWCT2016_CodeFlash_DataFlash.hex 电源 RESET 01_HSE_flash.srec版本 2.6.0 电源 RESET 02_EraseKeysSW.hex 电源 RESET 03_S2TP_KeySlotsAligned.srec S2TP 软件版本:1.1.1 电源 RESET 通过 UART 写入 Qi 密钥。 电源 RESET 应用程序+安全启动.hex 电源 RESET 从 UART 日志中获取合并十六进制烧录后的 HSE 响应: HseStatus:2848 位 0:0 RFU 位 1:0 HSE_SHE_STATUS_SECURE_BOOT 位 2:0 HSE_SHE_STATUS_SECURE_BOOT_INIT 位 3:0 HSE_SHE_STATUS_SECURE_BOOT_FINISHED 位 4:0 HSE_SHE_STATUS_SECURE_BOOT_OK 位 5:1 HSE_STATUS_RNG_INIT_OK 位 6:0 HSE_STATUS_HOST_DEBUGGER_ACTIVE 位 7:0 HSE_STATUS_HSE_DEBUGGER_ACTIVE 位 8:1 HSE_STATUS_INIT_OK 位 9:1 HSE_STATUS_INSTALL_OK 位 10:0 HSE_STATUS_BOOT_OK 位 11:1 HSE_STATUS_CUST_SUPER_USER 位 12:0 HSE_STATUS_OEM_SUPER_USER 位 13:0 HSE_STATUS_FW_UPDATE_IN_PROGRESS 位 14:0 RFU 位 15:0 RFU smrCoreStatus_Get: smrCoreStatus[1]:0,smrCoreStatus[0]:0 smrStatus[1]:0,smrStatus[0]:0 代码调试日志 HSE 响应: ImportPlainSymKeyReqMuChannel-hseResp:0x55a5aa33 LoadBootMacKey-hseResp: 0x55a5aa33 Generic_ImportKeys-hseResp:0x55a5aa33 KeyProvisioningForJTAG-status: 1 SecureBootConfiguration-hseResp: 0x55a5aa33 KeyProvisioningToHseNVM-status: 1 NON_SECURE_IVT-BLOCK1-hseResp:0x55a5aa33 SECURE_IVT-BLOCK0-hseResp:0x55a5aa33 writeDefaultData 运行安全启动配置程序 Hse-FW 版本:0.13.0.2.6.0,完整内存 使用的接口版本:0.13.0.2.6.0 HseStatus:2862 位 0:0 RFU 位 1:1 HSE_SHE_STATUS_SECURE_BOOT 位 2:1 HSE_SHE_STATUS_SECURE_BOOT_INIT 位 3:1 HSE_SHE_STATUS_SECURE_BOOT_FINISHED 位 4:0 HSE_SHE_STATUS_SECURE_BOOT_OK 位 5:1 HSE_STATUS_RNG_INIT_OK 位 6:0 HSE_STATUS_HOST_DEBUGGER_ACTIVE 位 7:0 HSE_STATUS_HSE_DEBUGGER_ACTIVE 位 8:1 HSE_STATUS_INIT_OK 位 9:1 HSE_STATUS_INSTALL_OK 位 10:0 HSE_STATUS_BOOT_OK 位 11:1 HSE_STATUS_CUST_SUPER_USER 位 12:0 HSE_STATUS_OEM_SUPER_USER 位 13:0 HSE_STATUS_FW_UPDATE_IN_PROGRESS 位 14:0 RFU 位 15:0 RFU smrCoreStatus_Get: smrCoreStatus[1]:0,smrCoreStatus[0]:0 smrStatus[1]:1,smrStatus[0]:1 配置失败 - HSE 固件 2.40.0 报告: 00_Blank_MWCT2016_CodeFlash_DataFlash.hex 电源 RESET 01_S32K344_HSE_FW_UPDATE_v2_40_0.srec 电源 RESET 02_M210WLCUMBCD00A_WSB00.31_EraseKeySW_UART_ENABLE.hex 电源 RESET 03_S2TP_2_1_0_KeySlotsAligned.srec 电源 RESET 通过 UART 写入 Qi 密钥。 电源 RESET 应用程序+安全启动.hex 电源 RESET 房屋状态:2912 位 0:0 RFU 位 1:0 HSE_SHE_STATUS_SECURE_BOOT 位 2:0 HSE_SHE_STATUS_SECURE_BOOT_INIT 位 3:0 HSE_SHE_STATUS_SECURE_BOOT_FINISHED 位 4:0 HSE_SHE_STATUS_SECURE_BOOT_OK 位 5:1 HSE_STATUS_RNG_INIT_OK 位 6:1 HSE_STATUS_HOST_DEBUGGER_ACTIVE 位 7:0 HSE_STATUS_HSE_DEBUGGER_ACTIVE 位 8:1 HSE_STATUS_INIT_OK 位 9:1 HSE_STATUS_INSTALL_OK 位 10:0 HSE_STATUS_BOOT_OK 位 11:1 HSE_STATUS_CUST_SUPER_USER 位 12:0 HSE_STATUS_OEM_SUPER_USER 位 13:0 HSE_STATUS_FW_UPDATE_IN_PROGRESS 位 14:0 RFU 位 15:0 RFU smrCoreStatus_Get: smrCoreStatus[1]:0,smrCoreStatus[0]:0 smrStatus[1]:0,smrStatus[0]:0 ImportPlainSymKeyReqMuChannel-hseResp:0x55A5A399 断电重启后: UML 软件版本:WSB00.3B_UART_ENABLE 运行安全启动配置程序 Hse-FW 版本:0.13.0.2.40.0,完整内存 使用的接口版本:0.13.0.2.40.0 HseStatus:2848 位 0:0 RFU 位 1:0 HSE_SHE_STATUS_SECURE_BOOT 位 2:0 HSE_SHE_STATUS_SECURE_BOOT_INIT 位 3:0 HSE_SHE_STATUS_SECURE_BOOT_FINISHED 位 4:0 HSE_SHE_STATUS_SECURE_BOOT_OK 位 5:1 HSE_STATUS_RNG_INIT_OK 位 6:0 HSE_STATUS_HOST_DEBUGGER_ACTIVE 位 7:0 HSE_STATUS_HSE_DEBUGGER_ACTIVE 位 8:1 HSE_STATUS_INIT_OK 位 9:1 HSE_STATUS_INSTALL_OK 位 10:0 HSE_STATUS_BOOT_OK 位 11:1 HSE_STATUS_CUST_SUPER_USER 位 12:0 HSE_STATUS_OEM_SUPER_USER 位 13:0 HSE_STATUS_FW_UPDATE_IN_PROGRESS 位 14:0 RFU 位 15:0 RFU smrCoreStatus_Get: smrCoreStatus[1]:0,smrCoreStatus[0]:0 smrStatus[1]:0,smrStatus[0]:0 导入PlainSymKeyReqMuChannel-hseResp:0x55a5a399 ECU 仅卡在安全启动模式 Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel 嗨@ShrikantM
能否请您分享一下您的密钥目录以及在ImportPlainSymKeyReqMuChannel()函数调用中使用的参数?报告的错误表明一个或多个 HSE 请求参数无效。
BR,VaneB Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel 嗨@VaneB , 我们使用以下主要目录: /* 包含 NVM 密钥目录条目的表 */ const hseKeyGroupCfgEntry_t aHseNvmKeyCatalog[] = { /* NvmKeyGroup_0 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_SHE, 1U, 128U, {0U, 0U}}, /* NvmKeyGroup_1 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_ECC_PAIR, 1U, 256U, {0U, 0U}}, /* NvmKeyGroup_2 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_AES, 1U, 256U, {0U, 0U}}, /* 关键目录结束标记 */ {0U, 0U, 0U, 0U, 0U, {0U, 0U}} }; /* 包含 RAM 键目录条目的表 */ const hseKeyGroupCfgEntry_t aHseRamKeyCatalog[] = { /* RamKeyGroup_0 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_SHE, 1U, 128U, {0U, 0U}}, /* 关键目录结束标记 */ {0U, 0U, 0U, 0U, 0U, {0U, 0U}} }; 对于以下函数,我们收到 HSE_SRV_RSP_INVALID_PARAM 错误 hseSrvResponse_t Generic_ImportKeys(void) { hseSrvResponse_t srvResponse = HSE_SRV_RSP_GENERAL_ERROR; /*导入与 SMR#0 关联的密钥*/ srvResponse = ImportPlainSymKeyReqMuChannel( MU0, 1U NVM_AES128_BOOT_KEY, HSE_KEY_TYPE_AES, ( HSE_KF_USAGE_VERIFY ), 0U, aesEcbKeyLength, aesEcbKey, 真的 ); ASSERT(HSE_SRV_RSP_OK == srvResponse); 如果(HSE_SRV_RSP_OK != srvResponse) 跳转到出口; /* 加载 SHE 安全启动的密钥 */ srvResponse = LoadBootMacKey(); ASSERT(HSE_SRV_RSP_OK == srvResponse); 如果(HSE_SRV_RSP_OK != srvResponse) 跳转到出口; 出口: 返回 srvResponse; } 请查看附件 global_defs.h 文件。有关参数的更多详细信息。 感谢并致意 斯瓦普尼尔·加瓦德 Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel 嗨@SwapnilGawade
感谢您分享信息。根据您的配置,我有以下几点看法:
SHE 密钥组配置的所有者为 HSE_KEY_OWNER_CUST。但是,HSE 服务 API 参考手册规定,对于 SHE 密钥目录配置,SHE 密钥组的所有者必须设置为 HSE_KEY_OWNER_ANY。NVM SHE 密钥目录配置示例也证明了这一点。
传递给 ImportPlainSymKeyReqMuChannel() 的 targetKeyHandle 定义如下: #define NVM_AES128_BOOT_KEY GET_KEY_HANDLE(HSE_KEY_CATALOG_ID_NVM, 1, 1) 但是,根据您的 NVM 密钥目录配置,AES 密钥组是第三组 (NvmKeyGroup_2)。基于此配置,NVM_AES128_BOOT_KEY 的正确定义应该是: GET_KEY_HANDLE(HSE_KEY_CATALOG_ID_NVM, 2, 0)
Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel 嗨@VaneB , 根据您的建议,我已经进行了更改,但它仍然给出与HSE_SRV_RSP_INVALID_PARAM (0x55a5a399) 类似的响应。 经过调试,我们发现ImportPlainSymKeyReqMuChannel (...)-> EraseKeyReq (targetKeyHandle, HSE_ERASE_NOT_USED))-> HSE_Send (muIf, muChannelIdx, gSyncTxOption, pHseSrvDesc)-> Hse_Ip_ServiceRequest (u8MuInstance, u8MuChannel, pHseIp_Request , HSE_DTCM_ADDR(pHseSrvDesc))-> Mu_Ip_SetTxRegister (Hse_Ip_apMuBase[u8MuInstance], u8MuChannel, (uint32)pHseSrvDesc) 返回的响应为HSE_SRV_RSP_INVALID_PARAM (0x55a5a399) 。 pHseSrvDesc 的参数已添加到附件 Mu_Ip_SetTxRegister-pHseSrvDesc.xlsx 中。 感谢并致意 斯瓦普尼尔·加瓦德 Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel 嗨@SwapnilGawade
根据您的描述,我注意到您似乎将 DemoApp 框架与 Hse_Ip 驱动程序结合使用了。我的理解正确吗?如果进行了修改,具体做了哪些修改?
另外,您是否已在项目中禁用数据缓存?这是导致 HSE_SRV_RSP_INVALID_PARAM 错误的一个常见原因。所有用于与 HSE 通信的数据对象都必须强制存储在不可缓存的内存中。
我还注意到,您将 HSE_DTCM_ADDR(pHseSrvDesc) 作为 pHseSrvDesc 参数传递给了 Hse_Ip_ServiceRequest() 函数。请参阅HSE_ReadAdkp 返回 HSE_SRV_RSP_INVALID_ADDR 的线程,我的同事在其中解释了有关将 HSE 与 DTCM 内存一起使用的一些注意事项。
您可能还想了解一下 Hse_Ip_ToAHBAddress(),当启用 TCM 支持时,它会将本地地址转换为 HSE 主机地址。在这种情况下,它或许有用。 Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel 嗨@VaneB , 在 HSE 2.6.0 的工作环境中,我们使用了以下库: 1. RTD AUTOSAR 4.4 2.主要目录如下 /* 包含 NVM 密钥目录条目的表 */ const hseKeyGroupCfgEntry_t aHseNvmKeyCatalog[] = { /* NvmKeyGroup_0 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_SHE, 1U, 128U, {0U, 0U}}, /* NvmKeyGroup_1 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_ECC_PAIR, 1U, 256U, {0U, 0U}}, /* NvmKeyGroup_2 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_AES, 1U, 256U, {0U, 0U}}, /* 关键目录结束标记 */ {0U, 0U, 0U, 0U, 0U, {0U, 0U}} }; /* 包含 RAM 键目录条目的表 */ const hseKeyGroupCfgEntry_t aHseRamKeyCatalog[] = { /* RamKeyGroup_0 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_SHE, 1U, 128U, {0U, 0U}}, /* 关键目录结束标记 */ {0U, 0U, 0U, 0U, 0U, {0U, 0U}} }; 我们使用的是与 HSE 2.40.0相同的RTD AUTOSAR 4.4和密钥目录,但我们遇到了问题。ImportPlainSymKeyReqMuChannel(...) 函数返回 HSE 响应为HSE_SRV_RSP_INVALID_PARAM 。 此RTD AUTOSAR 4.4中不提供 Hse_Ip_ToAHBAddress() 函数。 感谢并致意 斯瓦普尼尔·加瓦德 Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel 嗨@SwapnilGawade
如前所述,SHE 密钥组配置的所有者为 HSE_KEY_OWNER_CUST。但是,HSE 服务 API 参考手册规定,对于 SHE 密钥目录配置,SHE 密钥组的所有者必须设置为 HSE_KEY_OWNER_ANY。
你的项目中是否禁用了数据缓存?这是导致 HSE_SRV_RSP_INVALID_PARAM 错误的一个常见原因。所有用于与 HSE 通信的数据对象都必须强制存储在不可缓存的内存中。
另外,能否分享一个简单的示例,展示您导入密钥的所有步骤?
View full article