(4)(4.4) 将固件加载到没有ArduPilot固件的主板上

简介: (4)(4.4) 将固件加载到没有ArduPilot固件的主板上

前言

ArduPilot 的最新版本(Copter-3.6, Plan-3.9, Rover-3.5)运行在相对较小的、非 Pixhawk 的、使用 ChibiOS 操作系统的自动驾驶仪上。这些电路板的例子包括 OpenPilot RevoMiniMateksys F405-WingOmnibus F4 Pro


大多数情况下,这些板子都预装了另一个飞行控制器软件。(如果板子上已经安装了 ArduPilot,请参阅 Loading Firmware 了解固件加载说明)。

将 ArduPilot 安装到这些自动驾驶仪上涉及:

  • 安装所需的驱动程序和烧录工具;
  • 下载合适的 ArduPilot 固件;
  • 将 ArduPilot 加载到主板上。

!Note

ArduPilot 使用 ChibiOSPixhawk自动驾驶仪的说明可以在这里(here)找到。

1 下载驱动程序和烧录工具

STM32CubeProgrammer 将安装所需的 DFU(直接固件上传)驱动程序,并可用于在 DFU 模式下将固件烧录自动驾驶仪。这适用于 WindowsLinuxMacOS 系统。下载并安装此程序。你可能需要同时安装 JAVA,以便设置这个程序。

2 下载ArduPilot固件

firmware.ardupilot.org 下载你的主板的 ArduPilot 固件。通常你可以通过以下方式找到合适的固件:

  • 下载"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 模式。

cb98de1721d64021875e92b47ecff529.png



启动 STM32CubeProgrammer。


c9293c43417248f9bd8f1753960a28ed.png


1. 选择连接方法:USB;


2. 确保有一个 USB 端口显示......这意味着在 DFU 模式下检测到了电路板;


3. 按下"Connect";


4. 然后板子上的 cpu 具体情况会出现在这里;


5. 按"Open file",选择你下载的"arduXXX_with_bl.hex"文件;


6. 文件名将出现在标签中;

0c2cb597ed0842f790f6df1b1a652212.png



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"按钮。

c16d25e64fd64f3182e789d4e587cae2.png



可选地,你可能希望检查该板作为一个 USB 端口是否可见:


按住板子上的 DFU 按钮,插入 USB 线(连接到你的 PC 上);

打开 windows 设备管理器,在"通用串行总线设备"下查找"STM32 BOOTLOADER",以确认该板处于 DFU 模式。

3cd49a664d8149889142d47eb1945d9a.png


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",几分钟后,固件应该被加载。

911744fc68d548b1a34e715f30253c74.png


你现在可以重新启动电路板,并与你喜欢的地面站(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 固件。

相关文章
|
6月前
|
Java Linux iOS开发
(4)将固件加载到没有ArduPilot固件的主板上
(4)将固件加载到没有ArduPilot固件的主板上
49 2
|
6月前
|
传感器 Windows
(3)将固件加载到已有ArduPilot固件的主板上
(3)将固件加载到已有ArduPilot固件的主板上
54 2
|
6月前
|
存储 监控 调度
服务器固件
服务器固件
80 0
|
存储 Linux 芯片
OpenSBI三种固件的区别
OpenSBI三种固件的区别
|
Ubuntu 算法 Linux
飞腾CPU BIOS固件生成教程
飞腾CPU BIOS固件生成教程
572 1
|
内存技术
stm32实现iap远程固件更新
stm32实现iap远程固件更新
186 0
硬件与固件的区别
硬件与固件的区别
409 0
|
传感器 Windows 内存技术
(4)(4.3) 将固件加载到已有ArduPilot固件的主板上
(4)(4.3) 将固件加载到已有ArduPilot固件的主板上
196 0
|
机器人 Linux C语言
openwrt开发使用-选择芯片编译烧录
openwrt开发使用-选择芯片编译烧录
566 1
openwrt开发使用-选择芯片编译烧录
|
数据安全/隐私保护
使用U盘重新烧写龙芯自带系统loongnix
使用U盘重新烧写龙芯自带系统loongnix
305 0
使用U盘重新烧写龙芯自带系统loongnix