AR# 12030

|

MicroBlaze - MB-GCC/GCC のスイッチ情報の入手先

説明

キーワード : MB-GCC, GCC, C

MB-GCC のスイッチ情報はどこで入手できますか。C ファイルのコンパイル方法も教えてください。

ソリューション

1

GNU ツールの実行

C ソース ファイルがあれば、次のように MicroBlaze 実行ファイルを作成できます。

1. MicroBlaze GNU ツールがパスに設定されていることを確認します。
2. "init.o" および "libxil.a" が現在のディレクトリにあることを確認します (この確認は将来のバージョンでは不要になります)。
3. mb-gcc file1.c file2.c を実行します。

これらの手順は、MicroBlaze 実行ファイル "file a.out" を作成するために、"file1.c" および "file2.c" をコンパイルおよびリンクします。

MB-GDB を使用してコードをデバッグする場合は、次を実行して、MicroBlaze 実行ファイル "a.out" を作成します。このファイルには MB-GDB でアクセス可能なデバッグ情報が含まれています。

mb-gcc -g -mgas file1.c file2.c

デバッグが完了したら、最適化をオンにしてプログラムを再コンパイルします。このステップで実行ファイルのサイズおよび実行サイクル数を抑えることができます。次のオプションを使用して縮小を行います。

mb-gcc -O2 file1.c file2.c

デフォルトでは、データはすべて絶対アドレスを使用してアクセスされます。プログラムのサイズが大きいと問題になる可能性があります。各データ アクセスに命令が 2 つ必要になる場合があるためです。この問題を解決するため、MicroBlaze では小規模データ エリアという、常に 1 つの命令でアクセスできるコンセプトを導入しました。MB-GCC で小規模データ エリアを使用するには、次を実行します。

mb-gcc -mxl-gp-opt file1.c file2.c

"-mxl-gp-opt" オプションを常に使用することをお勧めします。 "-O2" オプションを併用することでさらにプログラムのパフォーマンスを高めることができます。

MB-GCC オプションの詳細を調べるには、"mb-gcc --help" または "info mb-gcc" を使用します (後者では MB-GCC のベースとなっている Solaris GCC の情報が表示されます)。

4. スタック サイズを設定します。MicroBlaze ツールでは、デフォルト スタック サイズが 0x100 (256) バイトの実行ファイルがビルドされます。 スタック サイズを変更する必要がある場合は、次を実行します。

mb-gcc -S file1.c file2.c

このステップでは、アセンブルせずにファイルがコンパイルされ (ほかの GCC オプションも使用できます)、"file1.s" および "file2.s" が作成されます。

次のコマンドを使用してファイルをアセンブルします。

mb-as -o file1.o file1.s
mb-as -o file2.o file2.s

次のコマンドを使用してファイルをリンクします。

mb-ld -relax -defsym _STACK_SIZE=0x400 init.o file1.o file2.o -lxil

スタック サイズが 0x400 (1024) バイトに設定されます。

5. GDB を使用してデバッグします。MicroBlaze 実行ファイルをデバッグするには、ソース ファイルが "-g -mgas" オプションでコンパイルされている必要があります。 MB-GDB を次のように起動します。"a.out" は MicroBlaze 実行ファイルです。

mb-gdb a.out

GDB のプロンプトが表示されたら、次のコマンドを入力します。"a.out" は MicroBlaze 実行ファイルです。

target sim
load a.out

これで標準 GDB コマンドを使ってプログラムをテストできます。MB-GDB 内で "help" を使用してこれらのコマンドのリストを表示させることができます。

よく使用されるコマンドのリストは次のとおりです。

b main = to set a breakpoint in function main (関数 main にブレークポイントを設定)
r = to run the program (プログラムを実行)
c = to continue after a break point (ブレークポイントの後続行)
l = to see a listing of the program (at the current point) (現在のポイントでプログラムのリストを表示)
n = to step one line (stepping over function calls) (関数コールをステップオーバー、1 行ステップ)
s = to step one line (stepping into function calls) (関数コールにステップ、1 行ステップ)
info reg = to see the values of registers (レジスタの値を表示)
info target = to see the number of instructions executed, and the number of cycles (実行した命令数とサイクル数を表示)
p xyz = to print the value of data xyz (データ xyz の値を出力)

6. オブジェクト/実行ファイルをダンプします。"objdump" ユーティリティを使用してオブジェクト (.o) または実行ファイル (.out) の内容を確認できます。シンボル表、ファイルのサイズ、ファイルのセクション名やサイズを確認するには、"mb-objdump -x a.out" を使用します。

オブジェクトまたは実行ファイルの (アセンブリ) コードを確認するには、"mb-objdump -d a.out" を使用します。

ほかのオプションをリストするには "mb-objdump --help" を使用します。

2

公式の GCC ページはこちらです。
http://gcc.gnu.org

資料のページはこちらです。
http://gcc.gnu.org/onlinedocs/

GCC のコマンド ラインのオプションはこちらです。
http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC2

上記のものは GCC がサポートするすべての CPU/プラットフォームで使用できる基本、汎用コンパイラ オプションです。
AR# 12030
日付 12/15/2012
ステータス アクティブ
種類 一般
People Also Viewed