まずはブートmicroSDを作ってLinuxを立ち上げてみる。以下、Beaglebone Black Rev.CをBBBとしています。
注文 Rev. C
Rev. Aなどはブート切替ボタンもないのでSD起動できません。 ここの内容はRev.Cのみ対応です。
RSコンポーネントが安くて、在庫数も1万個以上で、4営業日となっていたので、10月20日注文。 当日に注文情報がメールされてきたので、以下情報を保存。 トラブル時に必要です。 私はRSコンポーネントにユーザーしなかったので下の情報は特に必要です。 RSの画面には未表示でしたがSeeed製でした。
- RSお客様番号
- お問い合わせ番号
- ご注文番号
10月25日 8時時点RSのWebでは未出荷->しかし実はシステムトラブルで、既に佐川急便のセンターに届いていました。 25日の昼前に届きました。 DigiKeyや秋月電子でもいいのかなと思います。
その他必要なもの
- Windows PCかLinux PCかMac。私の場合は組込Linux用に用意したuBuntuなので、以下もuBuntu。 Windows PCの場合、仮想化してuBuntuを入れて置かないとビルドができない。 WSLではビルドができない。
- USBキーボード(BBBの初期Debianは英語なので、私はEnglishタイプを使っています) ③ (Raspberry Pi4B用に買ったのを使っています。)
- Mini-B USB – USB TYPE Aケーブルは付属しています(BBBとPC:電源供給、通信)①
- microHDMI – HDMIケーブル ② (Raspberry Pi4B用に買ったのを使っています。)
- microSDHCカード(BBBはSDXCは対応していません)
- USB-TTL UARTコンバータと接続ケーブル (私は、DSD TECH SH-U09C5 を買いました)
- 電源5V、2A、5.5mm/2.1mm、極性は外がGND、内がVCC。 私はiPad用の電源に、USB-電源プラグケーブルを買いました。 USBでの電源供給は0.5Aまで。 BBBにいろいろ接続して電源供給が足りなくなると、USBでは動作しなくなります。
初めてBBB起動して確認
買ったBBBが正常に動作するか確認です。 以下の様に接続。 私の場合はuBuntuのPCですが、BBBの確認だけならWindowsでもできるはずです。 BBBは出荷時にボード上のeMMCにブートやDebianが格納されているので、まずそれが正常に起動するかどうかを確認します。
- 電源を投入すると、ディスプレイにlogin usernameとpasswordを聞かれるので、私の場合は『root』『root』と入れました。
- するとDebianにログインできました。 BBBのeMMCにDebianがちゃんと入っている事とBBBが動作する事が確認できました。
- また、uBuntu PCのファイルエクスプローラでみるとBeagleboneがディスクとして認識されていて、ディレクトリやファイルを見る事が出来ます。
- これで受取ったBBBが正常に動作していそうな事が分かりました。(全てを見たわけでないのでまだ完全とは言えないと思いますが。)
- ホストPC(uBuntu)のファイルを見ると、Beagleboneがディスクの一つとして認識されています。
- START.htmlを開けると、BBBのドキュメントが出てきます。
- BBBのEthernetは接続されていませんが、USB経由でBBBのWebserverはアクセスでき、ホストPCのブラウザから192.168.7.2をURLとして入力すると、Cloud9の画面が開きます。 そして『Ctrl~E』を押して少し待つと、オンライン統合開発環境のCloud9が開きます。(*Cloud9はawsに買収されたので、新規登録はaws上でしか出来ません)
sampleプログラムなど入っているので、実際実行したり、参考にしたりできます。
初期 Debian Linux log-in username, password
私のBeaglebone Black Rev CはDebian Busterが入っていました。
- username 『root』
- password 『root』でした。 下のリンクにはno passwordとなっていましたが…
- https://www.beagleboard.org/projects/yocto-on-beaglebone-black
- その他色んな意見もあります。『temppwd』『admin』『password』など。もし『root』、『root』でログイン出来なかった時は、上記の組み合わせを試してみるといいかもしれません。
BBBのeMMCに入っているDebianが立ち上がり、BBBが正常ということが分ったので、次はmicroSDから異なるLinuxで立ち上げてみます。
ちょっと困った(おまけ)
RPi4Bと違いBBBにはType Aのポートが1個しかないので、安くて小さいUSBハブを買いました。 しかし、microHDMIとType A USBの距離が近くて使えませんでした。 でもこのUSBハブはuBUntuにした古いPCにはUSBポートが2個しかないので重宝しています。(ケガの功名? あくまで前向き? 負け惜しみ?)このハブにこれから出てくるminicom用のUSB-UARTコンバータとBBBへの電源供給用USBを挿しています。
しかしBBBのチェック用としてBBBに接続したモニタには文字(CLI)コンソールしか表示されないので、キーボードだけでOKでした。なのでUSBは1個で事足りました。
BBB電源シャットダウン方法
今後microSDカードでブートする事が数多くあり、電源入り切を頻繁にするので、S3ボタンでの電源ON・OFF方法を説明します。
- RJ45コネクタのすぐ横のS3(POWER)ボタンを5~6秒ほど長押しで電源OFFできます。
- 電源ON時は、S3をカチッとさわれば起動します。
- 勿論、コンソール上でsudo shutdown -h nowでも電源を落とせます。その後、S3で起動できます。
- USBケーブル、電源プラグを抜いてOFFしたりでも出来ますが、動作の退避が出来ていない場合、microSDのファイル等壊してしまう可能性もあります。 パソコンの強制電源OFFと同じですね。
minicom準備 UART接続
minicomターミナルソフトでブートのメッセージをモニターします。 うまく起動しなかった時のエラーメッセージなどデバッグにはかかせません。 UART経由でのminicomを設定します。 BBBのUARTとuBuntu PCのUSBを接続する為、USB-UARTコンバータが必要です。
私はUSB-TTL UARTコンバータはこれを買いました。 将来のFPGA評価用に1.8Vや2.5Vがあるのは良いと思います。 またPIC等の5V時も役に立つかも。
DSD TECH SH-U09C5 USB to TTL UARTコンバーター FTDIチップサポート付き 5V 3.3V 2.5V 1.8V TTLサポート
6芯のケーブルが付属していました。 一方はフラットコネクタ形状で、BBBに取り付けやすそう。 もう一方はバラ線の挿入端子が付いているので、このコンバータのピンに挿していきます。
配線
(注意)上記のUSB-TTL UARTコンバータに付属のケーブルでの色で示しているので、別のケーブルの場合は、色を置き替えてください。 また同じコンバータを購入されてもケーブルやピン配が同じ都は限らないので、確認してください。接続するのは、3.3Vモードで3線だけです。
- GND ⇔ GND
- RXD ⇐ TXD
- TXD ⇒ RXD
配線はBeaglebone Blackの電源のOFFを確認して実施しなければなりません。
minicom
UART経由での通信をモニターするためのuBuntu用のターミナルです。 Teratermの・ようなもの。 以下でインストール。
$ sudo apt install minicom
installしたら、USB-UARTコンバータをUSBハブに差し込んで、BBBの電源を入れて、dmesgを実行する。 BBBは組み込まれているDebianがゆっくり立ち上がっていると思います。
$ dmesg $ dmesg | grep tty //表示が多くて見つけにくい時はこれを使う
usb 2-1.5 ハブの2がUARTになっていてttyUSB0に装着されていると表示されています。 便利ですね。 自動検出ですね。 minicomにこのttyUSB0を使います。
- usb 2-1.2: Product: USB KEYBOARD
- usb 2-1.5: Product: USB2.0 HUB
- usb 2-1.5.1: Product: USB Optical Mouse
- usb 2-1.5.2: Product: FT232R USB UART
- usb 2-1.5.2: FTDI USB Serial Device converter now attached to ttyUSB0(私の古いPC)
- usb 1-13.2: FTDI USB Serial Device converter now attached to ttyUSB0(私の新しいPC)
- usb 2-1.5.4: Product: BeagleBoneBlack
minicom設定
- *minicomはuBuntuにインストールしたので、プロンプトがbeagleboneの時はminicon not foundになる。 私は最初minicomインストールしたのにnot foundになるので何でだろうと思っていましたが、よく考えるとminicomでBBBにログインしたプロンプトで操作してたからでした。 uBuntu LinuxでBeaglebone LinuxのBash Shellを操作していると間違えますね。
- -sオプションで、minicomに入ってすぐ設定画面が出てくる。(minicom内ではCtrl+A〜Oでも設定できる)
$ sudo minicom -s
- 設定画面に入るので、
- 『A』を押して、私の場合はUSB-TTL UARコンバータがattachされた『ttyUSB0』とし『ENTER』
- 上記の配線でもFlow Control用のCTS, RTSは配線していないので、『F』『G』を押して両方『No』にして『ENTER』で戻る。
メニューに戻ったら、『Save setup as dfl』を選択して『ENTER』。これで次回minicom起動時にこの設定が使われる。
『Configuration saved』と表示されたら『Exit』を選択すると、minicomに入る。
そこで『ENTER』を押すと、login usernameとpasswordを聞いてくる。私の場合は、『root』『root』でした。 下の図では、最初のpasswordに何も入れずに『ENTER』を押したらincorrectでした。 これでUART経由でログインしてBBBのBash shellが動いています。
ip a
とすると、usb0とusb1にそれぞれ192.168.7.2 と192.168.6.2 のIPアドレスが表示されます。 BBBのUSBでのIPアドレスですね。 これでminicomの準備完了です。 では次にmicroSDから異なるLinuxでブートしてみます。
minicom tips
- minicom Crtl+Aでメニューが表示。
- minicom 終了は Ctrl+A ~ X ~ Yes
- minicom 設定 Ctrl+A〜O
- serial portの設定後、次回からの立ち上げは『$ sudo minocom』だけでOK。
$ sudo minicom --color=on
で起動すると色付きになる。 vi編集でも便利。 デフォルトはoff。 .bashrcのPS1部分を以下の様に編集して、プロンプトも色付きにする。~$ source ./.bashrc
で有効化。
export PS1=' \[\e[32m\]\h\[\e[0m\]: \[\e[34m\] \w\[\e[0m\] \$ '
ブートシーケンス(簡略版)
microSDでの立ち上げの参考として簡単なブートシーケンス書いておきます。 その2で更に詳しく説明します。
- 電源投入
- RBL(ROM Boot Loader)が実行されます。 RBLがMLOをMPU内部RAMにコピーして実行します。 RBLにはSoCのBOOT_PINのパターンでブートするデバイスが決まっています。(SoCのマニュアルに記載)
- MLOがU-BOOTをDDRにコピーして実行します。
- U-BOOTがDDR上で実行されます。
- U-BOOTがLinux KernelとでバスツリーをDDRにコピーして実行し、Kernelに実行権を渡す。
- Kernelがルートファイルシステムを起動してLinux Distributionが立ち上がります。
microSDカード パーティション作成
BBBはeMMCからブートするのですが、microSDカードでブートするため、microSDにブート用パーティションと、ルートファイルシステム用パーティションを作ります。 BBBはSDHCの32GBまでしか対応していないので、32GBを超える64GBや128GBでは動作しません。
SD形状のアダプタを使いmicroSDカードをuBuntu PCに挿入して、Terminalで『dmesg』するとmmcblk1と出てきました。 uBuntu PCでは/dev/mmcblk1がSDカードデバイスです。 因みに、BBBの回路はmmc0がmicroSDソケットに接続されているので、/dev/mmcbkl0がBBBでのmicroSDカードとなります。
GPartedインストール
*mkfsコマンドでもできるようですが、この方が簡単でした。
SDカードパーティション作成用にuBuntu SoftwareからGpartedを検索してインストール。 インストールするにはuBuntuのログインパスワードが必要です。
パーティション作成
- uBuntu Desktop画面左下のアプリケーションを開き、Gpartedを起動。
- (重要)起動したら、まずSDカードが選ばれているか容量やデバイス名を必ず確認する。 間違えると、PCの中身をすべて消してします。
- /media/ichiri/58… 上で右クリックし、ポップアップメニューから『アンマウント』を選択。 このmicroSDカードはFAT32なので全てWindows用になっています。 これではLinuxをブートできないし、Linuxのルートファイルシステムも動作しませんね。
- アンマウントが終わったら、再度 /media/ichiri/58…上で右クリックし、『削除』を選択。
- 『削除』したら『未割り当て』となるので『未割り当て』上で右クリックして『新規』を選択。
- 『新規パーティションの作成』画面が開くので
- 新しいサイズを約『1000MiB』
- ファイルシステムを『fat16』
- ラベルは何でもいいのですがわかりやすいように『BOOT』として『追加』。 このシリーズ中は全てこの/BOOT/で呼んで行きます。
- 新規パーティション#1が fat6、1.00GiBで作成されました。
- 下に操作保留履歴が表示されます。 これが表示されている間は本当には実行されていないので、もし表示されていたら、右クリックして『実行』を押すと、処理が完了して表示が消えます。
- 未割り当て上で右クリックして『新規』を選択
- 前方の空き領域は『0』として残りの領域を全て『ext3』ファイルシステムとする。
- ラベルはわかりやすい名前にする。ここでは『ROOTFS』としました。
- 保留中の操作を『実行』して、0件となったら、
- /dev/mmcblk1p1 fat16上で右クリックして『フラグの編集』を選択
- 『boot』にチェックを入れて『閉じる』
フラグに『boot』と表示されるのを確認したら、Gpartedを閉じる
Filesエクスプローラで見ると、先程作った『BOOT』と『BOOTFS』パーティションが左のメニューに現れています。
必要ファイルの取り込み
MLO(Memory Loader) 2ndブートローダ
- MLOはU-BOOTの一部を取り出している。 U-BOOTは大きいので、U-BOOT本体を呼び出す前処理用。 MLOとSPLはブートするメディアによって使い分けます。 SDだけのブートの場合はMLO。 SD〜UARTでのブートの時はSPLを使う。
- MLO=SPL+Image Header)
- Image Headerには以下の2つだけ入っている
- load_address(u-boot.imgをロードするDDRの先頭アドレス)
- size (u-boot.imgのサイズ)
デモのため、以下のリンクに入る
上記のリンクで、『pre-built-images』を選択。『Angstrom_Demo』、『MLO-beaglebone-2013.04』を選択して『Donwload』でダウンロードして私の場合は以下のようになるように変更。~/BBB_Workspace/EmbeddedLinuxBBB
~/BBB_Workspaceの下にダウンロードしたメインディレクトリEmbeddedLinuxBBB以下全て入ました。
MLOを/BOOT/へコピー
- microSDカードの『BOOT』パーティションに先程ダウンロードしたMLOファイルをコピーしなければならないのですが、GUIでのコピー、貼り付けはユーザー権限しかないので『BOOT』に貼り付けれません。
- そこでコマンドラインからMLOファイルがあるディレクトリに移動して、microSDの/BOOT/にコピーします。
- MLOのあるディレクトリは、私の場合は、~/BBB_Workspace/EmbeddedLinuxBBB/pre-built-images/SD-bootです。
- microSDカードの/BOOT/は、私の場合、/media/ichiri/BOOT/になっています。
- コピーして貼り付けるファイル名は『MLO』だけです。 ROM内の1st ブートローダ RBLが認識できるファイル名は拡張子なしの『MLO』です。
- microSDとホストPCのホームディレクトリでは権限が異なるので、ファイルエクスプローラではコピー出来なかったので、コマンドプロンプトでコピーした。
$ cd ~/BBB_Workspace/EmbeddedLinuxBBB/pre-built-images/SD-boot $ cp MLO* /media/ichiri/BOOT/MLO
- microSDカードの『/BOOT/』の中に『MLO』が作成できました。
- この状態でmicroSDカードを取り出す前に、microSDカードをアンマウントする。(BOOTの右の上矢印をクリックする。 或いは、右クリックし『eject』。)
- BBBの電源をOFFにする。BBBの『POWER (S3)』ボタンを長押ししてPower Downモードに入る。 電源LEDがOFFになる。
- microSDカードを挿入する。
- UART-USBケーブルで接続してminicomの準備をする(これはこのページの上の方を参照ください。)
- BBBの S2(BOOT SEL)ボタンを押したままの状態で、S3(POWER)を押して離す。 これでBBBのMPUはeMMCでなくmicroSDカードからの起動します。
- するとminicomの上部にU-BOOT SPLと表示されるがMLOはU-BOOTで作った一部を切り出して、若干の情報(サイズなど)追加しているのでSPLと表示される。 MLOやSPLはどのメディアからブートするかによって使い分けます。 (両方いれていてもOK)
- 最後に#ERROR#と出ているがu-boot.imgをまだ入れていないので『error reading image u-boot.img』と表示される。 しかし、これはこの状態でMLOは正常に読みされ動作している事がわかります。 また、MLOは次にu-boot.imgを探しているのが分かります。
- この様に、minicomでエラーを確認することが出来、エラーが出た時は内容を確認してデバッグしていきます。
- 次のU-BOOTイメージファイルは、上記エラーで表示されたように、小文字のu-boot.imgでなければ認識されません。
U-BOOT image (u-boot.img)
- 次に、u-boot.imgを入れます。
- u-boot.imgが各種U-BOOTのコマンドに対応しているバイナリファイル(実行形式)。 Linuxが立ち上がる前に、Ethernet(tftp)やUART転送のXmodemなどはU-BOOTがサポートしている。 その為。Linuxブート用に必要なファイルをLinuxが立ち上がる前に、tftpやXmodemなどで取得出来る。 U-BOOTはいろいろな形でLinuxを立ち上げる為の機能が搭載されている。
- 再度micorSDカードをuBuntu PCに挿して、ダウンロードしてU-BOOTイメージファイルをmicroSDカードのBOOTパーティションにコピーする。
- u-boot.imgもMLOと同じディレクトリにある。(今後、U-BOOTもビルドした時に、独自のu-boot.img、MLO、SPLが生成される。)
- ファイル名は『u-boot.img』でないと認識されない。
$ cd ~/BBB_Workspace/EmbeddedLinuxBBB/pre-built-images/SD-boot $ cp u-boot* /media/ichiri/BOOT/u-boot.img
U-BOOTイメージができました。
- この状態で先ほどと同じ順番でBBBをmicroSDから起動すると、
- 今度はreading u-boot.imgと表示されFile not found /boot/uImage でとまります。 これはLinux Kernelイメージ(uImage)がない為です。 これでMLO、u-boot.imgが正常動作して、次のKernelを取り込もうとしているのが分かります。
Linux image (Linux kernel image:uImage)
- U-BOOTを使って立ち上げるので、zImageでなくuImageがLinux Kernelのファイル名になります。
- MLO、u-boot.img同様に、既にビルドされたuImageをmicroSDの/BOOT/にコピーする。
- ファイル名は『uImage』でなければならない。『I』だけ大文字。
$ cd ~/BBB_Workspace/EmbeddedLinuxBBB/pre-built-images/SD-boot $ cp uImage /media/ichiri/BOOT/
Device Tree
- Device Treeには各種デバイスの情報(メーカ名、品番、アドレス、接続方式その他)が含まれています。
- .dtbは、Device Tree Blobの略で、バイナリ化されたデバイスツリーで、Flattened Device Tree(FDT)とも呼ばれます。 バイナリ化される前のソースファイルの拡張子は、親ファイルが.dts。 インクルードされる子や孫ファイルが.dtsiとなっています。
- am335x-boneblack.dtbは、BBBの回路情報が入ったDevice Tree Blobファイルです。(今後、.dtbを単にデバイスツリーと呼びます)
- .dtbはKernelをビルドすると生成されます。 今回は既に生成されたものを使います。
- Device TreeもmicroSDの/BOOT/に入れます。
- MLO、u-boot.img、uImageと一緒に、~/BBB_Workspace/EmbeddedLinuxBBB/pre-built-images/SD-boot に入っています。
- Linux Kernel Image(uImage)は、このDevice Treeを見て各種ドライバを設定するので、この.dtbもmicroSDの/BOOT/に入れておきます。
$ cd ~/BBB_Workspace/EmbeddedLinuxBBB/pre-built-images/SD-boot$ $ cp am335x-boneblack.dtb /media/ichiri/BOOT/
uEnv.txt
- U-BOOTの環境設定ファイル。(*注意:今回はU-BOOT-2017で実行しているので、uEnv.txtは使えます。 しかしU-BOOT-2021以降はboot.scrを使わなければなりません。)
- 今回用のuEnv.txtは既にダウンロードしているので、
- 以下の用にしてSDカードの/BOOT/にコピー。
$ cd ~/BBB_Workspace/EmbeddedLinuxBBB/pre-built-images/Angstrom_Demo $ cp uEnv.txt /media/ichiri/BOOT/
uEnv.txtの中身は、こんな感じ。 UARTの設定、IPの設定はなど。
console=ttyO0,115200n8 ipaddr=192.168.27.2 serverip=192.168.27.1 loadaddr=0x82000000 fdtaddr=0x88000000 loadfromsd=load mmc 0:1 ${loadaddr} /boot/uImage;load mmc 0:1 ${fdtaddr} /boot/am335x-boneblack.dtb linuxbootargs=setenv bootargs 'console=${console} root=/dev/mmcblk0p2 rw' uenvcmd=setenv autoload no; run loadfromsd; run linuxbootargs; bootm ${loadaddr} - ${fdtaddr}
ROOT FILE SYSTEM
- Linux Kernelだけでは、Bash Shellやls、cd、cpなどのコマンド群がない為、Linux Distributionとして動作しません。 このROOT FILE SYSTEMにそれらの機能が搭載されています。
- 下記のリンクから『Angstrom-systemd-image-eglibc-ipk-v2012.12-beagleboard.rootfs.tar.xz』をダウンロード。
Downloadしたら、~/BBB_Workspace/Downloads/に移動しました。 移動後、右クリックで解凍(Extract here)する。
解凍したディレクトリ(~/BBB_Workspace/Downloads/Angstrom-systemd-image-eglibc-ipk-v2012.12-beagleboard.rootfs)の中を見ると以下のようにファイルシステムが入っている。
/ROOTFS/にコピー
- コマンドプロンプトから~/BBB_Workspace/Downloads/Angstrom-systemd-image-eglibc-ipk-v2012.12-beagleboard.rootfsに移動して、これらのディレクトリごとファイルを全てSDカードの/ROOTFS/パーティションにコピーする。
- /ROOTFS/パーティションは、私の場合、/media/ichiri/ROOTFS/に自動的にマウントされていました。
- マウントされていない場合は、sudo mount /dev/mmcblk1p2 /media/ichiri/ROOTFS/ などで予めマウントする必要があります。
$ cd ~/BBB_Workspace/Downloads/Angstrom-systemd-image-eglibc-ipk-v2012.12-beagleboard.rootfs $ sudo cp -r * /media/ichiri/ROOTFS/
microSDへの書き込みが速くないのと、5000ファイル、50MB弱なので若干時間がかかります。
microSDで起動
SDカードをuBuntuPC からアンマウント
- コマンドプロンプトからumountする場合は、/BOOT/も/ROOTFS/も両方umountする。
- ファイルエクスプローラーからは、/BOOT/の横の上矢印をクリックするか、/BOOT/上で右クリックして『eject』を選ぶと、/BOOT/も/ROOFS/もunmoutされた。
$ umount /media/ichiri/BOOT $ umount /media/ichiri/ROOTFS
$ sudo minicom //この後sudoパスワード入力 //minicomが立ち上がったら、BBBのログイン『root』『root』 *私の場合です。 # shutdown -h now
電源ケーブルを抜いてSDカードをBBBに挿入。
電源投入
- S2ボタン(BOOT SEL)を押しながら電源投入。
- S2ボタンを押しながら電源ケーブルを差し込むのが難しい場合は、一旦起動完了させて、minicom画面にloginのメッセージがでたら、S3(POWER)を長押しして電源を切り、S2(BOOT_SEL)を押しながら、S3(POWER)を押して再起動。
- 下のように出てきたらAngstrom で立ち上がりました。
BBBのブートシーケンス
microSD(MMC0)から起動。
BBBのRevCの回路図から(DNI:Do not insert)読み取ると、SYSBOOT[15:0]=0100_0000_0011_1100でSYSBOOT[4:0]=11100 S2(BOOT_SEL)はSYSBOOT2に接続されていて、S2が押されるとSYSBOOT2=0となるので、SYSBOOT[4:0]=11000となる。 これらのBOOT SequenceはTIのAM335x Technical reference manualのSYSBOOT Configuration Pinsから以下のようになる。 BBBではSoCのMMC1端子にはeMMCが接続されていて、SoCのMMC0端子にはmicroSDが接続されている。 なので、S2が押されていない時は、最初にeMMCから起動を試みる。 S2が押されている時は、SPI0から起動を試みるが、SPI0にはEEPROMなど接続されていない為、次のMMC0のmicroSDからのブートとなるのですね。
S2(BOOT_SEL)押さずに電源投入した時
MMC1(eMMC)からMLOを探しに行く。 BBB購入時にはeMMCにMLOがあるので、eMMCのuEnv.txtを読み込み、eMMCのに入っているLinuxが立ち上がる。
S2(BOOT_SEL)を押しながら電源投入した時
まずSPI0に接続されたEEPROMないのMLOを探しに行く。 しかしBBBはSPI0には何も接続されていないので、MMC0(microSD)にMLOを探しに行く。
その他
BBBのデバイス名
- mmcblk1 — eMMC
- mmcblk0 — microSD、mmcblk1p1はmicroSDのパーティション1。つまり/BOOT/。
- ttyO0 — UART
SDパーティションに入るファイル
/BOOT/ 約1GB、fatファイルシステム、bootフラグ
- MLO
- u-boot.img
- uEnv.txt
以下の2つは、RAM(DDR)に入れるので、tftp転送からで直接DDRに入れる場合は、/BOOT/に入れておかなくても良い。 microSDやeMMC単体での起動の場合は、/BOOT/に入れておく。
- uImage
- .dtb
/ROOTFS/ 残りGB、ext3ファイルシステム
- Distributionで必要なファイルシステムの全てのディレクトリとファイル。
BBBバージョン
root@beaglebone:~# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
JTAG
BBBでは、JTAGを使用できますが、ピンが実装されていないので別途実装する必要があります。
シャットダウン
BBBの電源を落とす前に強制シャットダウンする方法
# shutdown -hp now //即時シャットダウン。 -hは、シャットダウン後システム停止。 -p電源を切る。 # reboot -F //強制リブート fsckを行う。 -fだとfsckしない。 //root ユーザーでなければ $ sudo shutdown -hp now $ sudo reboot -F
参考
AM335x Technical Reference Manual
5118ページもある。SYSBOOT Configuration Pins SYSBOOTピンによるブートシーケンスの順番が書かれている。
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf
コメント