組込みLinuxは学ぶ事が非常に沢山あって、何処から手を付けていいか解りません。 しかし、必ず必要になるのが、Linuxを搭載できる開発ボードです。 開発ボード的にRaspberry Pi等もあり私も持っていますが、組込みLinuxを学ぶに際して私はBeaglebone Blackを買い足して始めてみました。 メリットとデメリットがあるので、紹介したいと思います。
Beaglebone Blackとは
Texas Instrumentsが自社のデバイス、特にSoC(System On Chip)やその電源IC等をプロモートするために販売しているボード。 形状はRaspberry Piとほぼ同じ。 しかし、プロセッサーのパワーがRaspberry Pi4Bほどなく、値段も安い。(RS Componentsやアスクルなどで買えます)
私が使っているのは、Rev.CでRev.Aとは若干異なります。(Rev.AはResetやSYSBOOT スイッチ等が無い) バージョンもどんどん変わる可能性があるので、仕様は、以下のURLで確認できます。
メリット
早速ですが、メリット、デメリットを紹介します。 私は、組込みLinuxのボードを開発しようとしていて、独学で組込みLinuxを1から始めるのにBeaglebone Blackを選んだ理由はズバリこれらです。
1. 全てオープンソース
ソフトウェア(Kernel、ルートFS、ブートなど)のみならず、なんとハードウェアの回路もコピーして商用で使っても構わないのです。 なので、全ての回路が書かれた回路図をインターネットから簡単に入手できます。 これがあると、少なくとも同じSoCを使って、形状を変えてインターフェースを変えるだけで、自分の商品が出来てしまいます。 また、メインのSoCを変更しても、この回路を参考にしてmicroSD、USB、UART、Ethernet、HDMI等、参考にして回路を設計すれば、何も無いところから始めるより格段に作りやすい思います。 組込み初心者としては本当に心強い事です。 因みに、Raspberry Pi4B は回路図は非公開で、インターネットにある回路も省略版しかありません。 しかも、SoCチップはRaspberry Pi FoundationがBroadcomにカスタマイズを依頼して作っているので、SoCチップは買えず、参考に出来ないのです。 因みに、私はメールでRaspberry Pi Foundationにも問い合わせましたが、何の返信もありませんでした。
TIのSoC AM3358は市販品で、Technical Reference Manualも5000ページを超えるもので全てが記載されています。 またネット上でも使い方が掲載されています。 特注品で情報も中途半端では完全な勉強は出来ず、回路設計まで出来そうもないと思ったのが最も大きな点です。
2.オンラインコース
そしてこの点も大きなメリットです。 独学するには本で進めるのも一つですが、本は情報が古いのと、情報が少ないのと、ソースコードをコピー&ペースト出来、技術的なことは私の場合あまり本を使いません。
そこでYoutube等、いろいろオンライン講座を組込みLinux(Embedded Linux)で検索すると、UdemyでBeaglebone Black rev.C を使って学ぶEmbedded Linuxコースがあり、Raspberry Piでの良さそうなコースがありませんでした。 安いし、質問もできるし(英語ですが)、なんとか独学できそうだったので、これを購入してはじめました。 このコースは非常に良かったです。 ブートの説明、ブートの作り方、Kernelの作り方、ルートファイルシステムの作り方、Buildrootツールの使い方、microSDからのブート、TFTPやUARTでのブート、NFSでのブート方法など、組込みLinuxの初歩としては非常に充実しています。 難点は、2017年に作られているので、ところどころコースの内容通りではうまく行かず、自分で試行錯誤する時間がコースの何倍もかかりましたが、そのおかげで理解は更に深まりました。
3. 安い回路
商品を開発する際にコストは非常に重要です。 Raspberry Piは大量(年70万台?)BroadcommにSoCをチップ化してもらっているので、安価に買えると思いますが、私の場合はそうは行かないので、Raspberry Pi 4Bほどパワフルでなくても、Linuxがそこそこ走る商品開発の参考にするには、Beaglebone Blackはちょうど程よいもののように思いました。
以上、3点がメリットです。
デメリット
組込みLinux勉強用としてあまりデメリットは思いつきませんが、強いて言うなら1点ですね。
TI独自ブート MLO
組込みLinuxではほぼ定番のU-BOOTでブートローダーを作るのですが、通常はu-boot-spl.binをmicroSDに入れて起動するのですが、TIの場合はMLOというファイル探しにいきます。 ファイル名が2個出てくるので、最初ちょっとだけ覚えにくかったです。 MLOはu-boot-spl.binに追加して、TI SoC用にKernelイメージをDDRの何処にいれるか明確な定義をヘッダーとして持たせているファイルです。 まあ、U-BOOTは、何も指定しなくてもu-boot-spl.binもMLO両方ビルドするので、なんにも手間ではないし、これでMLOが何か迷わないし、私もTIとそれ以外のSoCを扱える事になったので、今の時点では結果的にはプラスと思っています。
あとは改善して欲しいことくらいですね。
スイッチが小さい
Raspberry Piに劣っている等とは関係なく、Beaglebone Blackにはスイッチが3つあります。 5秒くらい押し続けると電源をシャットダウンできる電源スイッチ。 それと、ブートデバイスの順番を変更できる、SYSBOOTスイッチ。 SYSBOOTスイッチはmicroSDからブートする時に使うので、組込みLinuxでいろいろ試す際に毎回押します。 勿論、電源スイッチも頻繁に押します。 しかし、これらのスイッチが2x3mmくらいで小さくて、指の細い私でも押しづらいので、スイッチがもう少し大きければ、組込みLinux勉強用としてはめちゃくちゃいいと思います。
注意点
- WifiやBluetoothはありません。 しかしUSBのドングルでなんとかなるようです。
- 電源はmini USBポートから供給できます。 PCとUSB接続すると電源と、通信と、IP通信も出来ます。 しかし、増設IOに拡張したりすると、miniUSB経由での供給では容量が足りなくなるらしく、電源プラグ経由で供給しなければならなりません。 私の組込みLinuxの勉強では電源も買ったのですが、mini USB経由の供給だけで事足りています。
- microSDは、SDHCなので最大で32GBです。 Raspberry Pi 4BはSDXCを使えるので512GBまで使えます。 組込みLinuxの勉強では32GBでも十分です。
- USB Type-Aポートが1つしかありません。 なので、Beaglebone Blackを直接操作したい時は、USBハブ等が必要です。 しかし私の場合、USB Type-Aは最初の動作確認でしか使っておらず、それも1ポートで事足りました。 接続例は以下の通りです。
使ってみて本当に良かったので組込みLinuxを勉強する為のBeagleboneのメリットデメリットを紹介しました。
よかったら、以下のリンクも覗いてみてくださいね。
『組込みLinux Beaglebone Black でやってみる その1 microSDで起動』
コメント