- Debugging/Logging - 飞行日志分析
- Debugging/Logging - ULog文件格式
- 教程
- 教程 - 地面站
- 教程 - 编写应用程序
- 教程 - QGC的视频流
- 教程 - 远距离视频流
- 教程 - u-blox M8P RTK
- 新手上路
- 新手上路 - 初始设置
- 新手上路 - 安装工具链
- 安装工具链 - Mac OS
- 安装工具链 - Linux
- Linux - Advanced Linux
- 安装工具链 - Windows
- 新手上路 - Fast RTPS installation
- 新手上路 - 代码编译
- 新手上路 - 高级配置
- 新手上路 - 贡献& 开发者电话会议
- 贡献& 开发者电话会议 - GIT例程
- 贡献& 开发者电话会议 - Documentation
- 新手上路 - Licenses
- 概念解读
- 概念解读 - 飞行模式
- 概念解读 - 结构概述
- 概念解读 - 飞行控制栈
- 概念解读 - 中间件
- 概念解读 - 混控和执行器
- 概念解读 - PWM限制状态机
- Hardware
- Hardware - 自驾仪硬件
- 机型 - 统一的基础代码
- 机型 - 参考机型
- 机型 - 添加一个新的机型
- Data Links - SiK Radio
- Data Links - Wifi数传
- Data Links - 数传
- I2C总线 - SF1XX lidar
- 传感器和执行机构总线 - UAVCAN总线
- UAVCAN总线 - UAVCAN Bootloader
- UAVCAN总线 - UAVCAN固件升级
- UAVCAN总线 - UAVCAN配置
- UAVCAN总线 - UAVCAN 的各种笔记
- 传感器和执行机构总线 - UART
- UART - uLanding Radar
- 传感器和执行机构总线 - 设置云台控制
- 传感器和执行机构总线 - 相机触发器
- Hardware - 协同电脑
- 仿真
- 仿真 - 基本仿真
- 仿真 - Gazebo仿真
- 仿真 - HITL仿真
- 仿真 - 连接到ROS
- 仿真 - AirSim仿真
- 仿真 - 多机仿真
- 中间件及架构
- 中间件及架构 - uORB消息机制
- 中间件及架构 - MAVLink消息机制
- 中间件及架构 - 守护程序
- 中间件及架构 - 驱动框架
- 模块 & 命令
- 模块 & 命令 - 命令
- 模块 & 命令 - 通信
- 模块 & 命令 - 驱动
- 模块 & 命令 - 系统
- Robotics
- Robotics - 用Linux进行外部控制
- Robotics - ROS
- ROS - 在RPi上安装ROS
- ROS - MAVROS (ROS上的MAVLink)
- ROS - MAVROS外部控制例程
- ROS - 外部位置估计
- ROS - Gazebo Octomap
- Robotics - DroneKit
- Debugging/Logging
- Debugging/Logging - FAQ
- Debugging/Logging - 系统控制台
- Debugging/Logging - 自驾仪调试
- Debugging/Logging - Sensor/Topic Debugging
- Debugging/Logging - 仿真调试
- Debugging/Logging - System-wide Replay
- Debugging/Logging - 发送调试的值
- Debugging/Logging - Profiling
- Debugging/Logging - 日志记录
- 教程 - 光流
- 教程 - ecl EKF
- 教程 - 飞行前检查
- 教程 - 着陆检测
- 教程 - Linux系统下使用S.Bus驱动
- Advanced Topics
- Advanced Topics - 系统启动
- Advanced Topics - 参数&配置
- Advanced Topics - 参考参数
- Advanced Topics - 安装Intel RealSense R200的驱动
- Advanced Topics - 切换状态估计器
- Advanced Topics - 外部模块
- Advanced Topics - STM32 Bootloader
- 测试和持续集成
- 测试和持续集成 - 持续集成
- 测试和持续集成 - Jenkins持续集成环境
- 测试和持续集成 - 综合测试
- 测试和持续集成 - Docker容器
- 测试和持续集成 - 维护
UAVCAN总线 - UAVCAN Bootloader
translated_page: https://github.com/PX4/Devguide/blob/master/en/uavcan/bootloader_installation.md
translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e
安装UAVCAN启动程序
警告: 无人机控制器局域网络(Unmanned Aerial Vehicle Controller Area Network,UAVCAN)设备通常在出厂时就预安装了启动程序。 如果你不对UAVCAN设备进行开发,请不要试图去重复本章的任何操作。
概览
对于STM32设备,PX4项目包含一个标准的UAVCAN启动程序。
启动程序占用了flash内存的最开始8-16KB的位置,它是设备上电后首先运行的代码。通常,启动程序执行设备的简单初始化,如:自动确定CAN总线的波特率, 担当UAVCAN动态ID节点客户端去获得唯一的ID节点,并且在运行应用启动之前要等待飞行控制器确认。
这个启动程序能确保,在UAVCAN设备固件无效或者错误时,无需人为干扰就可以自动恢复,此外还允许固件自动升级。
前提条件
初始化或更新UAVCAN启动程序需要:
- 一个SWD接口或者JTAG接口(取决于设备),比如说 BlackMagic Probe 或 ST-Link v2;
- 一条连接SWD接口或JTAG接口与UAVCAN设备调试端口的适配线;
- 支持ARM的工具链supported ARM toolchain.
设备的前提准备
如果用以下的操作无法连接你的设备,有可能是因为设备上已存在的固件禁用了MCU的调试引脚。为了恢复调试引脚,你需要将你接口的NRST或nSRST引脚(通常为标准20引脚ARM连接器的15引脚)与你的设备MCU的NRST引脚连接。如果需要详细信息,可以通过查看你设备的原理图与PBC设计图或者直接联系制造商。
安装
你可以编译生成或直接从其他地方获取你设备启动程序的image文件(参考设备文档获取详细信息),在此之后,启动程序必须被写入设备flash存储区的起始位置。
根据使用的是SWD接口或JTAG接口,初始化步骤有所不同。
BlackMagic Probe
确保你的BlackMagic Probe 固件版本已经更新至最新.
将你的UAVCAN设备与probe连接,并将你的电脑与probe连接。
确定你probe设备的名称,设备通常名称为/dev/ttyACM<x>
或 /dev/ttyUSB<x>
。
给你的UAVCAN设备供电,然后执行:
arm-none-eabi-gdb /path/to/your/bootloader/image.elf
当出现指示符gdb
后,执行:
target extended /dev/ttyACM0
monitor connect_srst enable
monitor swdp_scan
attach 1
set mem inaccessible-by-default off
load
run
如果 monitor swdp_scan
返回错误,请确保你的拼写正确并确保你的BlackMagic固件版本是最新的。
ST-Link v2
确保 OpenOCD的版本为最新,至少是0.9.0版本。
将你的UAVCAN设备与ST-Link连接,并将你的电脑与ST-Link连接。
给你的UAVCAN设备供电,然后执行:
openocd -f /path/to/your/openocd.cfg &
arm-none-eabi-gdb /path/to/your/bootloader/image.elf
当出现指示符 gdb
后,执行:
target extended-remote localhost:3333
monitor reset halt
set mem inaccessible-by-default off
load
run
Segger J-Link 调试器
将你的UAVCAN设备与JLink连接,并将你的电脑与JLink连接。
给你的UAVCAN设备供电,然后执行:
JLinkGDBServer -select USB=0 -device STM32F446RE -if SWD-DP -speed 20000 -vd
打开另一个terminal终端,定位到包含px4esc_1_6-bootloader.elf文件的目录,for the esc,然后运行:
arm-none-eabi-gdb px4esc_1_6-bootloader.elf
当出现指示符 gdb
后,执行:
```tar ext :2331
load
## 使用SEGGER JLink调试器擦除Flash
擦除flash内存写入出厂默认值是一种有效的恢复的方法,这样固件会使用默认参数。进入SEGGER初始化目录,运行JLinkExe程序,然后执行:
device
erase
```
上文中<name-of-device>
代表微控制器的名称,比如Pixhawk ESC 1.6的名称为STM32F446RE,SV2470VC ESC的名称为STM32F302K8。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论