警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : シリアルインターフェース1の解放

対象製品: Armadillo-9

出荷時の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への書き込み」をご覧ください。