1

BDM ELF ファイルが通常の ELF ファイルよりも使用されるメモリの点で優れている点は何ですか?

私は両方について次のことを知っています。

  1. BDM ELF ファイルは、JTAG をプラグインすることにより、Trace32 などの任意のデバッガ ツールを介したデバッグに使用できます。ECM の ROM 領域にフラッシュする必要がある対応する FLS ファイル (フラッシュ ファイル) があれば、通常の ELF ファイルもデバッグ目的で使用できます。
  2. BDM ELF ファイルは ECM (電子制御モジュール) の RAM 領域にロードされますが、通常の ELF ファイルとそれに対応する FLS が ROM にロードされるのは ECM のものです。
  3. ELF ファイル (BDM または通常のファイル) は、ECM のメモリに完全に読み込まれるわけではありません (これは、ELF の読み込みに使用する ECM メモリのサイズから理解できます。 MB 単位の ELF)、ELF ファイルの一部 (型、変数、関数などのシンボル) は Trace32 メモリに保持されます。

上記は、ELF の使用に関する私の主な理解でした。私が何か間違って解釈した場合に備えて、皆さんが自分自身を修正するのを手伝ってくれることを知っています。

私の期待は、BDM ELF ファイルの内容が Trace32 デバッガーと ECM メモリの間でどのように分散されているか、どちらの ELF 形式もデバッグ目的でのみ使用されるため、お互いにどのような利点があるかを理解することです。お客様へのアプリケーション/ソフトウェアのリリースに関しては、お客様が ECM にフラッシュする FLS 形式でリリースすることに注意してください。

私の質問への回答を進めるために、さらに情報が必要な場合はお知らせください。

4

3 に答える 3

1

わかりました。もう一度試します。

BDM ELF ファイルの内容は、Trace32 デバッガーと ECM メモリの間でどのように分散されますか?

ELF ファイルには、デバッグ シンボル情報 (メモリー位置とレジスターを関数と変数に関連付ける) を保持できます。これは、trace32 がデバッグを支援するために使用します。このシンボル情報は trace32 に保持され、チップからの BDM 出力 (主にレジスタ値) をデコードし、ベア アセンブリを超えた有用な情報を提供するために使用されます。

どちらもデバッグ目的でのみ使用されるため、どちらの ELF 形式も互いにどのように有利ですか?

これは、デバッグ ツールと開発ツール チェーンによって異なります。他の回答で述べたように、ELF は単なる標準形式です。ライン プログラミングに使用されるかどうかは、リンク時に開発ツールが何を行うかによって異なります。ツールチェーンが何であるかを教えてくれないので、推測するしかありません。

お使いのデバイスがフラット メモリ モデルと統合 ROM (ほとんどの 32 ビット デバイスでストレージ容量が少ない) を備えている場合、デバイスをプログラムするために必要なファイルは 1 つだけです。RAM と内部フラッシュは同じようにアドレス指定されるため、アドレスは目的の宛先と一致する必要があります。

一方、ROM が格納されている場所が 2 つあり (これは製品の場合と思われます)、それらが同じようにアドレス指定されていない場合は、2 つのファイルが必要になる可能性があります。これは、外部のフラッシュ ROM チップ (または SD カードなど) とインターフェイスする ECU があった場合に当てはまります。この場合、アドレスがオーバーラップする可能性があるため、オフチップ ストレージに書き込むために別のイメージが必要になります (ELF は、データの一部に対して一意のアドレスを想定します)。したがって、あなたの場合、2 つの ELF ファイルが必要です。1 つは、デバッグでデバイスを起動するために RAM にロードするデバッグ セットアップを指定し、もう 1 つは、OS のシンボル情報と、外部フラッシュ チップにプログラムされたその他のデータを指定します。FLS ファイルはおそらく、プログラマが ELF に存在しない外部フラッシュをアドレス指定するために使用する情報を指定します。

これは、一般的な ELF 情報に役立つ場合があります: http://blog.ksplice.com/tag/elf/

于 2010-07-16T14:57:01.303 に答える
0

BDM ELF の機能は、コードの実行中に、コードを停止することなく、メモリ ロケーションとメモリ マップド レジスタへの変更を表示することです。

BDM ELF を使用することで、ハードウェア ウォッチ ポイントまたはブレークポイントを設定できます。これは、実行速度に影響を与えずに値の変更を中断できるので便利です。デバッガーが壊れたら、カーネルとアプリケーションを一緒にデバッグする方法を使用して、問題が発生した行を正確に見つけることができます。

BDM デバッガーからユーザー プログラムにブレークポイントを設定することはできません。これは、「停止」命令が挿入され、これらはカーネル コードによってのみ実行されるためです。BDM ドライバーを変更して、BDM インターフェイス経由でユーザー アプリケーションをデバッグできるようにすることができます。

于 2015-07-15T12:46:20.793 に答える
-1

あなたの質問には疑問符がありません。そのため、あなたの質問に完全に答えているかどうかはわかりません。

この情報は主に、実際のドキュメントからではなく、BDM を介した ELF ファイルの使用から得られたものです。

ELF はファイル仕様であるため、すべての ELF ファイルは同じである必要があります。ELF ファイルはリンカによって生成され、シンボル情報とセクションに編成された実行可能コードを含みます。ユーザーが ECM をプログラムする場合、デバッガー/プログラマーは ELF ファイルを読み込んで、セクションのアドレスとそれに関連するコードを選択し、必要に応じてこれらを書き込みます。

実行可能ファイルが RAM に書き込まれるか ROM に書き込まれるかは、ELF のセクションのアドレス (通常はリンカによって読み取られる構成ファイルを介して構成可能) またはプログラムが「プログラムされる」ときのプログラマの設定のいずれかに依存します。ほとんどのデバッガーには、イメージを ROM または RAM にロードするオプションがあります。プログラム イメージの唯一の違いは、コードと変数の場所です。

あなたが説明した状況では、プログラマーはelfファイルから実行可能データを引き出すことができないようです. あなたの fls ファイルは、ターゲット ハードウェアに単語ごとに書き込むことができる、ある種の生の画像ファイルであると想定しています。

于 2010-07-15T18:41:43.220 に答える