====== Teaboard: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**
make