マイコン工作実験日記

Microcontroller を用いての工作、実験記録

やっかいな引っ越し -- その2

2010-03-06 12:06:28 | Weblog
Ubuntu 9.10 + Codesourceryで、textサイズがデカくなることがわかったので、MP3プレーヤのコードをちゃんとビルドできるかどうかが心配になりました。なにしろ、450KBになっていますので。実際に引っ越し作業をやってみると。。

やっぱり512KBのフラッシュに収まらなくなってしまいました。
/opt/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/bin/ld:
 nxpmp3.elf section `.rodata' will not fit in region `flash'
/opt/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/bin/ld:
 region `flash' overflowed by 4692 bytes
collect2: ld returned 1 exit status
make: *** [nxpmp3.elf] エラー 1
$

「オイオイ、70KBも激太りかよ。」と悪態をつきたくなります。じつは、textだけでなくUSB RAM空間も足りなくなっていたのですが、そちらは aligned 属性を使ってUSB OHCI用のバッファのメモリ境界を指定した場合の、メモリ確保動作が変わったらしく、複数のバッファを構造体に整理しなおすことで回避しました。textについては、不要なデバック用ルーチンを#ifdef で切り離してサイズ削減を計ったのですが、それでもまだ4KBも足りません。これ以上のダイエットも大変なので方針変更。これまで、-O2でコンパイルしていたところを-Osに変更。ビルドしてみると、効果てきめん!あっさり400KBに!!
$ arm-none-eabi-size nxpmp3.elf 
   text	   data	    bss	    dec	    hex	filename
 402296	   1976	  78184	 482456	  75c98	nxpmp3.elf
$

サイズを優先するとスピードが犠牲になるのですが、MP3やAACの再生処理には充分な余裕があったので、とりあえず動作には問題はないようです。いやはや、新しい環境への引っ越しがこんなに面倒だとは。今後、いよいよ保守的になってしまいそうです。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。