ここでは、SH3-Linuxのカーネルをカスタマイズし、SL811-HST用のドライバを組み込む手順について紹介します。
なお、PCにはLinux(x86) をインストールしていることを前提としており、特に断り書きが無い限り、PCのLinux上でのコマンド操作方法を示しています。○SH3-Linuxの組み込み
MES(Micro embeded System)を参照し、T-SH7706LANへSH3-Linuxをインストールします。
ただ、このままではSL811-HSTは有効になりませんので、続く手順でカーネルをカスタマイズし、ドライバを組み込む必要があります。
○カーネルのコンパイル環境の設定
SL811-HST用のドライバや、USBメモリ/キーボードといった一般的なUSBデバイス用のドライバは、オリジナルカーネルにオプションとして含まれています。
従って、カーネルをコンフィギュレーションし、コンパイルすることで組み込むことができます。
まず、h83069fのページを参照し(有り難うございます)、PCにクロスコンパイルのための環境をセットアップします。
カーネルソースとパッチは、MES(Micro embeded System)からダウンロードすることができます。カーネルソースをコンパイルすると、makeを実行したディレクトリに直下に、「vmlinux」というファイルが作成されます。
これを、SDカードの1番目のパーティション(FATでフォーマットされているはず)に、上書きコピーします。そして、T-SH7706/LANを再起動し、新しいカーネルで起動することを確認できれば、カーネルソースのコンパイル環境は完成です。
○カーネルのコンフィギュレーション
カーネルのコンパイル環境が整ったら、SL811-HST用のドライバと、一般的と思われるUSBデバイス用のドライバを組み込みます。
1)カーネルのコンフィギュレーション変更
まず、カーネルのコンフィギュレーションを変更し、SL811-HST用のドライバや、各種USBデバイス用のドライバを組み込みます。
カーネルソースを展開したディレクトリで、以下のコマンドを入力します。
$ make ARCH=sh menuconfig カーネルのコンフィギュレーションを行うためのメニューが表示されますので、以下の項目にチェックマーク(<*>がチェック状態です)を入れます。
項目を選び、スペースキーを押すと、< >→<*> 又は、< >→<M>→<*>と切り替わります。
Device Drivers --->
USB support --->
< > ISP116X HCD support ←ここの「*」を外し…
<*> SL811HS HCD support ←代わりにここに「*」を入れる
<*> USB Mass Storage support
<*> USB Human Interface Device (full HID) support
[*] HID input layer supportまた、USBメモリを使用するためにはSCSIドライバも必要ですので、これも有効にしておきます。
Device Drivers --->
SCSI device support --->
[*] legacy /proc/scsi/ support
<*> SCSI disk support2) システムのセットアップルーチンの変更
カーネルソースを展開したディレクトリ内の、以下のファイルをテキストエディタで開きます。
arch/sh/boards/shmin/setup.c このファイルには、カーネルが起動する初期の段階で実行されるルーチンの他、追加したハードウェアに関する情報が書かれています。 ここでは、SL811-HSTのドライバに渡すパラメータを設定します。
まず、I/Oアドレスと割り込みポートをターゲットに合わせ込みます。
今回は、SL811-HSTをCS5領域に接続し、割り込みポートはIRQ0を使用しますので、赤字の部分のように変更します。
/* ←ここのコメントも忘れずに外します! static struct resource sl811_resources[] = { [0] = { .start = 0xb4000000, .end = 0xb4000000, .flags = IORESOURCE_MEM, }, [1] = { .start = 0xb4000002, .end = 0xb4000002, .flags = IORESOURCE_MEM, }, [2] = { .start = IRQ0_IRQ, ←割り込みポート(今回は変更無し) .flags = IORESOURCE_IRQ, }, }; ... */上の部分はコメントアウトされており、初期化されないようになっているため、コメントを外しておきます。
3)カーネルの再コンパイル
PCでカーネルを再コンパイルします。
$ make clean
$ make ARCH=sh CROSS_COMPILE=sh3-linux-コンパイルに成功したら、カーネルのコンパイル環境の設定の手順で新しいカーネルをインストールします。
4)デバイスファイルの作成
動作確認のためのデバイスファイルを作成します。
ここでは、PC上のLinuxを使い、ルート権限で作業を行います。
まず、SH3-LinuxをインストールしたSDカードを/mnt2にマウントします。
(mnt2ディレクトリは既に作成してあることを前提にしています)# mount /dev/sda2 /mnt2
次にデバイスファイルを作成します。
# mknod /mnt2/dev/sda b 8 0
# mknod /mnt2/dev/sda1 b 8 1
# mknod /mnt2/dev/sda2 b 8 2
# mknod /mnt2/dev/sda3 b 8 3
# mknod /mnt2/dev/sdb b 8 16
# mknod /mnt2/dev/sdb1 b 8 17
# mknod /mnt2/dev/sdb2 b 8 18
# mknod /mnt2/dev/sdb3 b 8 19最後に、SDカードをアンマウントします。
# umount /mnt2
○USBデバイスの動作確認
いよいよ、SL811-HSTのドライバを組み込んだSH3-Linuxを起動してみます。
SH3-Linuxの起動で、以下のメッセージが追加されていれば、とりあえずSL811-HSTが正しく認識されていることになります。
sl811: driver sl811-hcd, 19 May 2005
sl811-hcd sl811-hcd: SL811HS v1.5
sl811-hcd sl811-hcd: new USB bus registered, assigned bus number 1
sl811-hcd sl811-hcd: irq 32, io mem 0xb4000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.01:USB HID core driver起動後、USBメモリ(FAT/FAT32でフォーマットされているもの)を装着してみます。
USBメモリを装着すると、コンソールには以下のようなメッセージが表示されるはずです。
usb 1-1: new full speed USB device using sl811-hcd and address 2
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: BUFFALO Model: USB Flash Disk Rev: 4000
Type: Direct-Access ANSI SCSI revision: 00
SCSI device sda: 3963904 512-byte hdwr sectors (2030 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
SCSI device sda: 3963904 512-byte hdwr sectors (2030 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
sda: sda1
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0そして、SH3-Linuxのコンソールから以下のコマンドを入力し、マウントしてみます。
# mount /dev/sda1 /mnt
# ls /mntこれでUSBメモリの中身のファイルが一覧表示されるとOKです。
アンマウントするには、以下のコマンドを入力します。
# umount /mnt1 ここまで成功していれば、あとは使い方次第ということになります(*^_^*)
以上で、SH3-Linuxの組み込み編は終了です。
[戻る]