2406767_ja-JP

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

2406767_ja-JP

2406767_ja-JP

S32K3スタンバイRAMデータはリセットハンドラ実行前に変更されました

こんにちは、

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.png8.png8.png8.png8.png

その後、J-Linkを使ってデバッグに切り替えましたが、リセット中に異常は発生しません。しかし、デバッグセッションを再開すると、スタンバイRAM領域内のすべてのデータが0xDEADBEEFになります。これは想定される動作ですか?

S32K344

S32DS3.6.4

RTD700

PE v.6.0.8


BR、

ジェイソン

Re: S32K3 Standby RAM data modified before Reset_Handler

ハイ

返信が遅くなり申し訳ありません。最近、お問い合わせが多数寄せられており、対応に追われております。

スタンバイRAMの使用方法については、 S32K311のスタンバイRAM保持に関する議論を参照することをお勧めします。

よろしくお願いいたします
ロビン

Re: S32K3 Standby RAM data modified before Reset_Handler

リセット中もスタンバイRAMの内容は残り、あなたが観察した値はMCUリセット前の内容であるはずです

=======================================================================================

RAMはSRAMメモリとTCMによって統合されている。SRAMメモリの一部はスタンバイ状態で使用可能です。
モード。つまり、MCUをスタンバイモードに設定した後も、このメモリの内容は保持されます。その
S32K3製品ファミリーは、ARM Cortex M7アーキテクチャのTCM機能を活用しており、その主な目的は
重要なデータに対してコアへの決定論的アクセス時間を提供し、アクセスの遅延を防ぎます。これだ
この機能はリアルタイムオペレーティングシステムで活用可能です。

前述の通り、スタンバイドメインによってソースされたスタンバイSRAMメモリに保存されるデータは、
MCUはスタンバイモードで、ウェイクアップ後に利用可能です。しかし、Runによって取得されたSRAM内のデータは
ドメインが利用できないため、ECCエラーを回避するために、ウェイクアップ後に初期化する必要があります。重要なことです
ウェイクアップ後は、ECCエラーを避けるためにスタンバイSRAMを初期化する必要がないことを指摘しますが、
SRAMの他の部分はそれを必要とするため、起動コードで適切な区別を行うべきです。1
この区別を示す例を以下のコードに示します。

Re: S32K3 Standby RAM data modified before Reset_Handlerこんにちは

返信が遅くなり申し訳ありません。

私のテストでは、スリープ/ウェイクアップ操作は一切行いませんでした。S32DS経由でリセットを実行しただけで、スタンバイRAM領域のデータが変更されました。マップファイルを確認すると、変数は確かにスタンバイRAM(0x20400000)に存在している。ご提示いただいたリンクを確認しましたが、そのリンク先の問題とは関係がないようです。

BR、
ジェイソン
Re: S32K3 Standby RAM data modified before Reset_Handlerこんにちは、

私はPEMicroのアカウントを持っていません。可能であれば、PEMicroの技術サポートに確認するのを手伝ってください。どうもありがとうございます。

BR、
ジェイソン
Re: S32K3 Standby RAM data modified before Reset_Handler

こんにちは、ジェイソンさん。

J-Link : 0xDEADBEEF — JLinkScript からの ECC 初期化

これは想定される動作であり、J-Linkの`S32K344.jlinkscript`に組み込まれている` SetupTarget ()`関数によって実行されます。以下のようなログエントリがないか確認してください。

SetupTarget() start
Initializing ECC RAM...
RAMCodeAddr: 0x20000000 RAMInitAddr: 0x20000010 RAMInitSize: 0x00007FF0
InitPattern: 0xDEADBEEF ECC RAM initialized successfully

Initializing ECC RAM...
RAMCodeAddr: 0x20000000 RAMInitAddr: 0x20400000 RAMInitSize: 0x00004000
InitPattern: 0xDEADBEEF ECC RAM initialized successfully ← Standby RAM!
SetupTarget() end - Took 25.3ms

PEMicroに同様の仕組みがあるかどうかは分かりませんが、コンソールログは以下のとおりです。

;begin_cs device=$00400000, length=$003F4000, ram=$20400000
Loading programming algorithm ...

フラッシュプログラミングアルゴリズムは、実行のためにアドレス$20400000(スタンバイRAMの開始アドレス)に一時的にロードされるようです。

PEMicroの技術サポートにさらに確認する必要があるかもしれません。PEMicroのアカウントをお持ちですか?それとも、私がPEMicroに確認しましょうか?

Re: S32K3 Standby RAM data modified before Reset_Handler

こんにちは、ジェイソンさん。

PEMicroの技術サポートエンジニアから返信を受け取りました:
PEmicroはアドレス0x20400000のRAMを使ってフラッシュプログラミング操作を行います。

PEmicro uses RAM at address 0x2040000 to perform flash programming.pngPEmicroはアドレス0x2040000のRAMを使用してフラッシュプログラミングを実行します。

よろしくお願いいたします
ロビン

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