フリーの ARM 開発環境 (3)2012年07月05日 22時53分43秒

時間をもてあましていたので各コンパイラのコード効率を見てみることにした。
使う環境は
IDE		Keil µVision4
Source		ARM DSP_Lib V1.1.0
Optimize	Level3
テストするコンパイラは
arm	Keil MDKARM
	MDK-ARM 4.53

devkitarm	devkitPro 
	devkitARM_r41-win32

G++	Sourcery CodeBench Lite
	arm-2012.03-56-arm-none-eabi

GCC	GNU Tools for ARM Embedded Processors
	gcc-arm-none-eabi-4_6-2012q2-20120614

yagarto		Yet another GNU ARM toolchain
	yagarto-bu-2.22_gcc-4.7.1-c-c++_nl-1.20.0_gdb-7.4.1_eabi_20120616
順調にテストは進んでいったが、yagarto でだけコンパイルできない。
以前使ったときは何の問題もなかった気がする。
今のところ原因不明。
というわけで、結果は
Library Name		ARM		devkitarm	G++		GCC		yagarto
arm_cortexM0l_math	10,611,910	2,259,692	2,056,388	2,034,376	2,237,856
arm_cortexM3l_math	10,911,354	2,737,124	2,622,680	2,603,324	2,715,036
arm_cortexM4l_math	11,080,918	2,696,036	2,634,504	2,595,522	2,674,284
arm_cortexM4lf_math	11,165,886	2,642,920	2,580,528	2,541,592	2,621,156
しかし、ARM はなぜこんなに大きいのだろう?それ以外はすべてGCCなのだが微妙にサイズが異なっている。一番コンパクトに収まっているのは GNU Tools for ARM Embedded Processors 。結果から GCC バージョンの古いほうがサイズが小さい。たいした差ではないので好みで選べばよいだろう。


ここで気がついたことがひとつある。
今まで GNU-Tool-Prefix と GNU-Tool-Folder の設定だけすればよいと思っていたが、実は環境変数 PATH も設定しなければならない。もちろん PATH は GNU-Tool-Folder に \bin を付加したもの。(Sourcery CodeBench Lite 等はインストール時に環境変数 PATH に追加する。)何が動かないかというと arm-none-eabi-ar だ。こんなメッセージが出てきてはじめて気がついた。


'arm-none-eabi-ar' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


それにしても yagarto が動かないのが悔しい。エラーメッセージは何も出てこないので厄介かもしれない。時間のあるときに調べてみよう。


追記:2012/07/07
何回か Windows のリブートを繰り返しているうちにコンパイルできるようになった。
原因不明。というわけで yagarto のデータも追加した。

追記:2012/07/08
原因がわかった。 yagarto は、環境変数 PATH に bin ディレクトリの指定が必要だった。指定後リブートしなければ有効にならないので混乱していたのだ。ただし、arm-none-eabi-ar は bat ファイルで動くので全ての gcc コンパイラに PATH の指定が必要だ。
というわけで、bin ディレクトリの指定をしておけばどのコンパイラも問題なく動くということだ。