Betaflight カスタムファームを作るよ

そろそろカスタムファームをビルドする時期に来たようだ。

ドローンのフライトコントローラ(FC)は、STM32 のマイコンがベースになっている。
電子工作でおなじみの ESP32 とかと似てる ARM ベースのマイコン。
Cで書かれているので、それをコンパイルできる環境があればよい。
今回は Windows の WSL を使って、Ubuntu を使った環境の作り方をまとめてみたよ。

WSL をつかって Linux をインストールする方法はコチラを参照。
https://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
前回の記事にあるとおり、Ubuntu18.04LTS が無難じゃないでしょうか。
今回は 18.04 で進めましょう。記事にあることを全部やる必要はなし。
インストールが終わって立ち上がったら、最初にユーザとパスワードの設定を求められるのでテキトウに設定。
あとは下記のコマンド打っていく。
なお Ubuntu 実行窓は、右クリックでペーストできる。

$ sudo apt update
$ sudo apt upgrade

これはパッケージを最新にするもので、ubuntu でなんかするときは、おまじないのように実行する。
パッケージが新しくなって動かないものが出たりもあるけど、まあやっとけ。
提供されているイメージが古いせいか、今やると142パッケージがアップデートされた。
まーまー時間かかる。
続いてコンパイルに必要なグッズを入れる。
git とか gcc とか make とか。

$ sudo apt install git gcc build-essential

Windows は x86-64 ベースなので、ARMのクロスコンパイル環境を入れる。

$ sudo apt install gcc-arm-none-eabi

あと Ruby も使うようなので、ココで入れておきましょう。

$ sudo apt install ruby

最後にインストールに使った一時ファイルを削除しておきましょう。

$ sudo apt clean

さて実際にビルドしてみましょう。
Betaflight のソースツリーを git で引っ張ります。

$ git clone https://github.com/betaflight/betaflight

iNav の場合はこんな感じ。

$ git clone https://github.com/iNavFlight/inav

各フォルダに入って。(cd betaflight とか cd inav とか)
まずは最初に一発。これは1回やればOKだと思う。

$ make arm_sdk_install

そしていよいよビルドです。FCがどのソースを使うのかは「make/targets.mk」で確認。8グループある。

$ make TARGET=ボードの名前(MATEKF405とか)

これでゴリゴリ作り始めます。作り直すときはこの並びで clean する。

$ make clean TARGET=MATEKF405

最終的に「ボードの名前.hex」というのが obj の下に出来上がって、これを DFU からローカルファイルで焼き付ければOKです。
なお 「/mnt/c/」が「c:\」になってます。

さあ、これでカスタムした、世界にたったひとつのオリジナルなファームが作れます。
なんかどこかのメーカーのファームが詐称をしてどう、みたいな話もありましたが、こういうので適正にするのもアリですね。

今回はユーザが多い Windows の説明でしたが、ChromeOS の crostini でもできます。前から言ってますが、むしろ Betaflight とかはChromeOS トラブルなくてよい。クロスコンパイル前提っぽくARMベースのやつはダメみたいっす。