[[bc10-router]]~
[[bc10-router/u-boot update]]

#contents

*tftpboot [#s8fb0ca2]
ボード上に直付けされた 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 アダプター [#rbfb1176]
#include(bc10-router/tftpbootable USB-Ether)
#include(bc10-router/tftpbootable USB-Ether,notitle)

**tftpサーバ設定 [#pdaf3ac3]
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 設定 [#yb5d535a]
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