U-Bootリファレンスマニュアル

ブートローダU-Bootのリファレンスマニュアルです。

このドキュメントが対象とするのは、 Bishopに移植されたU-Bootのみです。U-Bootがサポートする他のターゲットについては扱いません。

目次

1. シリアルコンソール

minicom などのシリアルコンソールを用意します。

シリアルコンソールの設定については クイックスタート を参照してください。

2. 起動

ボードの電源を入れるとU-Bootが起動します。シリアル端末の表示は以下のようになります。

U-Boot 1.2.0-pylone2 (Aug  1 2007 - 18:57:27)

DRAM:  128 MB
Flash:  4 MB
NAND:  128 MiB
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  3

そのままにしておくと、3秒後に起動します。3秒以内に任意のキーを押すとコマンドプロンプトが表示され、モニタコマンドの入力ができる状態になります。

Bishop #

任意のキー入力を待つ時間である3秒は、環境変数 bootdelay によって変更することができます。環境変数を変更する方法については後述します。

モニタコマンドの例として、helpコマンドを紹介します。コマンドプロンプトが表示されたら "help"と入力してenterキーを押してください。コマンドの一覧が表示される筈です。

Bishop # help
?       - alias for 'help'
autoscr - run script from memory
base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm   - boot application image from memory
bootp   - boot image via network using BootP/TFTP protocol
bootvx  - Boot vxWorks from an ELF image
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
date    - get/set/reset date & time
dcache  - enable or disable data cache
dhcp    - invoke DHCP client to obtain IP/boot params
echo    - echo args to console
erase   - erase FLASH memory
flinfo  - print FLASH memory information
go      - start application at address 'addr'
help    - print online help
icache  - enable or disable instruction cache
iminfo  - print header information for application image
imls    - list all images found in flash
in      - read data from an IO port
itest   - return true/false on integer compare
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nfs     - boot image via network using NFS protocol
nm      - memory modify (constant address)
out     - write datum to IO port
ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
sleep   - delay execution for some time
tftpboot- boot image via network using TFTP protocol
version - print monitor version

3. コマンドマニュアル

3.1. help

コマンドの一覧を表示:

Bishop # help

コマンドの説明を表示:

Bishop # help <コマンド名 ...>

例: sleepコマンドの説明を表示:

Bishop # help sleep
sleep N
    - delay execution for N seconds (N is _decimal_ !!!)

3.2. ?

help コマンドのエイリアス (別名) です。

3.3. autscr

スクリプトを実行します。

3.4. base

メモリ系コマンド (cmd, cp, crc32, md, mm. mw, nm) のオフセットを設定します。

オフセットを 30000000h に設定:

Bishop # base 30000000
Base Address: 0x30000000

現在のオフセットを表示:

Bishop # base
Base Address: 0x00000000

3.5. bdinfo

ボード情報構造体の内容を表示します。

arch_number = 0x00000597
env_t       = 0x00000000
boot_params = 0x30000100
DRAM bank   = 0x00000000
-> start    = 0x30000000
-> size     = 0x08000000
ethaddr     = 00:1D:2D:00:00:0B
ip_addr     = 192.168.1.200
baudrate    = 115200 bps

Bishop は環境変数 ethaddr を参照しません。 ethaddr の値と実際の MAC アドレスは異なります。

3.6. boot

環境変数bootcmdの内容を実行します。

3.7. bootd

bootコマンドの古い名前です。後方互換性のために残されています。

3.8. bootelf

ELFイメージをブートします。

3.9. bootm

U-Boot形式のイメージをブートします。

3.10. bootp

...

3.11. bootvx

VxWorksをブートします。

bootvx コマンドはサポート対象外です。

3.12. cmp

メモリを比較します。

30900000h と 00040000h を 64KB (0x10000)比較:

Bishop # cmp.b 30900000 40000 10000

.b はバイトアクセスを意味します。.w で ワードアクセス、.l でダブルワードアクセスになります。

3.13. coninfo

コンソールデバイスの一覧を表示します。

Bishop # coninfo
List of available devices:
vga      80000002 S.O
serial   80000003 SIO stdin stdout stderr
nulldev  80000003 SIO

3.14. cp

...

3.15. crc32

CRC32 多項式計算を行います。

00040000h から 000400ff の CRC32 を計算:

Bishop # crc32 40000 100
CRC32 for 00040000 ... 000400ff ==> 55fdac87

00040000h 〜 000400ffh の CRC32 を計算して結果を 30900000h に保存:

Bishop # crc32 40000 100 30900000
CRC32 for 00040000 ... 000400ff ==> 55fdac87
Bishop # md 30900000 1
30900000: 55fdac87    ...U

3.16. date

RTC の日時を設定します。

RTC の日時を表示:

Bishop # date

RTC を 2007年08月11日 16時14分 に設定:

Bishop # date 0811161407

RTC を 2007年08月11日 16時14分30秒 に設定:

Bishop # date 0811161407.30

BishopにプリインストールされるDebianはRTCがUTCであることを期待する設定になっています。U-Bootから日時を設定する場合は時差を考慮して設定してください。例えば、JSTで2007-08-12 01:16を設定したい場合、UTCの2007-08-11 16:16を設定します。

3.17. dcache

D-cacheの有効/無効を設定します。

3.18. dhcp

...

3.19. echo

テキストを表示します。

Bishop # echo Hello World!
Hello World!

3.20. erase

NORフラッシュメモリを消去します。

NORのセクタ58から69を消去

Bishop # erase 1:58-69
Erase Flash Sectors 58-69 in Bank # 1
............ done

"1:58-69" は「1番目の NOR フラッシュメモリのセクタ58から69」を表します。 Bishop の場合、NOR はひとつだけなので常に "1:" を指定します。

3.21. flinfo

NOR フラッシュメモリの情報を表示します。

Bishop # flinfo

Bank # 1: CFI conformant FLASH (16 x 16)  Size: 4 MB in 71 Sectors
  AMD Standard command set, Manufacturer ID: 0xC2, Device ID: 0xA8
  Erase timeout: 16384 ms, write timeout: 1 ms

  Sector Start Addresses:
  00000000   RO   00002000   RO   00004000   RO   00006000   RO   00008000   RO
  0000A000   RO   0000C000   RO   0000E000   RO   00010000   RO   00020000   RO
  00030000        00040000        00050000        00060000        00070000
  00080000        00090000        000A0000        000B0000        000C0000
  000D0000        000E0000        000F0000        00100000        00110000
  00120000        00130000        00140000        00150000        00160000
  00170000        00180000        00190000        001A0000        001B0000
  001C0000        001D0000        001E0000        001F0000        00200000
  00210000        00220000        00230000        00240000        00250000
  00260000        00270000        00280000        00290000        002A0000
  002B0000        002C0000        002D0000        002E0000        002F0000
  00300000        00310000        00320000        00330000        00340000
  00350000        00360000        00370000        00380000        00390000
  003A0000        003B0000        003C0000        003D0000        003E0000
  003F0000   RO

3.22. go

指定したアドレスのアプリケーションを開始します。

3.23. help

モニタコマンドのヘルプを表示します。

3.24. icache

I-cache の有効/無効を設定します。

I-cache を有効:

Bishop # icache on
Instruction Cache is ON

I-cache を無効:

Bishop # icache off
Instruction Cache is OFF

現在の状態を表示:

Bishop # icache
Instruction Cache is ON

3.25. iminfo

U-Boot形式イメージのヘッダ情報を表示します。

00040000hにあるイメージのヘッダ情報を表示:

Bishop # iminfo 40000

   Image Name:   Linux-2.6.22.1-pylone0
   Created:      2007-08-01  17:22:53 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1787036 Bytes =  1.7 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK

3.26. imls

U-Boot形式イメージの一覧を表示します。

Bishop # imls
Image at 00040000:
   Image Name:   Linux-2.6.22.1-pylone0
   Created:      2007-08-01  17:22:53 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1787036 Bytes =  1.7 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
Image at 00330000:
   Image Name:   Ramdisk Image
   Created:      2007-07-29  18:21:03 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    638976 Bytes = 624 kB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK

NORのイメージ一覧が表示されます。SDRAMにあるイメージは表示されません。

3.27. in

IO ポートから入力します。

3.28. itest

...

3.29. loadb

シリアル経由で バイナリファイルをロードします(kermit モード)。

3.30. loads

シリアル経由で S-Record 形式のファイルをロードします。

3.31. loady

シリアル経由で バイナリファイルをロードします(ymodem モード)。

3.32. loop

...

3.33. md

メモリ (SDRAM, NOR) の内容を表示します。

30000000h - 300000FFh を表示:

Bishop # md.b 30000000 100

.b はバイトアクセスを意味します。.w で ワードアクセス、.l でダブルワードアクセスになります。

3.34. mm

アドレスをインクリメントしながら対話形式でメモリを変更します。

Bishop # mm.l 30900000
30900000: 00000000 ? deadbeaf
30900004: 00000000 ? deadbeaf
30900008: 00000000 ? deadbeaf
3090000c: 00000000 ? deadbeaf
30900010: 00000000 ? x     ← 終了

0123456789abcdef以外の文字で終了できます。

値ではなく"-"(マイナス)を入力することによってアドレスをデクリメントすることもできます。

.b はバイトアクセスを意味します。.w で ワードアクセス、.l でダブルワードアクセスになります。

3.35. mtest

メモリのテストを行います。

Bishop # mtest

{i} Ctrl + C で中断できます。

3.36. mw

メモリに書き込みます。

30900000h〜30901000h に 0xEE を 0x100 バイト書き込む:

Bishop # mw.b 30900000 ee 100

.b はバイトアクセスを意味します。.w で ワードアクセス、.l でダブルワードアクセスになります。

3.37. nand

NAND のコマンドを実行します。

3.37.1. nand info

NAND の情報を表示します。

Bishop # nand info

Device 0: NAND 128MiB 3,3V 8-bit, sector size 128 KiB
3.37.2. nand device

NAND デバイスを変更します。

BishopのNANDデバイスはひとつだけなので、このコマンドは使いません。

3.37.3. nand read

NAND を読み込みます。

3.37.4. nand write

NAND に書き込みます。

3.37.5. nand erase

NAND を消去します。

3.37.6. nand bad
3.37.7. nand dump
3.37.8. nand scrub
3.37.9. nand markbad
3.37.10. nand biterr
3.37.11. nand lock
3.37.12. nand unlock

3.38. nboot

NAND 上のイメージをブートします。

nboot コマンドはサポート対象外です。

3.39. nfs

...

3.40. nm

アドレスを固定して対話形式でメモリを変更します。

3.41. out

IO ポートに出力します。

3.42. ping

ネットワーク上のホストに ICMP ECHO_REQUEST を送ります。

192.168.1.1 に ping:

Bishop # ping 192.168.1.1
dm9000 i/o: 0x20000300, id: 0x90000a46
MAC: 00:1d:2d:00:00:0b

環境変数gatewayipにゲートウェイのIPアドレスを設定すれば、ローカルネットワークの外にも送ることができます。

3.43. printenv

設定されている環境変数の一覧を表示します。

Bishop # printenv

3.44. protect

フラッシュのプロテクトを解除します。

3.45. rarpboot

...

3.46. reset

ボードをリセットします。

3.47. run

任意の環境変数に設定されたコマンドを実行します。

3.48. saveenv

現在の環境変数を保存します。

Bishop # saveenv

Bishopの場合、NORの003F0000h〜に保存されます。アドレスマップも参照してください。

3.49. setenv

環境変数を設定します。

環境変数 ipaddr に 192.168.1.5 を設定:

Bishop # setenv ipaddr 192.168.1.5

3.50. sleep

スリープします。

5秒スリープ:

Bishop # sleep 5

3.51. tftpboot

TFTPによるネットワーク起動を行います。

TFTPサーバからU-Boot形式のLinuxカーネル (uImage) を転送して起動:

Bishop # setenv ipaddr <IP アドレス>
Bishop # setenv netmask <ネットマスク>
Bishop # setenv serverip <TFTP サーバの IP アドレス>
Bishop # setenv autostart yes
Bishop # tftpboot 30900000 uImage

30900000h は転送先アドレスです。Bishopの場合、30900000h 以降がダウンロード用領域に割り当てられています。詳細はアドレスマップ を参照してください。

tftpbootコマンドの引数がない場合、転送先アドレスとファイル名は、環境変数loadaddrとbootfileの値になります。

Bishop # setenv ipaddr <IP アドレス>
Bishop # setenv netmask <ネットマスク>
Bishop # setenv serverip <TFTP サーバの IP アドレス>
Bishop # setenv autostart yes
Bishop # setenv loadaddr 30900000
Bishop # setenv bootfile uImage
Bishop # tftpboot

環境変数autostartをyes以外の値に設定することで、起動をしないで転送のみを行うこともできます。フラッシュメモリに書き込むイメージを転送する場合はautostartの値を確認してください。

Bishop # setenv ipaddr <IP アドレス>
Bishop # setenv netmask <ネットマスク>
Bishop # setenv serverip <TFTP サーバの IP アドレス>
Bishop # setenv autostart
Bishop # tftpboot 30900000 uImage

出荷状態のBishopではloadaddr=30900000、bootfile=uImageになっています。

3.52. version

U-Boot のバージョンを表示します。

Bishop # version
U-Boot 1.2.0-pylone4 (Aug 12 2007 - 23:45:13)

4. 環境変数

4.1. autostart

bootmコマンドの挙動を指定する。

"yes"に設定するとbootp, rarpboot, tftpboot, diskbootの何れかでイメージがダウンロードされた後、自動的にbootmコマンドが実行される。

"no"に設定すると引数またはloadaddr環境変数で指定されたアドレスにイメージをコピーするだけでbootmコマンドは実行されない。

4.2. bootaddr

4.3. bootargs

OSに渡される引数 (Linuxであればカーネルパラメータ)

4.4. bootcmd

bootコマンドまたはbootdelayで指定された遅延時間後に実行されるコマンド

4.5. bootdelay

autoboot(自動的に起動)するまでの遅延時間(秒)。-1でautobootを無効化。

4.6. bootdevice

4.7. bootfile

TFTPでダウンロードするファイル名

4.8. dnsip

4.9. dnsip2

4.10. domain

4.11. filesize

4.12. gatewayip

4.13. ipaddr

4.14. loadaddr

4.15. loads_echo

4.16. netmask

4.17. nvlan

4.18. quiet

4.19. rootpath

4.20. serverip

4.21. splashimage

4.22. stderr

4.23. stdin

4.24. stdout

4.25. ver

versionコマンドで表示されるバージョン文字列です。この環境変数はリードオンリーです。

4.26. verify

nにすると、bootmやautoscriptコマンド実行時にU-Boot形式のチェックサムを確認しません。

4.27. vlan

5. 出荷時の環境変数

変数名
bootdelay3
bootargsroot=/dev/mtdblock5 rootfstype=jffs2
netmask255.255.255.0
ipaddr192.168.0.100
serverip192.168.0.1
bootfileuImage
bootcmdbootm 40000
splashimage320000

6. リンク

cc