前言
ArduPilot 的最新版本(Copter-3.6, Plan-3.9, Rover-3.5)运行在相对较小的、非 Pixhawk 的、使用 ChibiOS 操作系统的自动驾驶仪上。这些电路板的例子包括 OpenPilot RevoMini、Mateksys F405-Wing 和 Omnibus F4 Pro。
大多数情况下,这些板子都预装了另一个飞行控制器软件。(如果板子上已经安装了 ArduPilot,请参阅 Loading Firmware 了解固件加载说明)。
将 ArduPilot 安装到这些自动驾驶仪上涉及:
- 安装所需的驱动程序和烧录工具;
- 下载合适的 ArduPilot 固件;
- 将 ArduPilot 加载到主板上。
!Note
ArduPilot 使用 ChibiOS 到 Pixhawk自动驾驶仪的说明可以在这里(here)找到。
1 下载驱动程序和烧录工具
STM32CubeProgrammer 将安装所需的 DFU(直接固件上传)驱动程序,并可用于在 DFU 模式下将固件烧录到自动驾驶仪。这适用于 Windows、Linux 和 MacOS 系统。下载并安装此程序。你可能需要同时安装 JAVA,以便设置这个程序。
2 下载ArduPilot固件
从 firmware.ardupilot.org 下载你的主板的 ArduPilot 固件。通常你可以通过以下方式找到合适的固件:
- 打开 firmware.ardupilot.org;
- 选择点击你的飞行器类型的链接(如 Plane、Copter、Rover、Sub 或 Antenna Tracker);
- 选择"测试版"或"稳定版";
- 寻找名称与自动驾驶仪最接近的目录;
- 下载"arduXXX_with_bl.hex"文件,点击它。它通常会被保存在你的下载文件夹中。
3 使用测试版和开发版
3.1 测试版
在稳定版(Stable)发布之前,会有一个或多个测试版(Beta)被发布。如果你想尝试更新的功能或帮助开发人员进一步测试代码,可以使用这些版本。由于它们是"测试版",可能仍然有错误(尽管这在稳定版固件中也是可能的)。然而,它已经由开发团队进行了测试,并且已经进行了飞行测试。这个版本允许更多的用户在稳定版(Stable)固件发布之前对其进行最终测试。我们鼓励有经验的 ArduPilot 用户试飞这个固件并提供反馈。
3.2 最新开发版本
这反映了 ArduPilot 代码的开发分支的当前状态。它已经被开发团队审查,通过了所有的自动测试套件,并且在大多数情况下,如果做了重大的改变,可以进行试飞。这段代码每天都会被构建,并且可以供有经验的用户测试。这相当于一个"阿尔法"版本,可能会有错误,尽管很少有"导致崩溃的"。在增加了一个改变或引入了一个功能后不久,Wiki 的 Upcoming Features 部分就会更新有关增加或改变的信息。
4 将固件上传到自动驾驶仪
按住电路板的 DFU 按钮或临时桥接其"BOOT"引脚,并插入 USB 线(连接到你的 PC)。通电后释放按钮或解除桥接。
打开 windows 设备管理器,在"通用串行总线设备"下查找"STM32 BOOTLOADER",以确认该板处于 DFU 模式。
启动 STM32CubeProgrammer。
1. 选择连接方法:USB;
2. 确保有一个 USB 端口显示......这意味着在 DFU 模式下检测到了电路板;
3. 按下"Connect";
4. 然后板子上的 cpu 具体情况会出现在这里;
5. 按"Open file",选择你下载的"arduXXX_with_bl.hex"文件;
6. 文件名将出现在标签中;
7. 按"Download",将文件烧录到电路板上。
你现在可以重新启动电路板,并与你喜欢的地面站(Mission Planner、QGC 等)连接(connect with your favourite ground station),未来的固件上传也应该可以使用 Pixhawk 电路板的正常方法。
5 替代方法
5.1 下载并安装Zadig(仅适用于Windows)
下载并运行 Zadig(在"Download"下面搜索"Zadig 2.3"),允许使用 USB 访问电路板。
从选项菜单中选择"List all devices"选项。
从下拉菜单中选择"STM32 BOOTLOADER",然后按"Replace Driver"按钮。
可选地,你可能希望检查该板作为一个 USB 端口是否可见:
按住板子上的 DFU 按钮,插入 USB 线(连接到你的 PC 上);
打开 windows 设备管理器,在"通用串行总线设备"下查找"STM32 BOOTLOADER",以确认该板处于 DFU 模式。
5.2 下载ArduPilot固件
从 firmware.ardupilot.org 下载你的主板的 ArduPilot 固件。通常你可以通过以下方式找到合适的固件:
打开 firmware.ardupilot.org;
选择点击你的飞行器类型的链接(如 Plane、Copter、Rover、Sub 或 Antenna Tracker);
选择"测试版"或"稳定版";
寻找名称与自动驾驶仪最接近的目录;
下载"arduXXX_with_bl.hex"文件,点击它。它通常会被保存在你的下载文件夹中。
5.3 将ArduPilot上传至主板
下载、安装并运行 Betaflight 配置器(Betaflight Configurator)。
在屏幕的左侧选择"Firmware Flasher";
从右上方选择 DFU;
从右下方按下"加载固件[本地]",并选择你上面下载的 arduXXX_with_bl.hex 文件;
按下"Flash Firmware",几分钟后,固件应该被加载。
你现在可以重新启动电路板,并与你喜欢的地面站(Mission Planner、QGC 等)连接(connect with your favourite ground station),未来的固件上传也应该可以使用 Pixhawk 电路板的正常方法。
6 将固件加载到带有外部闪存的主板上
最近的一些板子,最明显的是来自 Seriously Pro Racing(Seriously Pro Racing - Home)的板子,使用了具有少量内部闪存的 MCU,但外部连接的闪存芯片大得多。这些板子需要额外的步骤来加载 ArduPilot 固件。通常情况下,某种引导程序驻留在内部闪存上,然后主固件驻留在外部闪存上。
6.1 使用SSBL加载固件
SPRacing 系列的板子在内部闪存上预装了一个专有的引导程序,需要使用第二阶段的引导程序来加载进一步的固件。有几个选择来加载这些板子的固件,但无论你选择哪一种,你都需要使用 SSBL 来初始化 ArduPilot。请按照 https://github.com/spracing/ssbl "安装"说明,以便将 SSBL 加载到你的电路板上。一旦 SSBL 加载完毕,请按照 PX4 的说明将 ArduPilot 加载到板子上 https://github.com/spracing/ssbl#px4-installation-to-external-flash,但不要使用 PX4 固件,请使用 arducopter.bin 固件镜像。以下是步骤的总结:
下载https://github.com/spracing/ssbl/releases,并按照https://github.com/spracing/ssbl#installation-to-external-flash,将 SSBL 安装到外部闪存中;
下载最新的ArduPilot外部闪存二进制文件,例如https://firmware.ardupilot.org/Copter/latest/SPRacingH7/arducopter.bin;
使用 dd 将二进制文件填充到 2MB:
dd if=/dev/zero ibs=1k count=2048 of=AP_2MB.bin
dd conv=notrunc if=arducopter.bin of=AP_2MB.bin
把板子放入 SSBL dfu 模式--关闭电源,按住 BIND(不是 BOOT),打开电源--LED 快速闪烁,释放 BIND,LED 缓慢闪烁--DFU 模式启用;
使用以下方法烧录二进制文件;
dfu-util -D AP_2MB.bin -s 0x90100000:0x200000
验证闪存。下面的 dfu-util 命令将闪存的内容复制到电脑上,diff 命令将告诉你这些内容是相同还是不同。如果 diff 没有说文件是相同的,请不要试图飞,重试;
dfu-util -U AP_2MB-VERIFY.bin -s 0x90100000:0x200000
diff -sb AP_2MB.bin AP_2MB-VERIFY.bin
关机,安装 SD 卡(注意:你必须安装 SD 卡,没有 SD 卡,固件将无法启动),开机;
使用任务规划器正常配置电路板。
在这一点上,你应该有工作的固件在板上。如果你想加载新的固件,你将需要再次遵循步骤2-7(你不能使用 Mission Planner 来加载固件)。如果你确定你永远不会想在电路板上加载 betaflight,那么你可以安装 ArduPilot 引导程序。
6.2 安装ArduPilot引导程序
!Warning
安装 ArduPilot 引导程序是一个单向的操作。在这一步之后,你不能把板子恢复到出厂配置或加载 betaflight - 你必须把板子送回 Seriously Pro,重新刷上出厂固件,假设这是有可能的话。
如果你确定你只想在板子上使用 ArduPilot,那么烧录 ardupilot bootloader 可以使后续的升级更加简单。
你最初必须在电路板上安装一个工作版本的 ArduPilot - 按照上面的步骤;
你现在必须解除内部闪存的复制保护。这是一个破坏性的操作,需要完全擦除闪存。ArduPilot 提供了支持,使之变得简单。设置 BRD_OPTIONS = 16;
关掉电源,再接通板子的电源。板子不会出现启动,但闪存扇区正在被擦除。等待几秒钟,然后关闭板子的电源;
按住启动按钮(这次不绑定启动),打开飞行控制器电源。这将使电路板处于 dfu 模式;
下载ArduPilot引导程序,例如:https://github.com/ArduPilot/ardupilot/blob/master/Tools/bootloaders/SPRacingH7_bl.bin;
通过 dfu 安装引导程序:
dfu-util -a 0 --dfuse-address 0x08000000 -D SPRacingH7_bl.bin
重新启动电路板;
现在你可以使用你喜欢的工具来上传 ArduPilot 固件。