1

Virtex4 FPGA で Xilinx Microblaze CPU コアを使用しています。現在のコードに新しいコード部分を追加したいのですが、コードが書き込み先のフラッシュのサイズを超えてしまいます。そのため、追加したコードを別のフラッシュに焼き付けたいと考えています。

コードはブートローダーによって RAM にコピーされ、RAM にジャンプして通常の実行が開始されます。既に使用されているフラッシュからコピーされたコードに隣接して (RAM 内で)、同じ方法で 2 番目のフラッシュから新しいコードをコピーするつもりです。

このためには、焼き付けられたフラッシュごとに 1 つずつ、2 つの個別の elf 実行可能ファイルが必要であり、それらを正確に分離して、各ファイルにどのルーチンが存在するかを定義します。ファイル間のルーチン呼び出しを有効にする必要があります。

私の質問: 各ファイル内のルーチンの正確な仕様を使用して、これらの個別の elf ファイルを作成するにはどうすればよいですか? 1 つの実行可能ファイルを 2 つの別個のファイルに分割する方法はありますか? または、組み込みシステムで単一のリンクの出力として個別の実行可能ファイル/ライブラリ ファイルを生成するための別のソリューションはありますか?

ありがとう、イシャイ

4

3 に答える 3

2

バイナリを RAM で再結合できる場合は、単一のバイナリにリンクしてから、結果のファイルを分割してもまったく問題ありません。ブートローダ機能がプライマリ ハーフに含まれていることを保証する必要があります。最も簡単な方法は、スタンドアロンのブート ローダー バイナリを作成することです。

splitddなどのユーティリティを使用して、フラッシュにコピーする前にバイナリを分割できます。

于 2010-08-03T20:54:44.557 に答える
2
  1. デバッグ シンボルのないバイナリのコピーを生成するために、既に明らかな手順を実行し、'strip' を実行したと仮定します。デバッグ情報は、実際のターゲットでは役に立ちません。

  2. ストリップされたバイナリがまだ FLASH よりも大きい場合は、S-RECORD ツールを使用してそのバイナリを分割できます。チェックサムやCRCの追加、多くのファイル形式のサポートなど、ファイルの分割に加えて、さらに多くのオプションがあります。

RAM がすべてのプログラムを保持するのに十分な大きさである場合、個別の ELF ファイル / DLL を作成する必要は特にありません。プログラムを 1 つの大きなモノリス プログラムとしてビルドして RAM アドレス空間で実行し、ブートローダーがその一部をフラッシュから RAM にロードするようにします。

于 2010-08-05T00:26:19.120 に答える
0

動的ライブラリを使用できる場合は、実行可能ファイルの一部のコードを 1 つに分割し、各フラッシュ領域に 1 つのファイルを配置するだけです。

于 2010-08-03T18:17:44.873 に答える