2007年01月30日(火)
Hello, world
開発環境の構築も完了したところで、いよいよ「Hello, world」だ。
まずは作業用SDカード領域の確保。
- ROMディスクから起動していることの確認
[/SYS]% df PATH DEV TOTAL FREE USED UNIT MAXFILE NAME /SYS rda 1829 0 100% 1024 256 PM:TBMX1
- パーティションの確保
[/SYS]% hdpart pcb pcb [C:483 H:64 S:63 B:1953792 (954 MB)] No System Boot StartCHS EndCHS SecNo SecCnt Size 1 13 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB 2 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB 3 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB 4 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB ** Create/Delete/Boot/Edit/Quit ? c Create PartNo (1-4) ? 1 Size [GB/MB/KB,All] (<201MB) ? 200M No System Boot StartCHS EndCHS SecNo SecCnt Size 1 13 BTRON 00 0: 2: 4 101: 63:63 129 411135 200 MB 2 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB 3 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB 4 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB ** Create/Delete/Boot/Edit/Update/Quit ? b Boot PartNo (1-4,Clear) ? 1 No System Boot StartCHS EndCHS SecNo SecCnt Size 1 13 BTRON 80 0: 2: 4 101: 63:63 129 411135 200 MB 2 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB 3 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB 4 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0 KB ** Create/Delete/Boot/Edit/Update/Quit ? u ** pcb: Updated Master Boot Block
- パーティションのフォーマット
[/SYS]% format -b pcb0 WORK Format pcb0 [STD] WORK Logical Formatting... Writing BootCode... Disk Format Success.
- パーティションのマウント
[/SYS]% att pcb0 pcb0 pcb0 -> pcb0
- システムファイルのコピー
[/SYS]% cp -b -v -r * /pcb0 copied: SBOOT copied: KERNEL.SYS copied: SYSCONF copied: DEVCONF copied: STARTUP.CMD copied: STARTUP.CLI copied: rsdrv copied: netdrv copied: unixemu copied: tcpipmgr copied: NETCONF copied: cli copied: .xcli copied: bin
- パーティションのアンマウント
[/SYS]% det pcb0
- 再起動
[/SYS]% # bd
- SDカードからブートしているか確認
[/SYS]% df PATH DEV TOTAL FREE USED UNIT MAXFILE NAME /SYS pcb0 205564 203312 1% 4096 17408 WORK
上記通りにやったのにもかかわらず、内蔵ROMディスク(rda)から起動するようならば、一度Teaboardの電源を落として(USBケーブルを抜いて)から起動すると、SDカードから起動すると思う。
次は、Hello, worldのコンパイル。
Teaboardで走るプログラムは「プロセスベース」と「T-Kernelベース」の2つに大別される。基本的にプログラムは、それぞれのベースに合わせたlocal/te/bapplとlocal/te/kappl以下で開発を行う。今回はプロセスベースのHello, worldを作成する。
- ディレクトリ構成
/opt/local/te/bappl /hello /src /tbmx1
hello/srcにソースファイルを格納し、バイナリはhello/tbmx1に格納する。デフォルトのmakerulesでは、バイナリ格納用のディレクトリ名によって、ターゲットを自動的に切り替えるようになっいるっぽい。なので、基本的にはこのディレクトリ構成は変更しない方がいいと思われる。
- hello.cの作成
hello/srcにhello.cを作る。
#include
int main(void) { printf("Hello, world¥n"); return 0; } - Makefileの作成
これもhello/srcに作る。
include ../../etc/makerules VPATH = ../src hello: hello.o
- make