在没有现有 ArduPilot 固件的电路板上加载固件¶
ArduPilot 现在为所有(飞行)控制器使用 ChibiOS 操作系统,包括许多针对多旋翼飞行器竞赛应用的小型电路板。
通常,这些电路板会预装另一款自动驾驶软件。(如果电路板已安装 ArduPilot,请参阅 加载固件 以获取固件加载说明)。
将 ArduPilot 安装到这些(飞行)控制器中包括
安装所需的驱动程序和闪存工具
下载相应的 ArduPilot 固件
将 ArduPilot 载入电路板
备注
使用 ChibiOS 将 ArduPilot 连接到 Pixhawk (飞行)控制器的说明可参见 这里.
下载驱动程序和闪存工具¶
"这款" STM32CubeProgrammer 将安装所需的 DFU(直接固件上传)驱动程序,可用于在 DFU 模式下向(飞行)控制器闪存固件。该程序适用于 Windows、Linux 和 MacOS 系统。下载并安装该程序。可能还需要安装 JAVA 以设置该程序。
下载 ArduPilot 固件¶
从以下地址为您的电路板下载 ArduPilot 固件 firmware.ardupilot.org.通常可以通过以下操作找到相应的固件:
使用测试版和开发者版本¶
Beta¶
之前 稳定
发布的 Beta
版本发布。如果您想尝试更新的功能或帮助开发人员进一步对代码进行飞行测试,可以使用这些版本。由于它们是 "测试版",因此可能仍然存在错误(尽管即使在稳定版固件中也有可能出现这种情况)。不过,开发团队已经对其进行了测试,并已通过飞行测试。该版本允许更多用户在固件发布前对其进行最终测试。 稳定
.我们鼓励有经验的 ArduPilot 用户试飞该固件并提供反馈意见。
最新开发人员版本¶
这反映了 ArduPilot 代码开发分支的当前状态。它已经过开发团队的审核,通过了所有的自动测试套件,在大多数情况下,如果有重大改动,还会进行试飞。该代码每天都在构建,可供有经验的用户测试。这相当于 "alpha "版本,可能会有错误,但很少会导致 "崩溃"。在添加更改或引入功能后,很快就会在 即将推出的功能 维基版块将更新有关新增或更改的信息。
将固件上传到(飞行)控制器¶
按住电路板的 DFU 按钮或暂时桥接其 "BOOT "引脚,然后插入 USB 电缆(连接到电脑)。通电后松开按钮或解除桥接。
打开 Windows 设备管理器,在 "通用串行总线设备 "下查找 "STM32 BOOTLOADER",确认电路板处于 DFU 模式。
启动 STM32CubeProgrammer
选择连接方式:USB
确保显示 USB 端口......这意味着已在 DFU 模式下检测到电路板。
按 "连接 "键
然后,这里将显示电路板 CPU 的详细信息。
按 "Open file(打开文件)",选择下载的 "arduXXX_with_bl.hex "文件。
文件名将显示在选项卡中。
按 "下载 "将文件闪存到电路板上。
现在您可以重新启动电路板并 与您喜爱的地面站连接 (Mission Planner地面站、QGC 等),今后也可以使用 Pixhawk 板的常规方法进行固件上传。
替代方法¶
下载并安装 Zadig(仅限 Windows)¶
下载并运行 扎迪格 (在 "下载 "下方搜索 "Zadig 2.3"),以便使用 USB 访问电路板。
从选项菜单中选择 "列出所有设备 "选项
从下拉菜单中选择 "STM32 BOOTLOADER",然后按 "替换驱动程序 "按钮
您也可以选择检查电路板是否显示为 USB 端口:
按住电路板上的 DFU 按钮并插入 USB 电缆(连接到电脑上)
打开 Windows 设备管理器,在 "通用串行总线设备 "下查找 "STM32 BOOTLOADER",确认电路板处于 DFU 模式。
下载 ArduPilot 固件¶
从以下地址为您的电路板下载 ArduPilot 固件 firmware.ardupilot.org.通常可以通过以下操作找到相应的固件:
将 ArduPilot 上传到电路板¶
下载、安装并运行 Betaflight 配置器.
选择屏幕左侧的 "固件刷新程序
从右上角选择 DFU
按右下角的 "Load Firmware [Local](加载固件 [本地])",然后选择上面下载的 arduXXX_with_bl.hex 文件。
按下 "闪存固件",几分钟后固件就会被加载。
现在您可以重新启动电路板并 与您喜爱的地面站连接 (Mission Planner地面站、QGC 等),今后也可以使用 Pixhawk 板的常规方法进行固件上传。
使用外置闪光灯将固件加载到电路板上¶
最近的一些电路板,特别是 Seriously Pro Racing (http://www.seriouslypro.com/),使用内部闪存容量小但外部连接闪存芯片容量大得多的 MCU。这些电路板需要额外的步骤来加载 ArduPilot 固件。通常情况下,内部闪存上会有某种引导加载器,然后外部闪存上会有主固件。
使用 SSBL 加载固件¶
SPRacing 系列电路板的内部闪存中预装了专有引导加载程序,需要使用第二级引导加载程序才能加载更多固件。这些电路板有几种加载固件的方法,但无论您选择哪种方法,最初都需要使用 SSBL 加载 ArduPilot。请按照以下网址的 "安装 "说明进行操作 https://github.com/spracing/ssbl 以便将 SSBL 载入电路板。加载 SSBL 后,请按照 PX4 的说明将 ArduPilot 载入电路板 https://github.com/spracing/ssbl#px4-installation-to-external-flash 但请使用 arducopter.bin 固件镜像,而不是使用 PX4 固件。步骤摘要如下:
下载 https://github.com/spracing/ssbl/releases 并将 SSBL 安装到外部闪存,如下所示 https://github.com/spracing/ssbl#installation-to-external-flash
下载最新的 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 卡,否则固件将无法启动),打开电源
使用Mission Planner地面站正常配置电路板
此时,电路板上的固件就可以正常工作了。如果您想加载新固件,则需要再次执行步骤 2-7(不能使用 Mission Planner 加载固件)。如果您确定永远不想在电路板上加载 betaflight,那么可以安装 ArduPilot 引导加载程序。
安装 ArduPilot 引导加载程序¶
警告
安装 ArduPilot 引导加载程序是单向操作。在此步骤之后,您无法将电路板恢复到出厂配置或加载 betaflight - 您必须将电路板送回 Seriously Pro 重新刷新出厂固件,前提是这是可能的。
如果您确定只想在电路板上使用 ArduPilot然后闪存 ardupilot 引导加载程序,这样后续升级就简单多了。
首先必须在电路板上安装可用版本的 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 固件