编译INAV固件的详细步骤

本文编译环境:win11,wsl2,ubuntu22.04 本文视频教程已上传至B站: 《INAV源码的编译》 1.0 INAV固件的编译环境 WSL2、ubuntu22.04系统。 本人之前用ubuntu20.04系统,可以正常编译APM...

本文编译环境:win11,wsl2,ubuntu22.04


本文视频教程已上传至B站:《INAV源码的编译》


1.0 INAV固件的编译环境

WSL2、ubuntu22.04系统。

本人之前用ubuntu20.04系统,可以正常编译APM、BF、PX4固件,但是编译不了INAV固件,因此我将linux系统升级到了ubuntu22.04!

如果大家的子系统是ubuntu20.04,并且需要编译INAV固件的,可以参考这个文档进行重装升级!019a5718-883f-77b1-b4f5-02c7fb0fc176


1.1下载WFG100硬件配置文

访问:0199a3ef-6738-7cdb-ba80-1e5530dd389a

将WFG100飞控的INAV硬件配置文件压缩包,下载至本地电脑,所下图所示:


1.2 下载INAV源码

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


1.3 切换到指定版本

cd inav
git checkout 8.0.1



1.4 将硬件配置文件放置到指定的文件夹下

将INAV固件的硬件定义文件,放到以下目录中/inav/src/main/target如下图所示:


1.5 创建构建目录

创建一个独立的构建目录,以便管理构建文件。

mkdir build
cd build

这会在 inav 根目录下创建一个 build 文件夹并切换到该目录。


1.6 安装Ruby工具

inav/build 目录下,安装,执行以下命令


sudo apt update
sudo apt-get upgrade -y
sudo apt install ruby ruby-dev rubygems -y

ruby -v  #查看是否安装完成


1.7 安装camake工具

inav/build 目录下,安装,执行以下命令

sudo apt  install cmake -y


1.8 配置项目

使用 CMake 配置 INAV 项目的构建环境。无需手动准备工具链,CMake 会自动下载并配置所需工具。

inav/build 目录下,执行以下命令:

cmake ..

这个过程会非常漫长!大家要耐心等待。(电脑最好可以魔法出去)。


有些朋友的网络可能不太好,在下载过程中由于网络波动卡顿,可能会报错出现一些问题。

如果发生了报错只能先清除之前下载的所有东西,再重新下载了,执行以下命令:

cd ~
cd inav/
rm -rf downloads/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz

cd ~
cd inav/build/
rm -rf *  # 清除构建缓存

清理完缓存文件后,再重新执行:

cmake ..

最后执行成功的界面,如下图所示:


1.9 编译固件

使用 make 编译 INAV 固件,指定 WFG100 为目标平台。-j12 表示并行编译,最大使用 12 个线程(可以根据自己电脑的性能,调整线程数)。

make WFG100 -j12

这将开始编译并生成适用于 WFG100 飞控的INAV固件文件。


1.10 查找生成的.elf固件

编译完成后,生成的固件文件 WFG100.elf 会位于 inav/build/bin 目录下。

如下图所示,WFG100.elf就是INAV飞控的固件!

注:.elf的固件必须要stm32cubeprogrammer工具才能烧录!


1.11 通过.elf固件,生成.hex固件。

有些朋友可能需要.hex固件来通过地面站进行烧录,因此可以执行以下命令,通过已有的.elf,再生成.hex固件!

cd ~
cd inav
sudo apt install binutils-arm-none-eabi
arm-none-eabi-objcopy -O ihex build/bin/WFG100.elf build/bin/WFG100.hex

执行完上面 命令后,到inav/build/bin 目录下,就会看到.hex 和.elf的 固件都生成了 !


其他注意事项

1)编译时间:首次编译可能需要较长时间,尤其是并行编译时,确保计算机性能良好。

2)问题排查:如果编译过程中出现问题,请检查补丁是否正确应用,或者 CMake 配置是否有误。

3)网速问题:执行cmake ..命令时,可能需要等待很久,这跟网速有关!电脑最好可以魔法出去!