strace
システムコールのログを取ります。
Solaris では、truss
./configure --host=arm-linux --prefix=ユーザーランド CC=${CROSS_COMPILE}gcc
make
sudo make install
インストール
ltrace
ダイナミックリンク・ライブラリの呼び出しのログを取ります。
その他
実行ファイルなどの情報を表示する
$ uname -a
Linux Vine215 2.2.18-0vl4.2 #1 Tue Jan 23 16:57:43 JST 2001 i586 unknown
バージョン
カーネルのソースは誰でもダウンロードできます。
ソース HTML
ターゲット・ボード上で動く高機能モニタです。
OS をロードしたり、OSなしのプログラムを起動します。
インストールは、ホスト Linux で行い、コマンドはターゲットボードに入力します。
(cache)
イメージ作成コマンド
参考
tftp クライアント
tftp サーバー
ダウンロード
いろいろなクライアントがあります。
ターゲット・ボード
ホスト Linux
シリアル・ターミナル
クライアント
U-Boot シェル・サーバー
操作
u-boot.srec
イメージ
コマンド
tools/mkimage をパスの通ったフォルダ(/usr/local/bin など)にコピーします。
ダウンロード
メイクしてできたバイナリ u-boot.srec を、ターゲットボードに焼いてください。
(s-boot などボードのローダーを使ってください。)
→ u-boot-1.2.0-arm1.tar.bz2
NE1-TB用
cd u-boot-1.2.0-arm1
make distclean
make ne1tb_config
make
解凍してできたフォルダに cd して、次の手順でメイクします。
参考
sudo cp tools/mkimage /usr/local/bin
ボードのローダーから、U-boot を起動してください。
cd ~/share
tar xvjf u-boot-1.2.0-arm1.tar.bz2
を開いて、圧縮ファイルがあるディレクトリに移動して解凍します。
~/share
で共有している Linux のディレクトリに、圧縮ファイルをコピーします。
U-Boot 1.2.0 (Apr 14 2008 - 20:31:39) for the NaviEngine1
CPU: MPCore at 399.600 MHz
Board: NE1-TB with NE1-RGB, NE1-TB/T
FPGA: Ver.480a
DRAM: 256 MB
Flash: 64 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
$
NE1-TBの場合:
uboot_sample.tar.bz2
ターゲットOS = U-Boot) などをメイクして、イメージを作成します。
(何もしないプログラム。 ターゲットCPU = ARM,
uboot_sample.ubt をダウンロードするように環境変数を設定します。
(saveenv するときは、電源を入れなおしてから)
$ setenv bootfile /tftpboot/uboot_sample.ubt
$ saveenv
U-Boot のシリアルターミナル:
ダウンロードして実行します。(dhcp コマンドと bootm コマンド)
$ dhcp
SMSC9118 is identified successfully.
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 192.168.100.48
TFTP from server 192.168.100.1; our IP address is 192.168.100.48
Filename '/tftpboot/uboot_sample.ubt'.
Load address: 0x80007fc0
Loading: ###########
done
Bytes transferred = 72 (48 hex)
$ bootm
## Booting image at 80007fc0 ...
Image Name: GNUC uboot_sample
Created: 2008-05-19 6:17:37 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 8 Bytes = 0 kB
Load Address: 80008000
Entry Point: 80008000
OK
Starting kernel ...
$
DHCP サーバから取得した値を、次の環境変数に設定します。
他
の値を見て、tftpboot (下記)か nfs を実行します。
指定したアドレスに、ホストにある
の値が no でなければ、
の内容を実行します。
/
イメージ・ファイルをダウンロードします。
bootm (ブート)を実行します。
ターゲットボードを操作するシリアル・ターミナルからコマンドを入力します。
dhcp コマンドを実行すると tftpboot も自動的に行います。(環境変数で動きは変わります)
bootm で実行開始します。
IPアドレスを取得する
tftp サーバからダウンロードする
実行開始する
(saveenv するときは、電源を入れなおしてから)
$ setenv bootfile /tftpboot/uboot_sample.ubt
$ saveenv
$ dhcp
$ bootm
(他にもあります)
ethaddr=00:0a:a3:02:09:20
printenv ethaddr コマンドで分かります。
dhcp コマンドで取得できたときにも表示されます。
表示されないときは、別のブートローダーを試してください。
uboot に付属のイメージ作成ツール
パスの通ったフォルダにコピーしてください。
(p72)
Linux カーネルに渡すパラメータ。
tftp サーバの IP アドレス
ダウンロードするカーネル・イメージのファイル名
U-Boot を実行しているデバイスの IP アドレス
ダウンロード・プロトコル
前回ダウンロードしたファイルのサイズ
前回ダウンロードしたファイルの内容を格納したアドレス
値が yes なら、bootm を実行します。
値が yes なら、autoscr を実行します。
U-Boot 起動時に実行するコマンド。
環境変数を表示する
環境変数を設定する
環境変数一覧
U-Boot 起動時に自動実行を開始したときに実行するコマンド。
U-Boot のプロンプトで使えるコマンドを指定できます。
; で区切ると、複数のコマンドを実行できます。
setenv bootcmd 'cp 0x00200000 0x40007fc0 0x400000 ; bootm 0x40007fc0'
サンプル
フラッシュにあるイメージをコピーしてから、ブートします。
サンプル
setenv bootcmd 'run bootpcmd'
環境変数 bootpcmd の値を U-Boot コマンドとして実行します。
一般的には、ここで指定している環境変数名を変えることで、ブートの方法を
切り替えます。
参考
bootcmd=bootp ; bootm
サンプル
を実行します。
root=/dev/nfs ip=dhcp console=ttyS0,38400 mem=128M
例:
Linux カーネルに渡す early_param パラメータ。 カーネルが定義しています。
ホストの中で、ユーザランドがあるパス。
このパスは、カーネルがブートするときに一時的にできる RAMDISK です。
例:
シリアルポートの設定。 ボードによって決まります。
参考
各パラメーターは空白文字で区切ってください。
root=/dev/nfs
例:
例:
NFS (ネットワーク・ファイル・システム)
デバイス番号。 カーネル(ボード)によって異なります。
179:1 = MMC(SD カード)のパーティション1
console=ttySC0,115200
例:
/dev/ttySC0 を使い、ボーレートは、115200
ip=dhcp
console=ttyS0,38400
例:
/dev/ttyS0 を使い、ボーレートは、38400
RAM のサイズ。 ボードによって決まります。
例:
mem=128M
主な early_param
最初のプロセス(通常、init)のパス。
例:
例:
init=/init
省略すると、/bin/init などを探します。
Android は通常 /init です。
root=179:1
nfsroot=192.168.0.1:/export/rootfs
DHCP から与えられた IP アドレスを、ターゲット・ボード
の IP アドレスにする
nfsroot パラメーター
例:
DHCP サーバに option root-path が設定してあれば、nfsroot は省略可能です。
/dev/mmcblk0p1=179:1
ip=192.168.0.11
例:
ターゲット・ボードの IP アドレスを指定する
(DHCP サーバ不要)
U-boot が bootp を使って IP アドレスを入手することとは別に、
カーネルが dhcp を使って IP アドレスを再入手します。
NFS を使わなくても、別の用途に LAN を使うときは、ip パラメーターが必要です。
例:
ip=192.168.0.11:192.168.0.1:192.168.0.1
ボードの IP アドレス、ゲートウェイ、DNSサーバ?
reset
(パラメータなし)
ソフトウェア・リセットします。
p19
setenv baudrate 9600
setenv (name) (value)
例:
環境変数の値を設定します。
設定が必要な環境変数の内容は、実行しようとするコマンドの説明を参照してください。
リセットすると設定値は戻ります。戻らないようにするには、
setenv serverip
環境変数を未定義にします
setenv bootcmd 'bootp ; bootm'
空白文字を含む場合は ' ' で囲む
" " で囲むことはできません。
変数の展開
setenv を実行するとき、${VAR} 形式の変数参照があれば、変数の値に展開されます。
ただし、setenv を実行したときにのみ展開されます。
printenv [name]
環境変数の値を表示します。
name が省略されると、すべての環境変数の値を表示します。
name は、環境変数名です。 環境変数名の一部だけ指定した場合、表示されません。
p67
p70
saveenv
(パラメータなし)
すべての環境変数を保存します。
DHCP で取得した IP アドレスなども保存されてしまうので 0.0.0.0 に戻すなど
してから保存してください。
setenv ...
setenv ipaddr 0.0.0.0
setenv serverip 0.0.0.0
setenv netmask 0.0.0.0
saveenv
(saveenv するときは、電源を入れなおしてから)
setenv ...
saveenv
または、
run コマンド
環境変数に設定されている文字列を U-Boot のコマンドとして実行します。
run (name)
p43
p43
bootp [addr] [filename]
DHCP のベースとなったプロトコルで、bootp サーバー、または DHCP サーバーから
IPv4アドレスを取得します。
autoload 環境変数が設定されていたら、続いてイメージのダウンロードを行います。
実行すると、bootp サーバから取得した値を、次の環境変数に設定します。
DHCPサーバの IPアドレス
U-Boot を実行しているデバイスの IP アドレス
読み込むファイル名。 bootp の filename パラメーターが指定されて
いたら、bootp サーバから送られてきた内容を無視して、filename
パラメーターの値が設定されます。
bootp コマンドが参照する環境変数
tftp サーバの IP アドレス
ダウンロードするカーネル・イメージのファイル名
Linux カーネルに渡すパラメータ
ダウンロード・プロトコル
dhcp コマンドが参照する環境変数
ダウンロードするカーネル・イメージのファイル名
tftp サーバの IP アドレス
tftp サーバの IP アドレス
ダウンロードするカーネル・イメージのファイル名
Linux カーネルに渡すパラメータ
実行すると、DHCP サーバから取得した値を、次の環境変数に設定します。
DHCPサーバの IPアドレス
U-Boot を実行しているデバイスの IP アドレス
読み込むファイル名
他にもあります
p47
n で始まる値
NFS
その他、設定なし
ダウンロードしない
NFS でダウンロードします。 → nfs コマンド(パラメータなし)
tftp でダウンロードします。
dhcp
(パラメータなし)
ダウンロード・プロトコル
の設定値に応じたコマンドを実行します。
ダウンロード・プロトコル
からIPv4アドレスを取得します。
続いて、
サーバから応答が無いとき、Ctrl+C で中断できます。
setenv bootfile /tftpboot/uImage
DHCP サーバーの設定を使うすることもできます。
p71
tftpboot [addr] [filename]
【引数】
addr
filename
ダウンロードしたファイルの内容を格納するアドレス
ダウンロードするファイル名(tftp サーバにあるファイル名)
引数省略
環境変数が未定義
filename
addr
引数を省略すると、次のように指定されたときと同じ動きになります。
からファイルをダウンロードします。
loadaddr 環境変数の値
0x80400000 (?)
(IPアドレス).img (例:CA03A8C0.img)
の値
ダウンロードが成功したら、
fileaddr
ダウンロードしたファイルの内容を格納したアドレス
filesize
ファイルサイズ
の設定値に応じたコマンドを実行します。
続いて、
autostart
値が no 以外に設定してあれば、bootm を実行します。
値が yes なら、autoscr を実行します。
autoscript
を設定します。
filename は tftpd の公開フォルダからの相対パス
DHCP サーバを使わないときい、tftpboot を使います。
bootm を実行しない tftpboot コマンド。
bootm [addr [arg1 [arg2 …]]]
で作成したイメージファイルから、プログラムを起動します。
【引数】
arg1…
ダウンロードしたファイルの内容が格納されているアドレス
プログラムに渡すパラメータ
引数省略
addr
引数を省略すると、次のように指定されたときと同じ動きになります。
最後にダウンロードしたアドレス
addr
トラブルシューティング