FRDM-A-S32K344向けに2つのアプリケーションを作成しました。1つのアプリケーションはアドレス0x00400000に、もう1つはアドレス0x00500000にあります。
オンボードデバッガで1つのアプリケーションをフラッシュすると、一括消去が行われ、もう1つのアプリケーションも削除されます。
大量消去を無効にして、デバッガーをプログラミング中に特定のフラッシュ領域やセクションだけ消去するように設定するにはどうすればいいですか?
ganavi1_0-1782105971120.png
こんにちは、
なるほど、両方のバイナリを同時に正常に読み込めるということですね。
しかし、ブートローダーを使用する予定だとはおっしゃっていませんでしたね。
S32DSでLaunch Groupを使うと、各デバッグ構成はELFを読み込み、最後の設定が現在のPCを決定します。したがって、アプリケーションのエントリポイントがブートローダーを上書きし、スキップします。
ブートローダーが正しく実行されるようにするには、両方のイメージをロードするものの、ブートローダーのリセットベクタから実行を開始する単一のデバッグ構成を使用してください。また、起動コードのスキップを避けるため、「メイン関数へ実行」を無効にしてください。
実際のリセット後、S32K3は必ず事前に定義されたブートアドレス(内部フラッシュ0x00400000)から実行を開始し、最初の有効なイメージ(通常はブートローダー)が実行されます。
しかし、S32DSでのデバッグ時には、この動作がデバッガによって上書きされ、ELFファイルを読み込んだ後にプログラムカウンターをアプリケーションのエントリポイントに設定することで、ブートローダーを実質的にバイパスできます。
よろしくお願いいたします。
ピーター
こんにちは、
ご提案ありがとうございます。
Launch グループを作成し、Bootloaderとアプリケーション ELFのデバッグ設定の両方を追加しました。しかし、デバッグセッションを始めると、アプリケーションコードだけが実行され、ブートローダーの実行がバイパスされているように見えます。私の要件は、ブートローダーがリセット後に最初に実行され、その後SW2が押されたときにのみアプリケーションにジャンプすることです。
ブートローダーがアプリケーションより先に動作するようにするために、追加のLaunch Group設定やデバッガ設定が必要かどうか教えていただけますか?
私はFRDM-A-S32K344の搭載デバッガを使っています
ganavi1_0-1782121473794.png
こんにちは、
Debug Configurationsでは、Launch Groupを作成し、読み込みたいすべてのELFファイルを追加するだけです。これにより、複数の画像を読み込むことができます(例:ブートローダー+アプリケーション)を一気に使うことができます。
よろしくお願いいたします。
ピーター
Hello
S32DSを両方のELFファイルが読み込まれているけれど、PCがアプリケーションのエントリポイントではなくブートローダー Reset_Handler 0x00400000に設定されるように設定する方法を説明してもらえますか?
こんにちは、
デバッグセッション中にメモリブラウザで、0x00400000のメモリ空間が空(PE Microによって消去されている)か、それとも書き込み済みのエントリポイントだけがあるか確認してもらえますか?
複数の.elfこれらのファイルは通常、マルチコアMCUで使用されます。シングルコアだと少し難しいかもしれません。有効な方法の1つは、2つのデバッグセッションを用意することです。最初のセッションでは、ブートローダーの.elfファイルを使用します。ファイルとアプリ用の2つ目のファイルがありますが、どちらのメモリ領域を保持するかを定義する必要があります。PE Microは常に一括消去を実行します。保存メモリは、保存メモリ領域からデータを読み取り、一括消去を実行し、保存データを書き戻し、2番目の.elfからデータを書き込みます。ファイル。
別の方法としては、s-record ツール ( https://srecord.sourceforge.net/ ) を使用する方法もあります。) 、両方の .elf からこのツールでファイルを作成し、両方のsレコードをマージして、マージされた.srecを使用します。.elf の代わりに。.elfは使えますデバッグ用ファイルとシンボル。