根据官方的文档,PX4下载和构建的方式有两种:Linux系列的Console模式(当然也支持Windows下的MINGW32)和Windows模式。
在Windows平台下,我们习惯于通过GUI进行各种操作,就算安装了Git,也要外加一个GUI版的工具,像GitExtensions。Git是Linus开发的,继承Linux的文化,虽然GitExtensions这类的GUI工具比较好上手,但是功能过于简单,不能体现Git的强大功能,甚至也会影响对Git的认识。
PX4不建议使用GUI版本的Git工具,若习惯用Git,就直接用命令,否则推荐使用PX4 Toolchain 下的 PX4 Software Download批处理文件(开始菜单中的一个快捷方式)。PX4的代码都托管在GitHub上面,所以需要电脑联网,若公司里面设置了网络代理,就需要为Git设置代理。
1、Console模式:
PX4下分好几个项目,例如:Bootloader,Firmware,Nuttx,px4esc等。Firmware是固件(嵌入式软件),对其他项目有依赖,所以若是分别下拉代码到独立的文件夹下,Firmware就不能编译成功。按官网上的建议,需要先通过如下命令(若使用Windows操作系统,请打开【开始】-》【所有程序】-》【PX4 Toolchain】-》【PX4 Console】)下来Firmware项目:
cd ~/src
git clone https://github.com/PX4/Firmware
等下拉完成,再把其依赖项目当成子模块,下拉到Firmware目录下:
cd Firmware下拉代码需要几十分钟。等下拉完成,就可以构建项目了。构建命令如下:
git submodule init
git submodule update
cd ~/src/Firmware
make distclean
make archives
make -j8
构建完成后,就会在Farmware/Images文件夹下生成FMU和IO的二进制文件。
注:命令中 -j8 的意思是同时运行8个实例,这样编译速度会快很多。
通过UBS刷固件(使用PX4 Bootloader)
这是官方推荐的更新固件的方式。
若是使用Linux操作系统,需要通过以下命令设置当前用户归属于用户组【dialout】:
sudo usermod -a -G dialout $USER命令执行成功后,需要重新登录,以使设置生效。
接下来更新固件。在确定【firmware】固件构建成功后,在【Firmware】目录下执行以下命令:
make upload px4fmu-v2_default -j8执行结果应该如下:
working in [...]/Firmware/Images
Attempting to flash PX4FMU board via USB
Loaded firmware for 5,0, waiting for the bootloader...
当你看到【 waiting for the bootloader】时,按下在Pixhawk侧边的【reset】按钮。当硬件连接成功,并重置成功,新的固件就开始更新了。命令行会出险如下提示:
Found board 5,0 on /dev/tty[...]
erase...
program...
verify...
done, rebooting.
2、Windows模式
Windows模式就相对简单些。
首先,打开请打开【开始】-》【所有程序】-》【PX4 Toolchain】-》【PX4 Software Download】 工具下拉代码,此工具会一次下载Firmware项目和其子模块。其实此工具也是一个批处理文件。
然后,打开【PX4 Toolchain】下的【PX4 Eclipse】,此快捷方式会打开Eclipse。Eclipse是安装在PX4 Toolchain时,一起安装的。然后,在Eclipse中价值Firmware项目。在Eclipse中选择 File -> Import -> C/C++ -> Existing Makefile project ,然后选择Cross GCC,在弹出的文件夹对话框中选择Firmware目录,然后点击完成。
添加make tagets。
在Eclipse右边面板中,选择【make targets】面板,展开Firmware文件夹。右键点击Firmware,选择【Add make target】,给target命名,并勾选【Save as target】,依次创建如下几个target:archives,all,distclean,clean, upload px4fmu-v2_default。他们都是构建命令,含义如下:
archives:构建NuttX OS;
all:构建无人机软件(依赖于archives);
distclean:清除所有构建文件,包括Nuttx OS构建文件;
clean:仅清除应用程序部分即:Firmware;
upload px4fmu-v2_default:更新固件到PX4FMU v2版上。
编译代码并上传到硬件
首先,双击all target 一次构建Firmware和所有依赖项目,然后双击 upload target。通过USB连接PX4FUM硬件。开始上传固件。
参考官方文档:https://pixhawk.org/dev/nuttx/building_and_flashing_console