bc10-router
bc10-router/u-boot update

tftpboot

ボード上に直付けされた Ethernet コネクタのない bc10 のような機器でも
OMAP3 EHCI に対応した u-boot-arm と USB-Ethernet アダプターを使用することで
tftpboot を行うことができます。

ドライバー追加、kernel 設定変更、kernel 更新、など開発途中で頻繁に kernel を入れ替えたい場合には
tftpboot が出来るといちいち SDカードに uImage をコピーせずに済むので効率的です。

uImage の更新の容易さを生かすため、tftpサーバは
kernel をビルドするマシンに設定するのが一般的です。

bc10-router は arago-project の Toolchain を使って kernel をビルドしているので、
Ubuntu 10.04 環境を前提に手順を紹介します。

USB-Ethernet アダプター

bc10-router/tftpbootable USB-Ether

tftpboot 対応 u-boot で tftpboot 可能な USB-Ethernet アダプタは
u-boot-arm/drivers/usb/eth/asix.c に書かれている以下の VendorID:ProductID のものです。

static const struct asix_dongle const asix_dongles[] = {
        { 0x05ac, 0x1402, FLAG_TYPE_AX88772 },  /* Apple USB Ethernet Adapter */
        { 0x07d1, 0x3c05, FLAG_TYPE_AX88772 },  /* D-Link DUB-E100 H/W Ver B1 */
        /* Cables-to-Go USB Ethernet Adapter */
        { 0x0b95, 0x772a, FLAG_TYPE_AX88772 },
        { 0x0b95, 0x7720, FLAG_TYPE_AX88772 },  /* Trendnet TU2-ET100 V3.0R */
        { 0x0b95, 0x1720, FLAG_TYPE_AX88172 },  /* SMC */
        { 0x0db0, 0xa877, FLAG_TYPE_AX88772 },  /* MSI - ASIX 88772a */
        { 0x13b1, 0x0018, FLAG_TYPE_AX88172 },  /* Linksys 200M v2.1 */
        { 0x1557, 0x7720, FLAG_TYPE_AX88772 },  /* 0Q0 cable ethernet */
        /* DLink DUB-E100 H/W Ver B1 Alternate */
        { 0x2001, 0x3c05, FLAG_TYPE_AX88772 },
        /* ASIX 88772B */
        { 0x0b95, 0x772b, FLAG_TYPE_AX88772B | FLAG_EEPROM_MAC },
        { 0x0000, 0x0000, FLAG_NONE }   /* END - Do not remove */
};

国内で 2013年1月現在入手が容易なものとしては Buffalo LUA3-U2-ATX が使用できます。
lsusb で確認すると

Bus 001 Device 004: ID 0b95:7720 ASIX Electronics Corp. AX88772

と表示されます。

tftpサーバ設定

Ubuntu 10.04 では tftp サーバとしていくつかのパッケージを利用できますが、
ここでは atftpd を使用します。

$ sudo apt-get install atftpd

起動管理のため openbsd-inetd がいっしょにインストールされますが、
続いて xinetd をインストールすると openbsd-inetd は削除されます。

$ sudo apt-get install xinetd

xinetd の tftp 設定ファイルを作成・編集します。

$ sudo vim /etc/xinetd/tftpd

内容は以下です。

service tftp
{
    protocol        = udp
    port            = 69
    socket_type     = dgram
    wait            = yes
    user            = nobody
    group           = nobody
    server          = /usr/sbin/in.tftpd
    server_args     = --logfile /var/log/atftpd.log /var/lib/tftpboot
    only_from       = 192.168.0.0/24
    disable         = no
}

only_from は使用しているネットワークによって適切なネットワークアドレスに変更してください。
server_args で設定した kernel uImage の格納場所を作成します。

$ cd /var/lib
$ sudo mkdir tftpboot

tftpd への接続状況がわかる log を /var/log/atftpd.log に出力するよう設定したので、
log ファイルを作成しておきます。

$ sudo touch /var/log/atftpd.log
$ sudo chown nobody:nobody /var/log/atftpd.log

xinetd を再起動します。

$ sudo /etc/init.d/xinetd restart

これで tftp サーバの設定はできました。

tftp で load する kernel uImage は uImage.beagle という名前で /var/lib/tftpboot に置く必要があります。
bc10-router/kernel update の手順でビルドした uImage を以下のように kernel ディレクトリからコピーしてください。

$ sudo cp ~/linux-stable/arch/arm/boot/uImage /var/lib/tftpboot/uImage.beagle

bc10 tftpboot 設定

USB-Ethernet アダプターを直接あるいは USB ハブ経由で bc10 の USB コネクターに接続し、
シリアルコンソールから入力できる状態で bc10 を起動します。

u-boot が起動し kernel を load するまでの入力待ちの間にキー入力をし、
u-boot のコマンドラインインタフェースへ入ります。

U-Boot 2012.10-12320-g39826f0 (Oct 22 2012 - 17:03:16)

OMAP3530-GP ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 600 mHz
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  256 MiB
NAND:  512 MiB
MMC:   OMAP SD/MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Beagle Rev C1/C2/C3
No EEPROM on expansion board
Die ID #4ada00040000000004037b700d01401a
Net:   Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot:  3
OMAP3 beagleboard.org #

USB-Ethernet アダプターを認識させ、tftp 用のネットワークの設定を行い
uImage をロードします。
ipaddr は bc10 に設定するIPアドレス、
serverip は tftp サーバのIPアドレスです。

OMAP3 beagleboard.org # usb start
(Re)start USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 4 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
       scanning usb for ethernet devices...
Warning: asx0 using MAC address from net device
1 Ethernet Device(s) found
OMAP3 beagleboard.org # setenv ipaddr 192.168.0.128
OMAP3 beagleboard.org # setenv netmask 255.255.255.0
OMAP3 beagleboard.org # setenv serverip 192.168.0.203
OMAP3 beagleboard.org # tftpboot

tftpboot 実行後、uImage.beagle が正しく読み込まれている場合以下のようなログが表示されます。

Waiting for Ethernet connection... done.
Using asx0 device
TFTP from server 192.168.0.203; our IP address is 192.168.0.128
Filename 'uImage.beagle'.
Load address: 0x80200000
Loading: T #################################################################
#################################################################
#################################################################
###################
done
Bytes transferred = 3137352 (2fdf48 hex)

uImage がメモリに正しく読み込まれたら、bootargs を設定します。

OMAP3 beagleboard.org # setenv bootargs console=ttyO2,115200n8 mpurate=auto buddy=none camera=none vram=12M omapfb.mode=dvi:640x480MR-16@60 omapdss.def disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait

bootm コマンドを実行し正常に起動したら OK です。

OMAP3 beagleboard.org # bootm
## Booting kernel from Legacy Image at 80200000 ...
   Image Name:   Arago/3.7.2/beagleboard
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3425904 Bytes = 3.3 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.7.2 (otsuka@bc10-dev) (gcc version 4.5.3 20110311 (prerelease) (GCC) ) #1 Fri Jan 25 22:45:08 JST 2012
[    0.000000] CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: OMAP3 Beagle Board
以下略

u-boot で起動時に設定したい項目がある場合は bootargs に no_suspend_console を加えるなど
必要な設定を適宜追加・削除してください。


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS