BeagleBoard-xM用のOSを作ってみたいと思い現在頑張っているところだが、まずブートローダから作成することにした。以下の作業はgccを入れたFedora 14で行った。まずARMのクロス開発環境をhttp://www.codesourcery.com/sgpp/lite/arm/portal/release1803からダウンロードしてインストールした。またqemu-omap3をhttp://code.google.com/p/qemu-omap3/からダウンロードしてインストールした。qemu-system-armができるが、qemu-omap3に名前変更(もしかして、qemuインストール時に入ったqemu-system-armと一緒か?)。そしてhttp://beagleboard.googlecode.com/files/signGP.cを保存してコンパイルする。
gcc signGP.c -o signGP
これで準備は完了。これからARMのアセンブリを書く。とは言ってもレジスタに値を代入して無限ループするだけのもの。
mov r0, #0xDD b.
これをtest.Sという名前で保存した。そしてアセンブラにかける
arm-none-linux-gnueabi-as test.S
これでELF形式のa.outが出力されるので、ヘッダなどを取り除くためにobjcopyを利用する
objcopy -I elf32-i386 -O binary a.out test
これでtestというファイルができる。そしてsignGPでtestに情報付加する
./signGP test
これでtest.iftが作られるのでこれをqemuに読み込ませる
qemu-omap3 -M beagle -mtdblock test.ift
これで実行できるが、何が起こってるのかわからないのでqemu-monitorを使う。そこでinfo registersとやると以下のようになった。R0がしっかり変わってる。これでスタートを切ることができた!