Howto

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

出荷時の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
<span class="input">#</span>::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 ~]$ <span class="input">telnet 192.168.0.1</span>
Trying telnet 192.168.0.1...
Connected to telnet 192.168.0.1.
Escape character is <code>^]</code>.
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 <code>help</code> 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への書き込み」をご覧ください。