MWCT2016 HSE 2.40.0 セキュアブート構成エラー - ImportPlainSymKeyReqMuChannel 環境 MCU:MWCT2016Sベースのワイヤレス充電コントローラー 動作環境設定(従来型) : HSE FW バージョン: 2.6.0 (アプリケーション+セキュアブート)16進をマージします。 新規設定(失敗) : HSE FW バージョン: 2.40.0 (アプリケーション+セキュアブート)16進をマージします。 Qiキーのプロビジョニングとセキュアブートのフローはそのまま維持しつつ、HSE FW v2.6.0からHSE FW v2.40.0への移行を進めています。 問題提起 HSE FW v2.6.0では、プロビジョニングシーケンス全体が正常に実行されます。 HSE設備 キーを消去する S2TPキースロットのプロビジョニング Qiキープログラミング セキュアブート構成 アプリケーションが正常に起動します HSE FW v2.40.0では、セキュアブート構成が開始されるまで、すべてのプロビジョニング手順が正常に完了します。 セキュアブートの設定中に、以下のAPIが失敗します。 ImportPlainSymKeyReqMuChannel() はセキュアブートコードに含まれています。 HSE応答を返します: 0x55A5A399これは以下に対応します: #define HSE_SRV_RSP_INVALID_PARAM ((hseSrvResponse_t)0x55A5A399UL) この失敗後、セキュアブートの設定が完了できず、ECUはセキュアブートコードに閉じ込められてしまいます。 プロビジョニングシーケンス 動作構成(HSE 2.6.0) 00_Blank_MWCT2016_CodeFlash_DataFlash.hex 電源リセット 01_HSE_flash.srecバージョン2.6.0 電源リセット 02_EraseKeysSW.hex 電源リセット 03_S2TP_KeySlotsAligned.srec S2TPソフトウェアバージョン: 1.1.1 電源リセット UART経由でQiキーを書き込む 電源リセット Application+SecureBoot.hex 電源リセット UARTログからのマージ後の16進数フラッシュ後の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 セキュアブートCFGプログラムを実行中 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 FW 2.40.0 のレポート: 00_Blank_MWCT2016_CodeFlash_DataFlash.hex 電源リセット 01_S32K344_HSE_FW_UPDATE_v2_40_0.srec 電源リセット 02_M210WLCUMBCD00A_WSB00.31_EraseKeySW_UART_ENABLE.hex 電源リセット 03_S2TP_2_1_0_KeySlotsAligned.srec 電源リセット UART経由でQiキーを書き込む 電源リセット Application+SecureBoot.hex 電源リセット HseStatus: 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 セキュアブートCFGプログラムを実行中 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 ImportPlainSymKeyReqMuChannel-hseResp: 0x55a5a399 ECUがセキュアブートのみで停止する Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel こんにちは、 @ShrikantM さん。
ImportPlainSymKeyReqMuChannel() 関数呼び出しで使われているパラメータと、キーカタログを教えていただけますか?報告されたエラーは、1つ以上の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 ); if(HSE_SRV_RSP_OK != srvResponse) 出口へ移動; /* SHEセキュアブート用のキーをロード */ srvResponse = LoadBootMacKey(); ASSERT(HSE_SRV_RSP_OK == srvResponse ); if(HSE_SRV_RSP_OK != srvResponse) 出口へ移動; 出口: return 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キーグループは3番目のグループ(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 こんにちは、 @SwapnilGawade さん。
あなたの説明によると、DemoAppフレームワークとHse_Ipドライバーを組み合わせているように見えました。私の理解は正しいでしょうか?もしそうなら、どのような修正が加えられましたか?
また、プロジェクトでデータキャッシュを無効にしていますか?これは、HSE_SRV_RSP_INVALID_PARAM エラーの一般的な原因です。HSEとの通信に使用されるすべてのデータオブジェクトは、キャッシュ不可能なメモリに強制的に格納されなければならない。
また、Hse_Ip_ServiceRequest() 関数に pHseSrvDesc パラメータとして HSE_DTCM_ADDR(pHseSrvDesc) を渡していることに気づきました。HSE_ReadAdkp returning HSE_SRV_RSP_INVALID_ADDR Threadを参照してください。同僚がDTCMメモリでのHSE使用に関するいくつかの考慮点を説明しています。
また、TCMサポートを有効にするとローカルアドレスをHSEホストアドレスに変換する機能Hse_Ip_ToAHBAddress()も検討すると良いでしょう。この状況では役立つかもしれません。 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 こんにちは、 @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}} }; 同じRTD AUTOSAR 4.4とKeyカタログをHSE 2.40.0で使用していますが、問題が発生しています。ImportPlainSymKeyReqMuChannel(...) 関数は、HSE レスポンスとしてHSE_SRV_RSP_INVALID_PARAMを返します。 Hse_Ip_ToAHBAddress()機能はこの RTD AUTOSAR 4.4では利用できません。 よろしくお願いいたします。 スワプニル・ガワデ 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との通信に使用されるすべてのデータオブジェクトは、キャッシュ不可能なメモリに強制的に格納されなければならない。
また、キーをインポートするために実行しているすべての手順を示す簡単な例を共有していただけますか? Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel こんにちは、 @VaneB さん。 ご提案とアプリケーション要件に応じて、キーキャットログを修正しました。 S2TPバージョン1.1.0を使用している場合、またはS2TPのフラッシュをスキップしている場合は、セキュアブートは正常に動作します。より詳しい情報を得るために、以下の表をご覧ください。S2TP ver2.1.0で何か変更があったのではないかと疑っています。Qiキーインポート用にCatLogが変更されていますが、これは私たちが設定した以下のキーCatLogと一致しません。 HSEバージョン S2TPバージョン 結果 2.40 1.1.1 1. セキュアブートが機能する 2. 25ワット充電失敗→Qiキーインポート失敗 認証: 初期化エラー: 5、認証: 初期化エラー - 証明書のインポート/検証に失敗しました 2.40 2.1.0 1. インポートキーでセキュアブートが失敗 エラー:0x55A5A399 2. 25ワット充電はSecure Boot SWなしで動作します(スタンドアロンアプリケーション) 3. S2TPのフラッシュを省略すればセキュアブートは動作します。しかし、充電機能は動作しません。 点滅する流れ Erase SW: キーカタログの消去とフォーマット ↓ 電源サイクル ↓ S2TPでQiキーをフラッシュする ↓ 電源サイクル ↓ フラッシュSECBootコード:キーのインポート ↓ フラッシュブート+アプリコード キーCatLog: /* NVMキーカタログエントリを含むテーブル */ const hseKeyGroupCfgEntry_t aHseNvmKeyCatalog[] = { /* NvmKeyGroup_0: 暗黙的な SHE 機能操作用 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_ANY, HSE_KEY_TYPE_SHE, 12U, 128U, {0U, 0U}}, /* NvmKeyGroup_1:NVM_AES128_BOOT_KEYを満たすためにAESとして設定(グループ1、スロット1)*/ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_AES, 4U, 128U, {0U, 0U}}, /* NvmKeyGroup_2: PROVISION_KEY0 (スロット 0) と APP_MAC_KEY (スロット 2) 用に 3 つのスロットに拡張しました */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_AES, 4U, 256U, {0U, 0U}}, /* HMACキー */ \ { HSE_ALL_MU_MASK, HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_HMAC, 2U, HSE_KEY512_BITS, {0U, 0U} }, \ /* ECCキー */ \ { HSE_ALL_MU_MASK, HSE_KEY_OWNER_CUST, WRP_KEY_TYPE_ECC_PAIR, 4U, WRP_ECC_KEY_SIZE, {0U, 0U} }, \ { HSE_ALL_MU_MASK, HSE_KEY_OWNER_CUST, WRP_KEY_TYPE_ECC_PUB, 2U, WRP_ECC_KEY_SIZE, {0U, 0U} }, \ { HSE_ALL_MU_MASK, HSE_KEY_OWNER_CUST, WRP_KEY_TYPE_ECC_PUB_EXT, 1U, WRP_ECC_KEY_SIZE, {0U, 0U} }, \ /* RSAキー */ \ { HSE_ALL_MU_MASK, HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_RSA_PAIR, 2U, HSE_KEY4096_BITS, {0U, 0U}}, \ /* NvmKeyGroup_8: NVM_RSA2048_PUB_CUSTAUTH_HANDLE0のための明示的なRSA公開鍵グループ */ {(HSE_MU0_MASK), HSE_KEY_OWNER_CUST, HSE_KEY_TYPE_RSA_PUB, 1U, 2048U, {0U, 0U}}, /* キーカタログの終了を示すマーカー */ {0U、0U、0U、0U、0U、{0U、0U}} }; /* RAMキーカタログエントリを含むテーブル */ const hseKeyGroupCfgEntry_t aHseRamKeyCatalog[] = { /* RamKeyGroup_0 */ {(HSE_MU0_MASK), HSE_KEY_OWNER_ANY, HSE_KEY_TYPE_SHE, 1U, 128U, {0U, 0U}}, /* キーカタログの終了を示すマーカー */ {0U、0U、0U、0U、0U、{0U、0U}} }; S2TPバージョン2.1.0におけるSecBootコードでのキーインポートの失敗: #define NVM_AES128_BOOT_KEY GET_KEY_HANDLE ( HSE_KEY_CATALOG_ID_NVM , 1 , 1 ) Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel こんにちは、@Bhushan1312さん
まずは問題点を特定してみましょう。AES-128キーをインポートし、消去し、再度インポートする簡単なデモをプライベートメッセージで送りました。この例は、現在お使いのRTDバージョンに基づいたものではありませんが、参考として役立つはずです。
デモをご使用の環境に合わせて調整し、基本的なキーのインポートと削除操作が正しく動作するかどうかを確認してください。これにより、既知の動作基準に基づいて連携を取り、最も基本的な機能から問題を分析することが可能になります。そこから、申請書でHSEがHSE_SRV_RSP_INVALID_PARAMを返却する原因を特定します。 Re: MWCT2016 HSE 2.40.0 Secure Boot Configuration Failure- ImportPlainSymKeyReqMuChannel @VaneBご親切なサポートに感謝します。この問題はNXPチームのサポートにより解決されました。 Qiキーのインポートに使用されるS2TPソフトウェアで設定されているKey CatLogに問題があることが判明しました。現在は修正済みです。 この変更により、セキュアブートが正常に動作するようになり、充電機能も問題なく動作するようになりました。
記事全体を表示