こんにちは、現在S32K314HMSマイクロコントローラでA/Bスワップを試みています。交換リクエストは以下の方法で行われます。
次に、swapHseIpRequest.pfCallback ( SwapProcessMuChannelResponse)が呼び出され、返される HseResponse は次のようになります。
#define HSE_SRV_RSP_NOT_SUPPORTED (( hseSrvResponse_t ) 0xAA55A11EUL ) /**< @brief サポートされていない操作または機能です。 */
これは散発的に発生し、時にはスワップが期待どおりに機能することもあります。その理由は何でしょうか?HSEがこの返還コードを返答する理由やシナリオはどこで見つけられますか?
このスワップは、リセットや電源オンの数分後にアップデートシーケンスの終了時にトリガーされます(つまりHSEは100%初期化されています)。
こんにちは、@AlexI さん。
これはパラメータのない非常にシンプルなサービスです。私が考えられる唯一の説明は、データキャッシュメモリが原因であるということです。記述子がキャッシュ不可能なメモリ領域に配置されていることを確認してください。
一般的に、HSEとの通信に使用されるすべてのデータオブジェクトは、キャッシュを認識できないため、キャッシュ対応できないメモリに強制的に移行する必要があります。
今回の理由はおそらく違うかもしれませんが、DTCMメモリを使う場合、バックドアアドレスを使う必要があるということです。通常のアドレスは、そのメモリを所有するコアからのみ参照可能です。他のバス・マスタ(他のコア、DMA、HSEなど)はバックドアアドレスを通じてのみこのメモリを認識できます。
lukaszadrapa_0-1783694396770.png
よろしくお願いいたします。
ルーカス
@lukaszadrapa さん、ご回答ありがとうございます。
実装を変更して、swapHseSrvDescriptorとswapHseIpRequestが初期値を持ち、起動時にリンカーによって初期化されるようにしました。実行時ではなく、今は動作しています。