2416358_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2416358_ja-JP

2416358_ja-JP

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では、プロビジョニングシーケンス全体が正常に実行されます。

  1. HSE設備
  2. キーを消去する
  3. S2TPキースロットのプロビジョニング
  4. Qiキープログラミング
  5. セキュアブート構成
  6. アプリケーションが正常に起動します

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 さん。

情報共有ありがとうございます。お客様の設定に基づき、以下の点を確認いたしました。

  1. SHEキーグループはHSE_KEY_OWNER_CUSTを所有者として設定しています。しかし、HSEサービスAPIリファレンスマニュアルでは、SHEキーカタログ構成の場合、SHEキーグループの所有者をHSE_KEY_OWNER_ANYに設定しなければならないと規定されています。これは、NVM SHEキーカタログ構成の例でも示されています。
  2. 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 に追加されています。

SwapnilGawade_0-1790682414414.png


よろしくお願いいたします。

スワプニル・ガワデ

Tags (1)
No ratings
Version history
Last update:
Wednesday
Updated by: