网上很多博客中介绍的方法大多比较久远的了,自己综合参考了不少博客的过程中,还是踩了很多坑,特总结下来,以便后面重搭环境时之需。
前期准备
设置权限
1
sudo usermod -a -G dialout $USER
安装相关工具
1
2
3
4
5
6
7
8
9sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
sudo apt-get update
# 必备软件 python git qt
sudo apt-get install python-argparse git-core wget zip python-empy qtcreator cmake build-essential genromfs -y
# 仿真工具
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jre
sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y卸载模式管理器
1
sudo apt-get remove modemmanager
更新包列表和安装下面的依赖包
1
2
3
4
5
6
7sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install python-serial openocd \
flex bison libncurses5-dev autoconf texinfo build-essential \
libftdi-dev libtool zlib1g-dev \
python-empy -y工具链安装(若gcc-arm-none-eabi版本不对)(非必须)
如果以前装过工具链,删除残余
1
2sudo apt-get remove gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi gcc-arm-embedded
sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa安装工具链
特殊原因,推荐使用浏览器下载:
https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q2-update/+download/gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2
1
2
3
4
5
6
7pushd .
cd ~
tar -jxf gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2
exportline="export PATH=$HOME/gcc-arm-none-eabi-5_4-2016q2/bin:\$PATH"
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
. ~/.profile
popd这是安装最新的工具链,版本是5.4。
安装过程
下载代码
1
2
3mkdir -p ~/src
cd ~/src
git clone https://github.com/PX4/Firmware.git初始化
1
2
3cd Firmware
# 下载相关子模块
git submodule update --init --recursive编译
1
make px4fmu-v2_default
成功后显示:
1 | [100%] Built target nuttx_px4fmu-v2_default.elf |
若报错:
1 | -- Configuring incomplete, errors occurred! |
上传Pixhawk
1 | sudo make px4fmu-v2_default upload |
Debug:
内存溢出:
https://dev.px4.io/en/debug/faq.html
1 | region `flash' overflowed by 24405 bytes |
解决方法:
编译器版本太低。将arm-none-eabi升级到最新版本
参考本文上面的教程
减少不必要的模块
/Firmware/cmake/configs/nuttx_px4fmu-v2_default.cmake
注释:
1
2
3
4
5
6
7
8
9#drivers/px4flow
#drivers/distance_sensor/ll40ls
#drivers/distance_sensor/mb12xx
#drivers/distance_sensor/sf0x
#drivers/distance_sensor/sf1xx
#drivers/distance_sensor/srf02
#drivers/distance_sensor/srf02_i2c
#drivers/distance_sensor/teraranger
#drivers/distance_sensor/tfmini