INAV开发者指南:如何从零开始构建自定义飞行控制器
INAV(Navigation-enabled flight control software)是一款功能强大的开源飞行控制软件,专为多旋翼和固定翼飞行器设计。本指南将带你从零开始,掌握在不同操作系统下构建INAV固件的完整流程,打造属于你的自定义飞行控制器。
📋 准备工作:开发环境搭建
系统要求
INAV支持Linux、Windows和macOS三大主流操作系统。无论你使用哪种系统,都需要确保满足以下基础依赖:
- Git(代码版本控制)
- CMake 3.13+(构建系统)
- Make/Ninja(编译工具)
- Ruby(配置文件生成)
- 交叉编译器(ARM GCC)
🍎 macOS系统设置
-
安装开发工具
打开终端执行xcode-select --install安装Command Line Tools,包含clang、make和git等基础工具。 -
安装CMake
通过Homebrew快速安装:brew install cmake,或从cmake.org下载图形安装包。 -
验证环境
终端输入make -v和cmake --version确认工具已正确安装。
🐧 Linux系统设置
以Ubuntu/Debian为例:
# 更新系统并安装依赖
sudo apt update && sudo apt upgrade
sudo apt install git make ruby cmake gcc
Arch用户可使用 pacman -S git make ruby cmake gcc,Fedora用户使用 dnf install 对应包名。
🪟 Windows系统设置
推荐使用WSL2或MSYS2环境:
- 下载MSYS2安装包(推荐版本20220603)
- 安装依赖:
pacman -S git ruby make cmake gcc mingw-w64-x86_64-libwinpthread-git unzip wget
📥 获取源代码
克隆INAV仓库
git clone https://gitcode.com/gh_mirrors/in/inav
cd inav
如需指定版本,可添加分支参数:git clone --branch release_6.0.0 https://gitcode.com/gh_mirrors/in/inav
🔧 配置构建环境
创建构建目录
mkdir -p build && cd build
运行CMake配置
cmake ..
- 默认会自动下载适配的ARM GCC交叉编译器
- 如需使用系统自带编译器:
cmake -DCOMPILER_VERSION_CHECK=OFF .. - Ninja构建(推荐):
cmake -GNinja ..
🛠️ 编译固件
查看支持的目标板
make targets # 或 ninja targets (Ninja构建)
INAV支持超过30种主流飞控板,包括Matek、Omnibus、Kakute等系列。
编译指定目标
以Matek F405为例:
make MATEKF405 # 单目标编译
# 或使用多线程加速:make -j4 MATEKF405
编译完成后,固件文件位于 build/inav_x.y.z_MATEKF405.hex
常见编译问题解决
- 工具链未找到:检查环境变量
echo $PATH,确保编译器路径已添加 - 依赖缺失:根据错误提示安装对应的开发包
- 缓存问题:删除build目录后重新配置
rm -rf build && mkdir build && cd build && cmake ..
🎯 自定义配置与高级功能
修改目标板配置
目标板定义文件位于 src/main/target/ 目录,例如:
- Matek F405配置:src/main/target/MATEKF405/target.c
- 引脚定义:src/main/target/MATEKF405/target.h
启用特殊功能
通过修改 src/main/target/MATEKF405/config.c 可开启:
- 黑匣子日志:
#define BLACKBOX - OSD显示:
#define USE_OSD - 舵机输出:
#define USE_SERVOS
多目标批量编译
# 同时编译多个目标
make -j4 MATEKF405 OMNIBUSF4 PROTONF4
📡 固件刷写与测试
进入DFU模式
- 按住飞控板上的BOOT按钮,同时连接USB
- 部分板子需短接特定DFU引脚
使用INAV Configurator刷写
- 下载并安装 INAV Configurator
- 选择"固件刷新" -> "本地文件",选择build目录下的.hex文件
- 点击"刷新固件"完成刷写
命令行刷写(高级)
# 使用dfu-util
dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D inav_x.y.z_MATEKF405.hex
📚 进阶资源
官方文档
硬件参考
- Matek F405飞控详解:docs/boards/MatekF405.md
- 接线图示例:

社区支持
🔄 保持代码更新
cd inav
git pull
cd build
make MATEKF405 # 增量编译更新
通过本指南,你已掌握INAV固件的完整构建流程。无论是修改现有飞控配置还是开发全新硬件支持,INAV的模块化设计都能满足你的需求。开始你的无人机飞行控制开发之旅吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





