BetaFlightをSTM32H7でビルド:初歩から始めるカスタム飛行コントローラ開発

はじめに:カスタムファームウェアの構築を目指して

FPVドローン愛好家や組み込み開発者にとって、自らビルドし、必要に応じて改変できる飛行コントローラ(FC)ファームウェアは、究極の自由を意味する。BetaFlightは、その高性能とオープンソース性により、世界中のレーサーや開発者の間で事実上の標準となっている。しかし、膨大なC言語コードとリアルタイム制御の複雑さゆえに、初めて触れる人にとってはハードルが高いのも事実。

本ガイドでは、理論の深掘りではなく、実際に動かすことを最優先とする。STM32H7を搭載したフライトコントローラ上で、BetaFlightのカスタムビルド環境を構築し、基本的なタスクスケジューリングの仕組みを理解したうえで、センサー処理ループの調整までを実践する。途中で遭遇する典型的なエラー——たとえばツールチェーンの不整合、リンク失敗、デバイスドライバーのミスマッチ——についても、その解決法を含めて解説する。最終的には、単なるユーザーではなく、システムを操る「エンジニアパイロット」になるための第一歩を踏み出す。

1. 開発環境の準備:VSCodeとARMツールチェーン

BetaFlightはMakefileベースのビルドシステムを採用しており、ArduinoのようなGUI環境とは異なり、コマンドラインとテキストエディタが主戦場となる。ここでは、Visual Studio Code(VSCode)を中心に、必要なツールを整備する。

1.1 必要なソフトウェアのインストール

  • OS:Windows 10/11(macOS/Linuxでも可能)
  • エディタ:Visual Studio Code
  • コンパイラ:ARM GCC Embedded Toolchain(arm-none-eabi-gcc
  • ビルドツール:GNU Make
  • バージョン管理:Git
  • 書き込み・デバッグ:STM32CubeProgrammer または OpenOCD + ST-Link

手順:

  1. ARMツールチェーンのインストール
    公式サイトから GNU Arm Embedded Toolchain をダウンロードし、インストール時に環境変数への登録を必ず有効にする。インストール後、PowerShellまたはCMDで以下を実行:
arm-none-eabi-gcc --version

正常に登録されていれば、GCCのバージョン情報(例: 10.3.1)が出力される。

  1. GNU Makeの導入
    WindowsではChocolateyを使用すると簡単:
choco install make

またはGnuWin32などを手動でインストールし、PATHに追加。確認コマンド:

make --version
  1. Gitの設定
    公式インストーラでインストール後、環境変数を正しく設定。
git --version
  1. VSCodeプラグインの追加
    以下の拡張機能をインストールすることで、開発効率が大幅に向上する:
  • C/C++(Microsoft提供):シンボルジャンプ、補完、型定義表示
  • Cortex-Debug:OpenOCDとの連携によるステップ実行
  • Makefile Tools:GUIから直接ビルドタスクを実行可能
重要:すべてのパスに日本語やスペースを含まない。たとえば C:\Users\田中\projects ではなく、D:\dev\betaflight のように英数字のみのパスを使用すること。

1.2 ソースコードの取得

BetaFlightのリポジトリはGitHubで公開されている。最新のメインブランチをクローンしよう。

cd D:\dev
git clone https://github.com/betaflight/betaflight.git
cd betaflight

主要なディレクトリ構成は以下の通り:

  • src/main/:飛行制御アルゴリズム、IMU処理、PID計算などの中核コード
  • src/main/target/:ボード固有のピン配置、周辺機器設定(例: STM32H743)
  • src/main/drivers/:SPI/I2Cドライバ、センサー通信処理
  • Makefile:ビルド対象の選択やターゲット指定の起点

特にsrc/main/target/内のサブフォルダ(例: NAZE, STM32F7, STM32H7)は、使用するハードウェアによって異なるため、自分のボードに対応するものを確認することが必須である。

タグ: BetaFlight STM32H7 ARM GCC VSCode フライトコントローラ

5月31日 23:27 投稿