LoginSignup
1
1

More than 3 years have passed since last update.

ブートモードについて

Last updated at Posted at 2020-04-05

eMMC Boot、SD Boot、Serial Boot、USB Bootが存在する。

eMMC Boot デフォルトのブート。eMMCに書かれているOSをブートする

  1. SD Boot SDカードからのブート。加えてeMMCに書かれているOSの書き換えができる
  2. Serial Boot SerialからFWをダウンロードしてブートする
  3. USB Boot USBからブートする

beagleboard.org ではSeiral BootとUSB Bootは対応していない。

ブートの切り替え

bootボタンを押していなかったらeMMCで起動
bootボタンを押して起動すると、SD Boot -> Serial Boot -> USB Bootの順で起動を試みる

Resetボタンによるリセットの起動だとbootボタンの確認をしないため、Power off/Onの起動でブートを切り替える必要がある

Bootコンフィグレーション

評価ボードなどのブートの順番はROMブート -> SLP(Secondary program loader)ブート -> uBootの順となる。SLPがデバイスを初期化してU-bootに制御を渡す.

ROMブートがbootボタンを読みとりどこからブートするかを決定する.そして,xloader(SLP)をSOC上のSRAMに展開して実行する.

xloaderはペリフェラルとクロックの設定をしてUBootをボード上のSDRAMに展開して実行する

uBootはデバイスツリーを読み取りカーネルをSDRAMに展開してbootする.

ブート

ubootの構築

linaroを使用するBBBはAM3358(Cortex-A8 32bit)のためarm-eabiを使用する.
linaroのgccを使用する.

yay -S arm-none-eabi-gcc74-linaro

configs以下に対応しているボードのコンフィグレーションが記載されている.今回は~am335xevmdefconfig~を使用する.

CROSS_COMPILE=arm-none-eabi-
HOSTCC=gcc-7.4
export CROSS_COMPILE
make am335x_evm_defconfig
make

SDカードへの書き込み

primaryパーティションをブータブルで作成してFAT32にてフォーマットする.
u-bootでビルドした~MLO~と~u-boot.bin~を書き込む.先に~MLO~を書き込む必要がある.

UART

シリアルはUART0に115200 8N1で出力されるので3.3V Serial-USB端子をJ1端子に接続する.

microSDカードをBBBに挿入して,bootボタンを押しながら起動する.
Serialにu-bootのログが表示されるので~Hit any key to stop autoboot~が出力されたら何かのキーを押下してu-bootのshellに入る.

ネットワークブート

ホストPC側でdnsmasqなどでDHCPとtftpを立てる.

u-bootのシェルで~dhcp~コマンドを実行するとネットワークブートが始まる.デフォルトでは~zImage~を0x82000000にロードする.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1