こんにちは、NXP
S32K344開発ボードに MU インターフェース経由で HSE をインストールしようとしています。
多くのドキュメントとファイルを読んだ後でも、まだいくつか質問があります。
1.ピンクのイメージをSRAMに入れたいです。ld ファイルを使用してイメージを SRAM に直接配置しようとしましたが、失敗したようです。(ld ファイルを使用してフラッシュに画像を配置することは可能です)
HSE_FLASH: 原点 = 0x00502000、長さ = 0x00030000
HSE_SRAM: 原点 = 0x20410000、長さ = 0x00030000
代替の解決策として、MPU を無効にし、memcpy を使用してフラッシュから RAM にイメージをコピーすると、機能します。
2. 機能リセットを呼び出したい場合は、「Power_Ip_PerformReset(&Power_Ip_HwIPsConfigPB);」を使用します。
「 Power_Ip_PerformReset 」がトリガーされると、SRAM の内容が失われ、メイン関数の最初の行に移動します。これはドキュメントに適合していないようです。
私の使い方は正しいでしょうか?これは機能リセットの通常の動作ですか?
3. アプリ経由で DCMRWP1 および MU Rx/tx レジスタを読み書きする方法。デバッグで jlink を使用しようとしましたが、読み取りと書き込みに失敗しました。
ご返信よろしくお願いします。
RAM メモリを初期化する必要があります。
この初期化は、POR リセット後、および RAM の内容が無効な場合の破壊的リセット後に必要です。RAM の内容は機能リセット後も保持される、CASE RAM の初期化は必要ありません。
デバッガー内の「????????」は、デバッガーがデータを読み取ることができないことを意味します。RAM の CASE、RAM が初期化されていないために ECC エラーが発生します。
ご質問にお答えします:
1. 機能リセットにより、「App core」が main.c の最初の行に戻りますが、インストールには 2 つの機能リセットが必要です。PCのポインタをリセットされないようにCANますか?
- 機能リセットにより、プログラム カウンターは main.c の最初の行ではなく、エントリ ポイントに強制的に設定されます。デバッガーが main 関数の最初の行で停止する場合は、ブレークポイントが原因です。リセット後も PC を維持することはできません。上で述べたように、機能リセット中も RAM の内容は保持されます。RAM の初期化は CAN 条件付きにすることができます。つまり、機能リセット後に起動コードで RAM を初期化する必要はありません。
2. アプリ経由でこれらのレジスタを読み書きする方法が分かりません。教えていただけますか?
- これらは通常のメモリマップレジスタです。他のペリフェラルレジスタと同様に、レジスタの読み取り/書き込みが可能です。HSE FW RM で説明されている MU インストール方法には、これらのレジスタのアドレスも含まれています。
よろしくお願いいたします。
ルーカス
ご返信ありがとうございます。
NXPについて はプログラマーを製造しています。弊社のお客様の 1 社は、MU インストールを使用してイメージを SRAM に配置することを選択しました。SO、自作プログラマー向けの実装プランを見つけようと勉強中です。
SRAM の内容が消去される理由が判明しました:
.ldでファイルには、「 __RAM_INIT = 0;」という設定が 1 つあります。これにより、リセットのたびに SRAM が初期化されます。
私はtrace32を持っていない、SO Jlinkを使います。デバッガー経由で直接変更しようとしましたが、失敗しました。
警告: アドレス 0x402AC2C0 のメモリの読み取りに失敗しました
警告: アドレス 0x402AC2C0 のメモリの読み取りに失敗しました
警告: アドレス 0x402AC66F のメモリの読み取りに失敗しました
SO 私は新しい方法を探しています。私のアイデアは、アプリ経由で MU を制御することです。
現在、私が主に混乱しているのは以下の点です。
1. 機能リセットにより、「App core」が main.c の最初の行に戻りますが、インストールには 2 つの機能リセットが必要です。PCのポインタをリセットされないようにCANますか?
2. アプリ経由でこれらのレジスタを読み書きする方法が分かりません。教えていただけますか?
私はこのインストール方法とこの IDE を初めて使用するので、私の理解には不正確な点があるかもしれません。ご理解の上、間違いがあれば訂正していただければ幸いです。
アプリ経由でコントロールMUのインストールは可能ですか? それとも他の方法の方が良いでしょうか?
こんにちは@BianHaopeng
まず、MU インターフェース経由のインストールを使用する特別な理由はありますか?これは通常、回復目的で使用されます。IVT 経由のインストールがより一般的な方法です。
ピンク色の画像をフラッシュメモリに残すCAN。RAMに移動する必要はありません。リセット後、RAM はスタートアップ コードによって初期化され、変数もクリア/初期化されます。これが、イメージが RAM 内で利用できなくなった理由と考えられます。
また、デバッガーでは通常、リセット イベントをキャッチする際に問題があり、リセット後の動作が予測できない場合があります。このような操作はデバッガーなしでテストする方がよいでしょう。
Lauterbach の Trace32 デバッガーを使用した場合、MU インターフェース経由でファームウェアをインストールしても問題はありませんでした。タイムアウトは十分に長いので、デバッガーでシーケンスを手動で実行しても問題はないはずです。
DCMRWP1 レジスタに書き込むにはどうすればいいですか?24:31 ビットのみ書き込む必要があります。私は単にレジスタの内容を読み取り、それに応じてビット 24:31 をマスクし、その値を書き戻しました。私の側ではこれが機能しました。
よろしくお願いいたします。
ルーカス