出荷時のArmadilloは、シリアルインターフェース1をシリアルコンソールとして使用するように設定されています。 Armadilloのシリアルポート名については電源を入れる前にをご覧下さい。
シリアルポートは主に以下の3つに使用されています。
- ブートローダ
- カーネル
- ユーザランドプログラム
ここでは、シリアルコンソールをシリアルインターフェース2に移動する方法とシリアルコンソールを使用しない方法の2つを紹介します。
1. シリアルインターフェース1をシリアルコンソールとして使用する
まず最初に、シリアルコンソールをシリアルインターフェース1からシリアルインターフェース2に移動してみます。
1.1ブートローダ
Armadilloのブートローダであるhermitのうち、loader-armadillo9-ttyAM1.binを使用します。loader-armadillo9-ttyAM1.binの説明はいろいろなHermitをご覧ください。
HermitをFlashに書き込みます。Hermitの詳しい使い方はオンボードFlashメモリに書き込むをご覧ください。
[PC ~]$ hermit download \
-i /usr/lib/hermit/loader-armadillo9-ttyAM1-v1.1.6.bin \
-r bootloader --force-locked
serial: completed 0x00005e53 (24147) bytes.
$
これで、ブートローダの設定は終了です。
1.2 カーネル
カーネルにもシリアルインターフェース2にログを出すように指示する必要があります。カーネルへの指示は、Hermitに行なってもらいます。設定はhermitプロンプトでsetenvコマンドを使って行ないます。JP2をショートして電源を入れるとhermitプロンプトが表示されます。
hermit> setenv console=ttyAM1,115200
シリアルインターフェース2はLinuxの世界では「ttyAM1」として指定します。ボーレートをシリアルインターフェース1と同じ115200bpsにするために、「,」で区切って指定します。詳しくはArmadillo-9 Software Manualを参照してください。
1.3 ユーザランドプログラム
カーネルは自己初期化終了後、/sbin/initを起動します。/sbin/initは /etc/inittabに記述されている動作を行ないます。デフォルトの場合は以下のように記述されています。
::sysinit:/etc/rc.d/rc.sysinit
::respawn:/sbin/getty -L 115200 ttyAM0 vt102
::respawn:/sbin/getty 38400 tty1
::shutdown:/etc/rc.d/rc.reboot
::ctrlaltdel:/sbin/reboot
ここで重要なのは、2行目の respawn行です。
respawn行で指定されているように、gettyは ttyAM0つまりシリアルインターフェース1を使用するようになっていますので、これを ttyAM1(シリアルインターフェース2)を使用するように変更します。gettyについて詳しくは manをご欄ください。ユーザランドのカスタマイズ方法はユーザーランドをカスタマイズするをご欄ください。
::sysinit:/etc/rc.d/rc.sysinit
::respawn:/sbin/getty -L 115200 ttyAM1 vt102
::respawn:/sbin/getty 38400 tty1
::shutdown:/etc/rc.d/rc.reboot
::ctrlaltdel:/sbin/reboot
変更したユーザランドをフラッシュに書き込みます。
[PC ~]$ hermit download -i romfs.img.gz -r usreland
serial: completed 0x0025f6d1 (2488017) bytes.
[PC ~]$
ユーザランドをフラッシュに書き込み終ったら、Armadillo-9をリーブトしてください。だたし、ブートログはシリアルインターフェース2に表示されるので、Armadillo側のシリアルケーブルをCON2に接続してください。
Doing console=ttyAM1,115200
ブートログから、カーネルオプションのconsoleにttyAM1が渡されていることが確認できます。
2. シリアルコンソールを使用しない
つぎに、シリアルコンソールを使わない方法です。Armadillo-9はVGA出力を持っているので、コンソールをVGAに移すことができます。ただし、ブートローダだけはVGAに対応していないので、出力を止める必要があります。これで、両方のシリアルポートをデータ通信に使用することができます。
2.1 カーネル
今回はカーネルの設定から行ないます。というのも、シリアルコンソールを一切使用しないブートローダにしてしまうとカーネルパラメータの設定もできなくなってしまうからです。
hermit> setenv video
VGAをコンソールとして使用するには、USBのキーボードが必要になります。詳しくはArmadillo-9 Software Manualを参照してください。
2.2 ブートローダ
今回はloader-armadillo9-notty.binを使用します。1.1と同じくHermitをFlashに書き込みます。
[PC ~]$ hermit download \
-i /usr/lib/hermit/loader-armadillo9-notty-v1.1.6.bin \
-r bootlader --force-locked
serial: completed 0x00005deb (24043) bytes.
[PC ~]$
2.3 ユーザランドプログラム
デフォルトの状態でVGA側にログインプロンプトが出る設定になっているので、シリアルポートを止めるだけでVGAのコンソールからログインすることができます。
::sysinit:/etc/rc.d/rc.sysinit
#::respawn:/sbin/getty -L 115200 ttyAM0 vt102
::respawn:/sbin/getty 38400 tty1
::shutdown:/etc/rc.d/rc.reboot
::ctrlaltdel:/sbin/reboot
変更したユーザランドをフラッシュに書き込みブートしてください。
[PC ~]$ hermit download -i romfs.img.gz -r userland
serial: completed 0x0025f6d1 (2488017) bytes.
[PC ~]$
ユーザランドをフラッシュに書き込み終ったら、Armadillo-9をリーブトしてください。VGAモニタにログインプロンプトが表示され、USBキーボードを使ってログインできることを確認してください。
3. 元の状態に戻すには
loader-armadillo9-notty.binを書き込ん場合、hermitはシリアルポートから要求を受け付けません。このため、次にhermitを使ってカーネル等を書き込む場合、shoehornをboot romモードで使用しなければなりません。
Armadillo上のJP2を短絡させ、シリアルケーブルをCON1に接続し以下のようにします。
[PC ~]$ shoehorn --boot --terminal \
--loader /usr/lib/shoehorn/shoehorn-armadillo9.bin \
--kernel /usr/lib/hermit/loader-armadillo9-boot-eth-v1.1.6.bin \
--initrd /dev/null
詳しくはソフトウエアマニュアルの「オンチップROM起動によるオンボードFlashへの書き込み」をご覧ください。