「rtk_kernel for Raspberry Pi」の実行手順。
Raspberry Piとパソコンとは、シリアル通信で接続する。Raspberry Piのシリアル通信関係のコネクタピンは下記。尚、Raspberry Pi側は3.3V信号なので、シリアル-USB変換ケーブルなどが必要。詳しくは関連記事(1.)を参照。
Raspberry Pi ピン名称 | ピン番号 | シリアル信号 |
---|---|---|
GND | 6 | GND |
GPIO 14 (TXD) | 8 | RX |
GPIO 15 (RXD) | 10 | TX |
T-Kernel/T-Monitorプログラムの起動は、u-bootを利用。(T-Monitor単体でも起動はできるのだが、2019/10/21現在 SDカードアクセスは未サポートの為)
ファイル容量は4GByteもあれば十分なので、FATフォーマットされたマイクロSDカードを準備し、下記の合計7のファイルを書き込む。
GitHub(https://github.com/jr4qpv/rpi_u-boot_jtag_bins)から、各Raspberry Piの機種用の下記4つのファイルを入手し、SDカードのルートに書き込む。詳しくは、関連記事(1.)を参照。
bootcode.bin
start.elf
u-boot.bin
config.txt
T-Kernel関連のファイルを、コンパイル手順で作成した下記3つのファイルを、SDカードに書き込む。
tmonitor.bin
rominfo-rom.bin
kernel-rom.bin
前記で作成した起動用SDカードを Raspberry Piにセットして電源起動すると、シリアル通信でu-bootの起動メッセージが表示される。 カウントダウンするので、その間にキー入力するとu-bootコマンドが入力できる。
続いて、下記コマンドを実行してT-Kernelを起動。
u-boot> fatload mmc 0 8000 tmonitor.bin u-boot> fatload mmc 0 4000 rominfo-rom.bin u-boot> fatload mmc 0 30000 kernel-rom.bin u-boot> go 8000
起動メッセージが下記のように表示されたら、無事T-Kernelが起動。
U-Boot> go 8000 ## Starting application at 0x00008000 ... T-Kernel Version 2.02.00 for RPi2 r0.60 [Thu Oct 10 16:58:26 JST 2019] ConsoleIO - OK userinit(0x80000) code not found. usermain start. T2EX >>
この例では、アプリの実行コードが認識できないので、サンプルアプリ(簡易シェル)の入力待ちとなっている。
毎回手動でコマンド入力するのは面倒なので、下記コマンドでT-Kernelを自動起動するようにする。詳しくはu-bootのhelpやドキュメントを参照。
u-bootのコマンド入力待ちから、下記コマンドを入力
u-boot> setenv tk_bootcmd 'fatload mmc 0 8000 tmonitor.bin; fatload mmc 0 4000 rominfo-rom.bin; fatload mmc 0 30000 kernel-rom.bin; go 8000' u-boot> setenv bootcmd 'run tk_bootcmd' u-boot> setenv bootdelay 2 u-boot> saveenv
デバック中など自動でT-Kernelまで起動せずに、u-bootのコマンド待ちにしたい場合は、下記コマンドを実行。
u-boot> setenv bootdelay -1 u-boot> saveenv
電源投入でu-bootのコマンド待ちとなり、boot
コマンド入力で、bootcmd変数登録のコマンドが実行されるのでT-Kernelが起動。
毎回SDカードに書き込むのも面倒なので、u-bootではTFTPサーバからイーサネット通信でのファイル読み込みも出来る。詳しくは下記記事参照。