归档:构建高通骁龙飞行套件¶
警告
存档文章
ArduPilot 不再支持高通 Snapdragon Flight Kit。
本文介绍了如何为以下设备构建 ArduPilot Qualcomm® Snapdragon Flight™ 套件(开发人员版) 与 制作 在 Linux 上。
警告
由于 Intrinsyc 的一些不寻常的许可条款,我们无法分发 ArduPilot 的二进制文件(或使用高通公司库构建的任何程序)。因此,您必须自行构建固件。
概述¶
ArduPilot 有两个端口连接到该电路板:
QFLIGHT 主要在 ARM 内核上运行,DSP 上只有传感器和 UART。这种端口更易于调试,而且可以使用所有普通的 Linux 开发工具。
HAL_QURT QFLIGHT 移植主要在 DSP 上运行,ARM 内核上仅有一小块垫片。由于实时调度极为精确,因此该端口的性能更好,而且更稳健,因为它可以在 Linux 因故崩溃时继续飞行(QFLIGHT 端口依赖 Linux 和 QURT 的工作来继续飞行)。不过,它更难调试!
两个 ArduPilot 端口的构建说明几乎完全相同(此处均有介绍)。
提示
我们建议开发人员使用 QFLIGHT port 进行开发和调试,但在生产中使用时应重新编译并以 QURT 为目标。
本文中的说明演示了 Copter(来自 ArduCopter 目录)的构建。Plane 和 Rover 的构建方法相同,都是从各自的载具源代码目录中构建。
准备电路板¶
在 Windows 上使用 QFIL 刷新操作系统¶
从 Intrinsyc 购买的电路板会预装操作系统(如 Ubuntu),但如果您收到的电路板来源不同,则可能不会预装操作系统。请使用下面的说明从 Windows PC 将操作系统闪存到电路板上。
下载并安装 QFIL (这里 - 搜索下面写有 "QPST 2.7.422 "的绿色下载按钮)。
首先使用电源砖为电路板供电,然后用 USB 电缆连接电脑(注意电路板有一个 USB3.0 端口,但普通的微型 USB 电缆也可以使用),将电路板置入启动加载器模式。
启动 QFIL,电路板连接的 COM 端口应自动显示在屏幕左侧。 选择端口 按钮。通常它的名称是 "QDLoader 9008"。
在 "选择编程器 "下点击 浏览 按钮,找到 prog_emmc_firehose_8974.mbn(待办事项:这是哪个软件包中的内容?)
在 "下载 "下,应该能自动找到 rawprogram_unsprse.xml(?)
点击 下载 按钮,如果一切顺利,操作系统就会闪存到电路板上。
使用 FTDI 电缆连接电路板¶
电路板应附带一条 FTDI 电缆和一块绿色的小型串行适配器板,将其插入电路板顶部 USB 端口旁边的黑色矩形连接器。使用 ssh 程序(如 Putty)以 115200 波特连接到 FTDI 电缆的串行端口(这种方式登录电路板无需密码)。
更改根密码并启用以根身份登录¶
按照上述说明使用 FTDI 电缆连接,并输入以下内容更改根密码 密码
在命令行上输入两次所需的密码(即 "penguin")。
编辑 /etc/ssh/sshd_config,修改第 28 行如下,启用以根用户身份登录:
允许根登录 是
连接到电路板的 WIFI 接入点¶
电路板的 WIFI 接入点将显示为 ssid "Atlanticus_XXXXX"(其中 X 为 5 位数字)和密码 "password"。
分配给计算机的 IP 地址(默认范围为 192.168.1.10 ~ 192.168.1.20)可通过修改以下文件进行更改。这可能是必要的,以避免与家庭/企业 wifi 网络冲突。
/etc/dnsmasq.conf 第 304 和 305 行,如下所示。
interface=wlan0
dhcp-range=192.168.**2**.10,192.168.**2**.20,infinite
/etc/network/interfaces.d/.qca6234.cfg.softap 第 39 行,如下所示。
`` 地址 192.168.2.1``
您可以使用 Putty 等终端程序,以 linaro/linaro 或 root/penguin 的用户名/密码,通过上面显示的 IP 地址(即 192.168.2.1)SSH 登录电路板。
正确设置主目录权限¶
默认情况下,/home/linaro 目录权限不正确。
苏都 编译 -R linaro.linaro /home/linaro
创建日志目录¶
在飞行板上,在 DSP 可以写入的位置创建日志目录:
mkdir /usr/share/data/adsp/logs
检查并升级电路板上的 Ubuntu 内核版本¶
使用 FTDI 电缆或通过 sifi ssh 连接到电路板,输入 "uname -a"。输出结果应如下所示(或稍后日期),如果没有,则应更新。
Linux操作系统 linaro-developer 3.4.0-eagle8074 #1 SMP 预审 星期三 12 月 9 17:42:13 PST 2015 armv7l armv7l armv7l GNU/Linux
要升级到 Ubuntu 的后续版本,请先 从 Intrinsic 网站下载并解压缩最新的 "Flight_BSP_X.X "文件(注:截至 2016 年 1 月,这些文件至少已暂时消失)。
使用 fastboot-all 脚本进行升级:¶
在 Ubuntu 机器上找到上述下载的 Binaries/fastboot-all.bat 脚本。
编辑脚本并删除重启行(第 16 行),如下所示(如果升级失败,重启可能会导致电路板变砖)。
快速启动 重新启动
运行脚本:
苏都 ./Binaries/fastboot-all.bat
升级后,电路板将被完全清除,这意味着之前的任何设置(如 root 密码、wifi IP 地址)都需要重新设置。
注:2016 年 1 月 25 日,在执行此升级并撰写本维基页面后,我们发现 /firmware/image 已过期。我们应添加说明,说明哪些文件需要更新,以及在哪里可以找到新文件。
通过手动复制图像进行升级¶
解压上述压缩包,在 "二进制文件 "目录中找到以下文件
boot.img, cache.img, persist.img, system.img
在 Ubuntu 机器上,解压 4 个镜像文件中的 3 个:
simg2img cache.img cache.ext4
simg2img persist.img persist.ext4
simg2img system.img system.ext4
将这四个文件传输到飞行板上新的 /images 目录中(通过 WIFI 传输或放入 SD 卡)。
boot.img、cache.ext4、persistence.ext4、system.ext4
输入 "mount"(挂载),检查是否有分区在使用中
通常只使用 "persist",因此使用 "umount /mnt/persist/"命令将其卸载
挂载图像:
dd if=boot.img of=/dev/disk/by-partlabel/boot bs=1M
dd if=cache.ext4 of=/dev/disk/by-partlabel/cache bs=1M
dd if=persist.ext4 of=/dev/disk/by-partlabel/persist bs=1M
dd if=system.ext4 of=/dev/disk/by-partlabel/boot bs=1M
安装 baro 和 mpu9250 驱动程序¶
将这两个文件复制到飞行板的 /usr/share/data/adsp:
libbmp280.so, libmpu9x50.so
编辑危险的 Q6 服务启动脚本¶
在飞行板上编辑 /etc/init/q6.conf脚本,注释掉下面一行,如果保留该行,会导致飞行板在启动过程中因 "q6 "无法启动而永远停滞不前
#观看 -n 1 --精确 -g grep -m 1 "2"; /sys/kernel/debug/msm_subsys/adsp &&; 真
将电路板调至 "存储模式"¶
在升级过程中,如果跳过上述步骤,可能会导致电路板无法完全启动。您将无法使用 FTDI 或 wifi 登录。如果出现这种情况,你可以利用启动序列中的竞争条件,让电路板进入 "存储模式",从而访问电路板上的磁盘。
首先确保电源线和 USB 电缆都已断开
插上电源
快速插入 USB
断开电源砖,希望 LED 灯会变红
插上电源
如果一切顺利,通过 USB 连接的 Windows 或 Ubuntu 机器上将出现 10 或 20 个磁盘设备。可以对磁盘上的文件进行编辑,包括编辑启动脚本,以解决启动问题。
建设的先决条件¶
这些说明仅适用于 64 位 Linux 机器(包括 Ubuntu)。
获取源代码¶
首先克隆源:
git 复制 --递归-子模块 https://github.网/ArduPilot/ardupilot.git
CD ardupilot
获取其他工具/库¶
要为任一端口构建 ArduPilot,您还需要 Intrinsyc 提供的 3 个库软件包(购买电路板时会提供下载链接):
HEXAGON_Tools 软件包,使用 7.2.11 版进行了测试
Hexagon_SDK 数据包,2.0 版
HexagonFCAddon 软件包,使用 Flight_BSP_1.1_ES3_003.2 测试
这些软件包都应解压到一个 $HOME/Qualcomm
目录。
为 QURT 建设¶
要建造 Copter,你必须这样做:
CD ArduCopter
生产 qurt -j4
加入电路板的 WiFi 网络并输入以下命令(其中 我的官方
是控制板的主机名或 IP 地址):
生产 qurt_send 飞行板=我的官方
这将安装两个文件:
/根基/ArduCopter.小精灵
/我们/份额/数据/adsp/libardupilot_skel.那么
要启动 ArduPilot,只需运行 .elf 文件。
/根基/ArduCopter.小精灵
备注
对于 QURT 端口,不能使用参数来指定每个 UART 的用途。
默认情况下,ArduPilot 将通过 UDP 14550 向本地 WiFi 网络发送遥测数据。只需打开您最喜欢的兼容 MAVLink 的 GCS 并使用 UDP 连接即可。
为 QFLIGHT 建造¶
要为 QFLIGHT 建造 Copter,请执行以下操作:
CD ArduCopter
生产 qflight -j4
加入电路板的 WiFi 网络并输入以下命令(其中 我的官方
是控制板的主机名或 IP 地址):
生产 qflight_send 飞行板=我的官方
这将安装两个文件:
/根基/ArduCopter.小精灵
/我们/份额/数据/adsp/libqflight_skel.那么
要启动 ArduPilot,只需运行 .elf 文件。您可以使用命令行选项控制 UART 输出。典型的启动命令如下
/根基/ArduCopter.小精灵 -A udp:192.168.1.255:14550:bcast -e /设计/tty-3 -B qflight:/设计/tty-2 --dsm /设计/tty-4
这将启动 ArduPilot,通过 UDP 在 14550 端口进行遥测,通过 tty-2 在 DSP 上进行 GPS,通过 tty-4 进行 Skektrum 卫星遥控输入,通过 tty-3 进行 ESC 输出。
默认情况下,ArduPilot 将通过 UDP 14550 向本地 WiFi 网络发送遥测数据。只需打开您最喜欢的兼容 MAVLink 的 GCS 并使用 UDP 连接即可。
启动 ArduPilot¶
您还可以将启动命令添加到 /etc/rc.local.例如,在 QURT 版本中,您可以添加以下一行:
/根基/ArduCopter.小精灵 及样品;