S32K324 MCUにおいて、HSE_FWが存在する場合にPRTN0_CORE0_STATのWFIビットが設定されないという問題が発生しています。
HSE_FWを搭載していないMCUでは、WFIは適切に設定され、アプリは正常に動作します。
HSE_FWをインストールする際に、何か特別な操作が必要ですか?
ありがとうございます
アニル
こんにちは、ダニエルさん。
ご質問への回答は以下のとおりです。
ユースケースについて詳しく説明していただけますか? HSE_B FW をインストールしました。FreeRTOS タスクでさまざまなペリフェラルを使用するアプリケーションを実行しようとしています。HSE_FW の処理をサポートするためにアプリケーション コードはまだ変更していませんが、Crypto_43_HSE ドライバ モジュールを含めただけです。初期化のための API はまだ呼び出していません。チケットに記載されているように、ハードフォールトが発生しています。
コアスタンバイモードに移行しようとしていますか、それともシステムスタンバイモードに移行しようとしていますか?いいえ、通常の起動時のみです。
RTDドライバを使用していますか、それとも独自のドライバを使用していますか?私はRTDドライバを使用しており、Crypto_43_HSEドライバのみを含めています。
HSEコアのWFIが設定されていることを確認していただけますか?WFI については、
main() 関数から MCU_SetMode() 関数を呼び出しています。これは/* 実行モードに切り替える */ の関数です。
このRTD関数は、内部的に以下の関数を順番に呼び出します。例外発生時のスクリーンショットも添付しました。Power_Ip_MC_ME_ConfigureCore()
Mcu_SetMode(McuModeSettingConf_Run);
Mcu_Ipw_SetMode();
Power_Ip_SetMode();
Power_Ip_MC_ME_ConfigCoreCOFBClock();
Power_Ip_MC_ME_ConfigureCOFB();
Power_Ip_MC_ME_ConfigureCore();
。
する
ヤージュ
TimeoutOccurred = Power_Ip_TimeoutExpired(&StartTime, &ElapsedTime, TimeoutTicks);
CoreStatus = Power_Ip_pxMC_ME->McMePrtnArray[PartitionIndex].McMePrtnCoreArray[CoreIndex].PRTN_CORE_STAT;
} while ( (MC_ME_PRTNX_COREX_STAT_WFI_EXECUTED_U32 != (CoreStatus & MC_ME_PRTN0_CORE0_STAT_WFI_MASK)) && (!TimeoutOccurred) );
。
。
while() ループがタイムアウトするため、次のソースコードが呼び出されます
ありがとうございます
アニル
こんにちは、アニルさん。
PRTN0_CORE0_STAT[WFI] = 1 にしたい理由がまだ理解できません。どのようなユースケースがありますか?
これはどのような種類の障害例外ですか?
以下の資料をご参照ください。
https://community.nxp.com/t5/S32K-Knowledge-Base/Fault-handling-on-S32K14x/ta-p/1114447
よろしくお願い申し上げます。
こんにちは、@anilsp31PA さん。
具体的な使用事例について詳しく教えていただけますか?
コアスタンバイモードに移行しようとしていますか、それともシステムスタンバイモードに移行しようとしていますか?
RTDドライバを使用していますか、それとも独自のドライバを使用していますか?
HSEコアのWFIが設定されていることを確認していただけますか?
リファレンス・マニュアルのセクション46.1.7「アプリケーションコアのシャットダウンプロセス」を参照してください。このセクションでは、システムスタンバイモードに入る前にアプリケーションコアを無効にする方法について説明します。
セクション46.1.4も参照してください。– コアクロックゲーティングとは、HSE_Bコアにはクロック制御がないことを意味します。シャットダウンが必要な場合(例えば、スタンバイモードの場合)のみ、WFIモードにする必要があります。
HSEが有効になっているデバイスでは、保留中のサービス要求や内部タスクがない場合、HSEコアは自動的にWFI状態に移行します。HSEコアは、アプリケーションコアから新しいサービス要求を受信すると、自動的に起動します。
予期しない動作が見られた場合は、クロック構成を再確認し、リファレンスマニュアルに記載されているサポートされている構成のいずれかと一致していることを確認してください。たとえば、表157 – オプションA(CORE_CLKが160MHzのハイパフォーマンスモード)などです。
よろしくお願いいたします。
ダニエル
こんにちは、 @anilsp31PA さん、
なるほど、つまりあなたはCM7_0を無効にしようとしているのですね。
「注:メインコアのクロックは常に有効にする必要があります。アプリケーションによってメインコアが設定されている場合は、McuCoreUnderMcuControl のチェックを外すか、McuCoreUnderMcuControl と McuCoreClockEnable の両方にチェックを入れる必要があります。」
S32K3_S32M27x MCUドライバのユーザーマニュアル、Rev0000R7.0.1 Rev. 1.0
つまり、私はまだその使用例を理解していません。メインコアをこのように無効化してはならない。
よろしくお願いいたします。
ダニエル
こんにちは、ダニエルさん。
コアクロックが有効になっていないことは承知しています。
しかし、RTD経由で暗号化ドライバを統合する際に、なぜ今になってこの問題が発生するようになったのか、確認していただけますか?
また、RTD の Crypto Driver を統合する際に MCU モジュールで構成変更が行われていないことを確認するため、RTD の Crypto Driver の代わりに、NXP DEMO HSE (HSE_FW_S32K3XX_0_2_1_0) に付属する Demo App (HSE_DEMOAPP_S32K3XX_0_2_1_0) ファイルをソースコードに統合してみました。
しかし、私も同じ問題に直面しています。
ここで検討しているユースケースは、HSE(OEMであるGMが提供するもの)と通信できるドライバコードを、当社のアプリケーションファームウェアに追加することです。
今回初めて、ターゲットチップセットに書き込まれたHSEと共に、自社開発のアプリケーションファームウェアを実行しようと試みています。
そこで、HSE(健康・安全・環境)対策を実施する際に、他にどのような点に注意する必要があるのかを知る必要がある。
注:この問題発生中、当社はHSE(英国安全衛生庁)への要請は一切行っていません。
アプリケーションのファームウェア上では、暗号化リクエストに関連するコードは実行されていません。
また、私の場合もHSEファームウェアの書き換えは行っていません。
参考までに、既存のIVTは0x0040000000にあります。以下はIVTの抜粋です。BCWを更新する必要があるかどうか確認していただけますか?
その間、MCUの各コアのクロックを有効にして、テストを試してみます。
締め切りが迫っているため、早急なご支援をお願いいたします。
よろしくお願いいたします。
ヴェンカテシュ・プラサンナ・K.
こんにちは、ダニエルさん。
CM7_0とCM7_1のクロック有効化を有効にした後、コードはMcu_SetMode()を通過しましたが、今度はPwm Init()で失敗します。
以下にコールスタックを示します。
なお、変更はコアクロックの有効化と生成のためにMCUモジュールに対してのみ行われました。
参考のためにローカル変数を添付しました。
よろしくお願いいたします。
ヴェンカテシュ・プラサンナ・K.