警告メッセージ

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

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

対象製品: Armadillo(HT1070)

出荷時のArmadilloはシリアルインターフェース1をシリアルコンソールとして使用するように設定されています。

Armadilloのシリアルポート名については電源を入れる前にをご覧下さい。

シリアルポートは主に以下の3つに使用されています。

  • ブートローダ
  • カーネル
  • ユーザランドプログラム

ここでは、シリアルコンソールをシリアルインターフェース2に移動する方法とシリアルコンソールを使用しない方法の2つを紹介します。

1. シリアルインターフェース1をシリアルコンソールとして使用する。

まず最初に、シリアルコンソールをシリアルインターフェース1からシリアルインターフェース2に移動してみます。

1.1ブートローダ

Armadilloのブートローダであるhermitのうち、loader-armadillo-ttyAM1.binを使用します。loader-armadillo-ttyAM1.binの説明はいろいろなHermitをご覧ください。

HermitをFlashに書き込みます。Hermitの詳しい使い方はオンボードFlashメモリに書き込むをご覧ください。


[armadillo ~]$ hermit download -i /usr/lib/hermit/loader-armadillo-ttyAM1.bin -a 0x0000000 --force-locked
target: Hermit V1.3-armadillo-4 @18:09:07, Mar 26 2003
serial: completed 0x00005e53 (24147) bytes.         
[armadillo ~]$ 

これで、ブートローダの設定は終了です。

1.2 カーネル

カーネルの設定は、今書き込んだブートローダが自動的に設定してくれるので必要ありません。

1.3 ユーザランドプログラム

カーネルは自己初期化終了後、/sbin/initを起動します。/sbin/initは /etc/inittabに記述されている動作を行ないます。デフォルトのArmadillo Linuxの場合は以下のように記述されています。

 ::sysinit:/etc/rc.d/rc.sysinit ::respawn:/sbin/getty -L 115200 ttyAM0 vt102 ::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 ::shutdown:/etc/rc.d/rc.reboot ::ctrlaltdel:/sbin/reboot

変更したユーザランドをフラッシュに書き込みます。


[armadillo ~]$ hermit download -i initrd-1.1.2.img.gz -a 0x180000
target: Hermit V1.3-armadillo-4 @18:09:13, Mar 26 2003
serial: completed 0x0025f6d1 (2488017) bytes.
[armadillo ~]$ 

ユーザランドをフラッシュに書き込み終ったら、Armadilloをリーブトしてください。だたし、ブートログはシリアルインターフェース2に表示されるので、Armadillo側のシリアルケーブルをシリアルインターフェース2用のCON4に接続してください。


Doing console=ttyAM1,115200

ブートログから、カーネルオプションのconsoleにttyAM1が渡されていることが確認できます。

2. シリアルコンソールを使用しない。

つぎに、シリアルコンソールを使わない方法です。

2.1 ブートローダ

今回はloader-armadillo-notty.binを使用します。1.1と同じくHermitをFlashに書き込みます。


[armadillo ~]$ hermit download -i /usr/lib/hermit/loader-armadillo-notty.bin -a 0x0000000 --force-locked
target: Hermit V1.3-armadillo-4 @18:09:13, Mar 26 2003
serial: completed 0x00005deb (24043) bytes.          
[armadillo ~]$ 
2.2 カーネル

カーネルの設定は、ブートローダが自動的に設定してくれるので必要ありません。

2.3 ユーザランドプログラム

respawnの行を今回はコメントアウトして、gettyが起動されないようにします。

 ::sysinit:/etc/rc.d/rc.sysinit
#::respawn:/sbin/getty -L 115200 ttyAM0 vt102 ::shutdown:/etc/rc.d/rc.reboot ::ctrlaltdel:/sbin/reboot

変更したユーザランドをフラッシュに書き込みブートしてください。


[armadillo ~]$ hermit download -i initrd-1.1.2.img.gz -a 0x180000

target: Hermit V1.3-armadillo-4 @18:09:13, Mar 26 2003
serial: completed 0x0025f6d1 (2488017) bytes.
[armadillo ~]$ 

ユーザランドをフラッシュに書き込み終ったら、Armadilloをリーブトしてください。だたし、ブートログやログインプロンプトは一切表示されませんので、telnetでのログインのみとなります。

出荷時の設定では、telnetでのrootのログインは許可されていないので、guestでログインして確認します。


[PC ~]$ telnet 192.168.0.1
Trying telnet 192.168.0.1...
Connected to telnet 192.168.0.1.
Escape character is ^].
Armadillo Linux V1.1.2
Linux 2.4.16-rmk2-armadillo-2 [armv4l arch]
armadillo login: guest

BusyBox v0.60.5 (2003.06.10-13:24+0000) Built-in shell (ash)
Enter help for a list of built-in commands.
[armadillo ~]$ su -
Password: 
BusyBox v0.60.5 (2003.06.10-13:24+0000) Built-in shell (ash)
Enter help for a list of built-in commands.
[armadillo ~]# dmesg | head
Processor: ARM ARM720T revision 2
Architecture: Armadillo
On node 0 totalpages: 8192
zone(0): 8192 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: mem=32m console=null

最終行のように、consoleに nullが渡されています。

loader-armadillo-notty.binを書き込ん場合、hermitはシリアルポートから要求を受け付けません。このため、次にhermitを使ってカーネル等を書き込む場合、shoehornをboot romモードで使用しなければなりません。

Armadillo上のJP2を短絡させ、シリアルケーブルをシリアルインターフェース1に接続し以下のようにします。


[PC ~]$ shoehorn --boot --armadillo --initrd /dev/null \
--kernel /usr/lib/hermit/loader-armadillo-boot.bin --terminal

詳しくはソフトウエアマニュアルの「オンチップROM起動によるオンボードFlashへの書き込み」をご覧ください。