目录
前言
要想自己编译PX4固件需要交叉编译器,交叉编译器可以将 x86架构 平台上写好程序编译出来,而编译出来的可执行文件是能用到 arm架构 的平台上。
本次编译是以
px4 v1.13.2
为例。我的配置如下:
虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、交叉编译器 arm-none-eabi-gcc
准备
- 下载源码:
bash
sudo apt-get install git # 安装git
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware # 更改目录名
cd PX4_Firmware
git checkout -b dev v1.13.2 # 切换版本
git submodule update --init --recursive # 更新下载子模块
如果下载慢,可以从网盘里下,或者从QQ群(961297255)里下载
链接:https://pan.baidu.com/s/1eNB9dWlKoVmRMAYsSPI0vw
提取码:s8uh
- 安装依赖和交叉编译器 arm-none-eabi-gcc
bash
sudo apt-get install libjpeg8-dev
cd ~/PX4_Firmware/Tools/setup
./ubuntu.sh --no-sim-tools # 大概要几分钟,跟个人网络情况而定
# 这是官方提供的脚本 有两个可选参数
# --no-sim-tools 不安装仿真环境
# --no-nuttx 不安装交叉编译环境
上图错误的原因是 shell 脚本没有可执行权限(如果用我提供的文件可能会出现这个错误),运行下面命令,赋予可执行权限,然后再执行:
bash
chmod +x ubuntu.sh
./ubuntu.sh --no-sim-tools
脚本执行结果如下图所示:
- 重启Ubuntu,测试交叉编译器
bash
arm-none-eabi-gcc --version
编译
注:后缀 _default 是可选的。例如,使用 px4_fmu-v5 和 px4_fmu-v5_default 是一样的。
下图是飞控板支持的固件版本:
使用下面命令可以查看支持编译的固件:
bash
cd ~/PX4_Firmware/
make list_config_targets
这里以 Pixhwak4 为例
bash
make px4_fmu-v5_default
结果如下图所示,红框部分是编译好的固件所在的文件夹
烧录的话可以使用QGC,或者用下面命令
bash
make px4_fmu-v4_default upload
参考
Ubuntu LTS/Debian Linux 的开发环境 | PX4 Guide (main)
编译 PX4 软件 | PX4 Guide (main)
如有其他问题,或者发现文章有错误,请在评论区留言
Keep learning!