2013年4月5日金曜日

U-boot のコマンド一覧や基本的なところ

正式名はDas U-Boot
http://www.denx.de/wiki/U-Boot
それぞれでカスタマイズされていることもあるので、鵜呑みにしないほうが良い…
この記事は2013年4月に書かれたものです。

基本的なところ

とにかく多機能。組み込み系のブートローダーだから高速だとか軽量だとか機能不足だとか安易に決め込まないほうがいい。
簡単なハードのデバッグならこれだけでいけることも多い。
The DENX U-Boot and Linux Guide (DULG) for canyonlands
u-boot shell - Emacsライクな操作ができる。何も入力しないでEnterを叩くと直前のコマンドを再実行する。
helpと叩けばとりあえず何かはでてくるはず



コマンドリスト

  • run $env
  • 変数を実行する
  • bootm $kernel_addr $init_addr
  • 指定した番地に格納されているカーネルとinitを起動させる
  • tftp $load_addr $file_name
  • tftpを使って$file_nameを$load_addrに展開する
  • fatload
  • print $env
  • 変数$envを表示する。ちなみに、printとだけ打つと全部の変数が出てくる。
  • setenv $env "hoge= $foo"
  • 変数を$envをセットする。スペース付きの場合は囲いが必要。 シェルスクリプトのように変数を入れることもできる。逆に適切にバックスラッシュとかを付けないと思わぬことになるかもしれない。 さらにパーサーに問題があって思わぬ展開になっていることがあるかもしれない。 ちなみに、setenv hogeのように中身を空っぽにしてコマンドを実行するとその変数が削除される。
  • saveenv
  • setenvで内容を書き換えても揮発する。これでFlash ROMなどに値が保存される 実際のセーブ先はソースコードを見る。
  • bubt ($file_name)
  • u-bootを更新するときに使う。仕組みはtftpで$file_nameのイメージファイルを取得しFlash ROMなど適切なところにオーバライドする。 予めネットワークの設定が必要 Burn an image on the Boot Nand Flash らしい。
  • メモリ操作系
  • mm $addr /li>
    アドレス番地を指定した後に、ライトしたい内容を16進でかく<
  • md $addr
  • Memory Display 指定したアドレスの内容を表示する
  • mw
  • nm mmと同じだが、同じアドレスを終了するまで何回も変更できる。GPIOレジスタを指定して次々値を変化させるなどで便利。

特別な意味を持つ変数

  • stdin
  • stdout
  • stderr
  • bootcmd
  • 起動時に自動で実行されるコマンドを入れておく変数。 tftp $kernel_addr uImage; tftp $initrd_addr initramfs: bootm $kernel_addr $initrd_addr などと書いておけば、tftpして起動する。
  • ipaddr
  • 自身のIPアドレス
  • netmask
  • 255.255.255.0でスラッシュ24と同じ意味
  • serverip
  • tftpなどで使われるアクセス先のアドレス



0 件のコメント:

コメントを投稿