Linux开发环境

我们使用Debian / Ubuntu LTS 作为Linux的标准支持版本,但是也支持Cent OS 和 Arch Linux的发行版本

权限设置

警告:永远不要使用sudo来修复权限问题,否则会带来更多的权限问题,需要重装系统来解决。

把用户添加到用户组 “dialout”:

  1. sudo usermod -a -G dialout $USER

然后注销后,重新登录,因为重新登录后所做的改变才会有效。

安装

更新包列表,安装下面编译PX4的依赖包。PX4主要支持的系列:

提示:安装Ninja Build System可以比make更快进行编译。如果安装了它就会自动选择使用它进行编译。

  1. sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
  2. sudo apt-get update
  3. # 必备软件
  4. sudo apt-get install python-argparse git-core wget zip \
  5. python-empy qtcreator cmake build-essential genromfs -y
  6. # 仿真工具
  7. sudo add-apt-repository ppa:openjdk-r/ppa
  8. sudo apt-get update
  9. sudo apt-get install openjdk-8-jre
  10. sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y

基于NuttX的硬件

Ubuntu配备了一系列代理管理,这会严重干扰任何机器人相关的串口(或usb串口),卸载掉它也不会有什么影响:

  1. sudo apt-get remove modemmanager

更新包列表和安装下面的依赖包。务必安装指定的版本的包

  1. sudo apt-get install python-serial openocd \
  2. flex bison libncurses5-dev autoconf texinfo build-essential \
  3. libftdi-dev libtool zlib1g-dev \
  4. python-empy -y

在添加arm-none-eabi工具链之前,请确保删除残余。

  1. sudo apt-get remove gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi gcc-arm-embedded
  2. sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa

如果gcc-arm-none-eabi版本导致PX4/Firmware编译错误,请参考the bare metal installation instructions手动安装4.9或者5.4版本的arm-none-eabi工具链。

骁龙

工具链安装

  1. sudo apt-get install android-tools-adb android-tools-fastboot \
  2. fakechroot fakeroot unzip xz-utils wget python python-empy -y

Please follow the instructions on https://github.com/ATLFlight/cross_toolchain for the toolchain installation.

Load the new configuration:

  1. source ~/.bashrc

需要登录到QDN。如果你还没有帐户,必须先注册一个。

将以下文件移动到交叉工具链的下载文件夹中:

  1. mv ~/Downloads/hexagon-sdk-v3-linux.bin cross_toolchain/downloads

安装工具链和SDK,如下所示:

  1. cd cross_toolchain
  2. ./installv3.sh
  3. cd ..

按照说明配置开发环境。如果你接受默认安装选项,则可以在之后随时重新运行下面的命令来配置开发环境。它只会安装缺少的组件。

执行后工具和SDK将被安装到$HOME/Qualcomm/...。 将以下内容添加到~/.bashrc:

  1. export HEXAGON_SDK_ROOT="${HOME}/Qualcomm/Hexagon_SDK/3.0"
  2. export HEXAGON_TOOLS_ROOT="${HOME}/Qualcomm/HEXAGON_Tools/7.2.12/Tools"
  3. export PATH="${HEXAGON_SDK_ROOT}/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf_linux/bin:$PATH"

加载新的配置:

  1. source ~/.bashrc

Sysroot安装

需要一个sysroot来提供交叉编译骁龙飞控应用处理器应用程序所需的库和头文件。

qrlSDK sysroot提供了摄像头、GPU等需要的头文件和链接库。

下载 Flight_3.1.3_qrlSDK.tgz 并保存到cross_toolchain/download/

  1. cd cross_toolchain
  2. unset HEXAGON_ARM_SYSROOT
  3. ./qrlinux_sysroot.sh

将以下内容添加到~/.bashrc

  1. export HEXAGON_ARM_SYSROOT=${HOME}/Qualcomm/qrlinux_v3.1.1_sysroot

加载新的配置:

  1. source ~/.bashrc

有关sysroot的更多选项,请参见Sysroot安装

升级ADSP固件

在构建,烧写以及运行代码之前,还需要升级ADSP固件

参考

GettingStarted是另外一个工具链安装向导。HelloWorldDSPAL tests可以用来验证工具链安装和DSP镜像。

DSP的信息可以通过mini-dm查看。

  1. $HOME/Qualcomm/Hexagon_SDK/2.0/tools/mini-dm/Linux_Debug/mini-dm

提示: 在MAC上也可以使用nano-dm

树莓派

树莓派开发者应该从下面地址下载树莓派Linux工具链。安装脚本会自动安装交叉编译工具链。如果想要用原生树莓派工具链在树莓派上直接编译,参见这里

  1. git clone https://github.com/pixhawk/rpi_toolchain.git
  2. cd rpi_toolchain
  3. ./install_cross.sh

在工具链安装过程中需要输入密码。

如果不想把工具链安装在默认位置/opt/rpi_toolchain,可以执行./install_cross.sh <PATH>向安装脚本传入其它地址。安装脚本会自动配置需要的环境变量。

最后,运行以下命令更新环境变量:

  1. source ~/.profile

Parrot Bebop

Parrot Bebop的开发者应该安装树莓派的Linux工具链。请跟随(这里)的介绍进行安装。

接下来安装ADB。

sh sudo apt-get install android-tools-adb -y`

完成

继续,进行第一次代码编译!