そろそろカスタムファームをビルドする時期に来たようだ。
ドローンのフライトコントローラ(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ベースのやつはダメみたいっす。