2393558_ja-JP

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

2393558_ja-JP

2393558_ja-JP

スワップ要求: HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK (Hse_Ip_ServiceRequest 経由) が 0xAA55A11E を返します

こんにちは、現在S32K314HMSマイクロコントローラでA/Bスワップを試みています。交換リクエストは以下の方法で行われます。

 
/* ジョブステータス変数をリセットします */
      SwapJobStatus = SWAP_JOB_PENDING ;

/* HSEリクエストのサービス記述子を設定します */
swapHseSrvDescriptor.srvId = HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK;

/* HSE IPレイヤーに送信するリクエストパラメータを設定します */
      swapHseIpRequest.eReqType = HSE_IP_REQTYPE_ASYNC_POLL ;
      swapHseIpRequest.u32Timeout = SWAP_TIMEOUT ;
swapHseIpRequest.pfCallback = SwapProcessMuChannelResponse;

/* サービスリクエストをHSE IPレイヤーに送信します */
if (HSE_SRV_RSP_OK != Hse_Ip_ServiceRequest(SWAP_MU_INSTANCE, SWAP_MU_ADMIN_CHANNEL, &swapHseIpRequest, &swapHseSrvDescriptor))
    {
         結果= E_NOT_OK ;
     }

次に、swapHseIpRequest.pfCallback ( SwapProcessMuChannelResponse)が呼び出され、返される HseResponse は次のようになります。


static void SwapProcessMuChannelResponse ( uint8 u8MuInstance , uint8 u8MuChannel ,
                                             hseSrvResponse_t HseResponse void * pCallbackParam )
{
   if ( HseResponse == HSE_SRV_RSP_OK )
    {
      vFotaH_Appl_SwapJobStatus = SWAP_JOB_OK ;
   }
   それ以外
    {
      vFotaH_Appl_SwapJobStatus = SWAP_JOB_FAILED ;
      VStdLib_ConvertUint32ToUint8ArrayBigEndian (( uint32 ) HseResponse , DebugData );
   }
}

#define HSE_SRV_RSP_NOT_SUPPORTED (( hseSrvResponse_t ) 0xAA55A11EUL ) /**< @brief サポートされていない操作または機能です。 */



これは散発的に発生し、時にはスワップが期待どおりに機能することもあります。その理由は何でしょうか?HSEがこの返還コードを返答する理由やシナリオはどこで見つけられますか?


このスワップは、リセットや電源オンの数分後にアップデートシーケンスの終了時にトリガーされます(つまりHSEは100%初期化されています)。

Re: Swap request: HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK via Hse_Ip_ServiceRequest returns 0xAA55A11E

こんにちは、@AlexI さん。


これはパラメータのない非常にシンプルなサービスです。私が考えられる唯一の説明は、データキャッシュメモリが原因であるということです。記述子がキャッシュ不可能なメモリ領域に配置されていることを確認してください。

一般的に、HSEとの通信に使用されるすべてのデータオブジェクトは、キャッシュを認識できないため、キャッシュ対応できないメモリに強制的に移行する必要があります。


今回の理由はおそらく違うかもしれませんが、DTCMメモリを使う場合、バックドアアドレスを使う必要があるということです。通常のアドレスは、そのメモリを所有するコアからのみ参照可能です。他のバス・マスタ(他のコア、DMA、HSEなど)はバックドアアドレスを通じてのみこのメモリを認識できます。

lukaszadrapa_0-1783694396770.pnglukaszadrapa_0-1783694396770.png


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

ルーカス

Re: Swap request: HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK via Hse_Ip_ServiceRequest returns 0xAA55A11E

@lukaszadrapa さん、ご回答ありがとうございます。


実装を変更して、swapHseSrvDescriptorとswapHseIpRequestが初期値を持ち、起動時にリンカーによって初期化されるようにしました。実行時ではなく、今は動作しています。

Tags (1)
No ratings
Version history
Last update:
‎07-15-2026 02:38 AM
Updated by: