こんにちは、
PE MicroでS32K344をデバッグすると、配列(__attribute__ ((section(".standby_data"))) が見つかりました。スタンバイ RAM セクションにある volatile uint32_t WkupSourcestatus1[64];) が main() に入るときに予期せず変更されます。そして、添付の動画に示すように、スタンバイRAM領域を再初期化するためにレジスタを手動で変更しました。データは正しく0に初期化され、main()関数に入った後はすべて正常に動作しました。しかし、リセット後、Reset_Handlerに入ると、WkupSourcestatus1配列のデータが再び変更されます。なぜこのようなことが起きているのか?配列の中に0x5AA55AA5という値が多数出現していることに気づきました。これはSBAF_BOOT_MARKERに関連していますか?別の基板でも試してみましたが、同じ現象が発生しました。
8.png8.png8.png8.png
その後、J-Linkを使ってデバッグに切り替えましたが、リセット中に異常は発生しません。しかし、デバッグセッションを再開すると、スタンバイRAM領域内のすべてのデータが0xDEADBEEFになります。これは想定される動作ですか?
S32K344
S32DS3.6.4
RTD700
PE v.6.0.8
BR、
ジェイソン
ハイ
返信が遅くなり申し訳ありません。最近、お問い合わせが多数寄せられており、対応に追われております。
スタンバイRAMの使用方法については、 S32K311のスタンバイRAM保持に関する議論を参照することをお勧めします。
よろしくお願いいたします
ロビン
リセット中もスタンバイRAMの内容は残り、あなたが観察した値はMCUリセット前の内容であるはずです
=======================================================================================
RAMはSRAMメモリとTCMによって統合されている。SRAMメモリの一部はスタンバイ状態で使用可能です。
モード。つまり、MCUをスタンバイモードに設定した後も、このメモリの内容は保持されます。その
S32K3製品ファミリーは、ARM Cortex M7アーキテクチャのTCM機能を活用しており、その主な目的は
重要なデータに対してコアへの決定論的アクセス時間を提供し、アクセスの遅延を防ぎます。これだ
この機能はリアルタイムオペレーティングシステムで活用可能です。
前述の通り、スタンバイドメインによってソースされたスタンバイSRAMメモリに保存されるデータは、
MCUはスタンバイモードで、ウェイクアップ後に利用可能です。しかし、Runによって取得されたSRAM内のデータは
ドメインが利用できないため、ECCエラーを回避するために、ウェイクアップ後に初期化する必要があります。重要なことです
ウェイクアップ後は、ECCエラーを避けるためにスタンバイSRAMを初期化する必要がないことを指摘しますが、
SRAMの他の部分はそれを必要とするため、起動コードで適切な区別を行うべきです。1
この区別を示す例を以下のコードに示します。