2391078_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2391078_ja-JP

2391078_ja-JP

S32K358マルチコアデータ共有

こんにちは 、

私はs32k358マルチコアで共有メモリを使用しようとしています。

私はユーザー定義の例に従っています。

buzzer_state_shared_data_U32で値を割り当てようとすると(現在はコア0のみがこのメモリにアクセスしています)、コア0がハングし、SWTがコントローラーをリセットします。

しかし、デバッグフラッシュにコードを書き込むと、正常に動作します。電源リセット後、コア0がハングアップしています。

フラッシュ中は正常に動作するのに、電源のオンオフでは動作しないのはなぜですか?

nirmal_masilamani_0-1783316750067.png


Re: S32K358 multi core data sharing

こんにちは、 @Julián_AragónM さん

迅速なご対応ありがとうございます。

起動ファイルを確認したところ、SRAMの初期化が実行されている。

起動ファイルとリンカーファイルを添付しました。この問題を解決するために、ぜひ私をサポートしてください

Re: S32K358 multi core data sharing

こんにちは、 @nirmal_masilamani さん

しかし、デバッグフラッシュにコードを書き込むと、正常に動作します。電源リセット後、コア0がハングアップしています。

これはおそらくECC RAMのエラーが原因です。通常、デバッガは揮発性メモリ上でECCを初期化しますが、電源オン・オフ時にRAMを初期化せず、メモリへのアクセス時にハードフォールトが発生します。

これは通常、メイン関数の前に実行される起動コード内で行われます。

このセクションはキャッシュ不可に設定する必要があります。

2つ目の問題についてですが、タイマーISRやOSタスクからアクセスしようとすると、コア0がハードフォールに切り替わります。

ハードフォルトを遡って追跡してみることもできます。HardFault_Handler()でコアを停止し、コアレジスタでSP値を見つけます:How To Debug A Fault Exception On ARM Cortex-M(V7M) MCU(S32K3XX)

よろしくお願いします、
ジュリアン

Re: S32K358 multi core data sharing

こんにちは、

main()で共有メモリにアクセスすると、電源オフ・オンでも問題なく動作しますが、タイマーISRやOSタスクからアクセスしようとすると、コア0がハードフォールに切り替わります。

どうか私をサポートしてください。

Re: S32K358 multi core data sharing

こんにちは、 @Julián_AragónM さん

この質問についてサポートしてください。私が何か見落としているのでしょうか?

Re: S32K358 multi core data sharing

こんにちは、 @nirmal_masilamani さん

PORリセット後にデバッガなしでmain()の共有メモリにアクセスできますか?問題はRAMの初期化だったのでしょうか?

しかし、タイマー、ISR、OSタスクからアクセスしようとすると、コア0がハードフォールトに切り替わります。

前回の返信でお伝えしたように、故障の種類を特定できましたか?

変数がキャッシュされない領域に配置されているか、またはキャッシュが無効になっていることを確認しましたか?

提案として:

core1Status を揮発性のままにしておき、読み取り側 (Core0) と書き込み側 (Core1) の両方で__DMB()/__ DSB() バリアを使用します。

問題がMPU設定が原因かもしれません。もし定義MPU_ENABLEなら、ISRやOSタスクが実行される前にMPU設定を呼び出してください。

以下のリンクを参照してください:Arm Cortex-M7 デバイス汎用ユーザーガイド r1p2 & AN14715: S32K3XX ハードウェアリソースのアイソレータと保護

よろしくお願いします、
ジュリアン

タグ(1)
評価なし
バージョン履歴
最終更新日:
昨日
更新者: