# 安装 UAVCAN 引导加载程序

警告

UAVCAN 设备出厂时通常已预装引导加载程序。除非您正在开发 UAVCAN 设备,否则请勿遵循本节中的说明。

# 概述

PX4 项目包含一个用于 STM32 设备的标准 UAVCAN 引导加载程序。

引导加载程序占用闪存的前 8-16 KB,是开机时执行的第一个代码。通常情况下,引导加载程序会执行低级设备初始化、自动确定 CAN 总线波特率、充当 UAVCAN 动态节点 ID 客户端以获取唯一的节点 ID,并等待飞行控制器的确认,然后再进行应用程序引导。

这一过程可确保 UAVCAN 设备无需用户干预即可从无效或损坏的应用固件中恢复,并允许自动固件更新。

# 先决条件

安装或更新 UAVCAN 引导加载程序需要

# 设备准备

如果使用以下说明无法连接到设备,则可能是设备上的固件禁用了 MCU 的调试引脚。要恢复正常,您需要将接口的 NRST 或 nSRST 引脚(标准 ARM 20 引脚连接器上的第 15 引脚)连接到 MCU 的 NRST 引脚。请获取设备原理图和 PCB 布局,或联系制造商了解详情。

# 安装

在为设备编译或获取引导加载程序映像(详情请参考设备文档)后,必须将引导加载程序复制到设备闪存的起始位置。

具体过程取决于所使用的 SWD 或 JTAG 接口。

# 黑魔法探针

确保您的 BlackMagic 探头 固件已更新 (打开新窗口).

将探针连接到 UAVCAN 设备,并将探针连接到计算机。

确定探针的设备名称。通常是 /dev/ttyACM<x>;/dev/ttyUSB<x>;.

启动 UAVCAN 设备并运行:

arm-none-eabi-gdb /path/to/your/bootloader/image.elf

gdb 提示符,运行

目标扩展 /dev/ttyACM0 监控 connect_srst 以便
监控 swdp_scan attach 1
设置 mem 默认不可访问 关闭加载运行

如果 监视器 swdp_scan 返回错误时,请确保您的布线正确,并且您的 BlackMagic 固件是最新版本。

确保使用最新版本(至少 0.9.0 版 OpenOCD (打开新窗口).

将 ST-Link 与 UAVCAN 设备连接,并将 ST-Link 与计算机连接。

启动 UAVCAN 设备并运行:

openocd -f /path/to/your/openocd.cfg 及样品;
arm-none-eabi-gdb /path/to/your/bootloader/image.elf

gdb 提示符,运行

目标 extended-remote localhost:3333 监控重置 停止
设置 mem 默认不可访问 关闭加载运行

将 JLink 调试器连接到 UAVCAN 设备,并将 JLink 调试器连接到计算机。

启动 UAVCAN 设备并运行:

JLinkGDBServer -select USB=0 -device STM32F446RE -if SWD-DP -speed 20000 -vd

打开第二个终端,导航到包含 esc 的 px4esc_1_6-bootloader.elf 的目录,然后运行:

arm-none-eabi-gdb px4esc_1_6-bootloader.elf

gdb 提示符,运行

tar ext :2331 load

作为一种恢复方法,擦除闪存至出厂默认设置可能是有用的,这样固件就会使用默认参数。进入世纪佳缘安装目录,启动 JLinkExe,然后运行:

设备 <name-of-device> 擦除

更换 <设备名称>; 微控制器的名称,例如 Pixhawk ESC 1.6 的名称为 STM32F446RE,SV2470VC ESC 的名称为 STM32F302K8。