启动程序

引导加载程序的源代码见 AP_Bootloader 但是,许多电路板的预编译二进制文件都可以在 工具/引导加载器 固件服务器上的目录。请参考 README 文本 看看现有的引导加载程序是否与新电路板兼容。

闪存启动加载程序

我们目前有两种方法来闪存 ArduPilot 引导加载程序:

Mavproxy

在 Mavproxy 终端中输入:flashbootloader

Mission Planner地面站

使用 SETUP->Install Fimware 页面的 "Bootloader Update(启动程序更新)"按钮

通过 UART(Telem 端口)闪存固件

除了(飞行)控制器上的 USB 端口外,某些电路板还能通过串行/UART 连接更新固件。具有此功能的电路板将在其各自的 ardupilot/libraries/AP_HAL_ChibiOS/hwdef/* 您的 (飞行)控制器*/hwdef-bl.dat 文件。确认要闪存的电路板可以闪存后,导航到 ardupilot/工具/脚本 目录。

在该目录下有一个名为 uploader.py 您将使用它来闪存固件。键入 ./uploader.py --帮助 将显示您可使用的不同参数。这些参数将根据设置和(飞行)控制器中的具体硬件和波特率配置进行修改。本例中使用的是通过 USB-TTL 电缆连接的 CubeBlack,Telem1 端口的波特率设置为 921600。

使用简单的 dmesg.输出结果应该是这样的

ftdi_sio 1-11.4:1.0: FTDI USB 串行 设备 变流器 检测到 USB 1-11.4: 检测到 FT232RL USB 1-11.4: FTDI USB 串行 设备 变流器 现在 所附  ttyUSB0

现在我们已经知道要使用哪个设备进行闪存,请使用相应的标志执行脚本。标记 --baud-bootloader-flash "921600"; 对加快上传过程很重要。如果保持默认值 "57600"; 您可能需要等待一段时间才能上传固件。韧体 --buad-flightstack "921600"; 需要与您的 serialx_baudrate 以发送更新的 mavlink 命令。成功执行后,终端应输出如下内容:

./uploader.py --端口 /dev/ttyUSB0 --baud-bootloader-flash "921600"; --baud-flightstack "921600"; ~/ardupilot/build/CubeBlack/bin/arducopter.apj 已加载 固件 对于 9,0, 尺寸 1710572 字节数 等待 对于  引导加载程序...如果  官方 是否  应声  1-2 秒、 拔下  重插  USB 连接器。可能  获取 外部 焕发 尺寸 假设 0
已找到 官方 9,0 引导程序 修订 5 关于 /dev/ttyUSB0 引导加载程序 协议: 5
OTP:
   类型 六角形
   idtype: T
   vid: 6e686365
   pid: 676f6c6f
   coa: REM1MzYwNDQyNjFE//////////////////////////9DVTExTDk2MDA0NjIN/////////////////////////zA2LzE4LzE5IDA2OjI0OjA2////////////////////MkRBRToxMDEx//////////////////////////////8=
    003400483238511130313538
ChipDes:
   家庭 STM32F42x
   修订: 3
芯片
   20016419 STM32F42x_43x 修订版3 (没有 1M 缺陷)
信息
   焕发 尺寸 2080768
   绵延 焕发 尺寸 0
   board_type: 9 (fmuv3)
   Board_rev: 0
身份验证 完整
设置 波特率  921600

擦除  : [====================] 100.0% 计划: [====================] 100.0% 核查 : [====================] 100.0% 重新启动。

执行 mavproxy.py --主人 /dev/ttyUSB0,921600.