Pixhawk遥控器无法检测&bootloader烧写

2023-05-16

Pixhawk“detected 0 radio channel”

导火索:最近毕设想用pixhawk来做个东西。于是跟着官方的wiki,搭建起了编译环境。但是奇怪的事情突然发生了。我clong的是官方最新版的master分支的固件,ubuntu下完成编译并且下载。连接上QGC后发现,遥控器读取不了信号,并且显示

QGC显示

尝试过很多方法:重刷旧PX4固件和arduipilot固件,换QGC版本,清空SD卡,换遥控器,换飞控。均无果。于是想到了重新刷写两个板子的booloader。


pixhawk的fmu和io板刷写过程

1.固件准备

git clone git@github.com:PX4/Bootloader.git
cd Bootloader
make

编译成功后会输出各个版本对应的bootloader文件:
这里写图片描述
其中:
pixhawk的fmu对应的是:px4fmuv2_bl.bin
pixhawk的io对应的是:px4io_bl.bin

2.硬件准备

  • 一个ST-Link
    这里写图片描述

  • 拆开的pixhawk
    这里写图片描述

pixhawk板上的JTag底座用的是10pin的,跟我们平常的20pin的不一样,因此需要做个转换。

  • 10pinJTAG针脚定义(pixhawk上的)
    这里写图片描述

  • 20pinJTAG针脚定义(st-link上的)
    这里写图片描述

我们使用SW模式来下载程序,因此只需要对接四个针脚:
- VCC(st-link的1接pixhawk的1)
- SWDIO(st-link的7接pixhawk的2)
- SWCLK(st-link的9接pixhawk的4)
- GND(st-link的20接pixhawk的9)

即可完成pixhawk上jtag和st-link的连接!这里就不贴上对接完成的图了。

关于连接用的线,我是直接剪断杜邦线来做的。焊接在pixhawk上对应位置即可。
这里写图片描述

3.软件准备

  • 需要从官网下载STM32 ST-LINK utility和stlink驱动

在官网下载比较麻烦,要注册一个帐号。这里直接附上度盘下载地址链,密码:wqv8

4.开始烧写

1.打开STM32 ST-LINK utility,Target->Settings,在Connect setting那里选择SWD模式
2.把pixhawk的FMU板的JTAG和st-link的VCCSWDIOSWCLKGND分别对应接上(如果是烧写IO板则连IO板的JTAG)。
3.把px4fmuv2_bl.bin固件拖进去STM32 ST-LINK utility界面(如果烧写的是IO板则拖px4io_bl.bin)。
4.Target-Connect,然后Target-Erase Chip,然后Target-Program,按start。等待数秒后即可烧写完成。


遥控器信号检测不到问题分析

  • 按照上面的Bootloader烧写方法,先烧录FMU板的Bootloader,再烧录IO板的Bootloader,并且再烧录前先进行全片擦除,一般就可以解决文章前面提到的遥控信号检测不到的情况。而且板子可以烧录旧版的固件正常工作

- 可是产生这个问题的原因到底是什么呢?

- 之前说过尝试过很多方法:重刷旧PX4固件和arduipilot固件,换QGC版本,清空SD卡,换遥控器,换飞控。但是都无法解决。

- 由之前的尝试可知,排除硬件的问题,也排除上位机版本不兼容的问题,因此初步怀疑是Bootloader出了问题。于是后面笔者通过STM32 ST-LINK utility的“对比芯片flash内的bin和要烧录的bin差异“的功能,发现,Bootloader的代码并没有损坏。于是困惑就来了,那么到底是哪里出了问题呢?

后面通过观察有这种问题的飞控跟正常的飞控的IO板指示灯的区别:

  • 有问题的板:IO B/E(红)和IO ACT(蓝)灯由始至终互相交替闪烁,不论是换固件还是复位。
  • 正常的板子:一开始IO B/E(红)常量,IO ACT(蓝)灯闪烁,之后IO B/E(红)快闪和IO ACT(蓝)灯慢闪,最后IO B/E(红)熄灭和IO ACT(蓝)灯慢闪。

- 现象表明是IO板的确出了问题,不是Bootloader的问题,而是IO板固件的问题,IO板的固件,是FMU板通过IO板的Bootloader烧写到IO板上的。而且据了解出现这个问题的人大多都是下载了master分支的程序之后出现的问题。因此怀疑锁定master的最新固件。

- 为了验证这个猜想,笔者再次做了一个实验:FMU板保留master分支编译下载的最新固件,对IO板子进行Bootloader的刷写。
-烧录完IO板的Bootloader后重启飞控后的现象:IO B/E(红)和IO ACT(蓝)灯在飞控初始化一段时间后,再次进入了相交替闪烁的循环。也就是文章开头的现象又出现了。

-因此,最后的罪魁祸首就是:master分支的固件。

-再者,如果想知道为什么master固件会导致这样的问题,那么只有研究下master固件对IO板子的flash做了什么事情了。

个人观点:master分支上的固件版本一般是不稳定版本,因此在进行个人的开发的时候,建议在clone完固件后,git tag,然后用类似git checkout v1.5.5这样切换到一个稳定的版本后,再进行后续的开发


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pixhawk遥控器无法检测&bootloader烧写 的相关文章

  • 树莓派3B使用mavlink串口连接PIXHAWK_V5

    参考网址 xff1a http ardupilot org dev docs raspberry pi via mavlink html https dev px4 io en robotics dronekit html https do
  • pixhawk之NSH调试

    一 ardupilot固件 windows环境 前期准备 1 xff1a pix烧录程序 xff0c Arducopter或者library中的example都可以实现 2 xff1a 拔掉SD卡 xff08 脚本中提到的没有SD卡进入ns
  • 【EXata】2.1 文件组织 & 2.5 Makefile组织

    2 1 文件组织 EXata 发行文件被分组到几个子目录中 这使得用户可以快速找到源代码 二进制对象文件 配置文件 文档或样本 表 2 1 列出了这些子目录和它们的内容 注意 xff1a 在本文件中 xff0c EXATA HOME 指的是
  • MIUI解BL锁失败

    最后解决办法是 换USB 2 0接口 分析问题 或许可能是软件兼容性不好 USB3 0影响读取设备信息 导致无法解锁
  • uboot编译报错解决

    uboot编译报错 root ubuntu home gjt uboot u boot 2015 01 make scripts kconfig conf silentoldconfig Kconfig scripts kconfig co
  • u-boot移植详细文档

    本文转载至 http blog chinaunix net uid 9672747 id 3590141 html 一 Boot Loader的概念和功能 二 U boot简介 三 开发环境准备 四 U boot的使用 一 四 U boot
  • FPGA UltraScale+ 利用ICAP原语实现Multiboot功能

    例程参考 https blog csdn net xiaomingzi55 article details 124365631 1 这个贴子说的很清楚 唯一一点就是它是ICAP2 这样写是没问题的 1 对于BPI模式来说 可以通过RS 1
  • BootLoader介绍

    文章目录 一 BootLoader的引入 二 BootLoader的启动方式 三 BootLoader的结构和启动过程 四 自己写一个BootLoader 1 BootLoader第一阶段 2 BootLoader第二阶段 一 BootLo
  • ARM qemu 系统模拟器可以在没有内核参数的情况下从卡映像启动吗?

    我看过很多如何运行 QEMU ARM 板模拟器的示例 在每种情况下 除了 SD 卡图像参数之外 QEMU 还始终提供内核参数 即 qemu system arm M versatilepb kernel vmlinuz 2 6 18 6 v
  • 从 UEFI 应用程序内部运行 UEFI shell 命令

    我是 UEFI 应用程序开发新手 我的要求是 我需要从 UEFI 应用程序运行 UEFI shell 命令 app efi 源代码 需要指导我如何做到这一点 Example cpUEFI shell 中的命令用于将文件从一个路径复制到 其他
  • 当引导加载程序写入循环设备上的文件系统时,Linux 无法识别该文件系统

    我目前正在 x86 NASM 程序集中编写一个引导加载程序 旨在从 FAT16 文件系统加载内核 R BIN 并跳转到它 我一直在将引导加载程序写入使用安装的空白映像sudo losetup loop21 image img 我会使用写图像
  • 组装 - 在 bochs 中运行引导加载程序时出现问题

    我目前正在尝试在 bochs 中编译并运行一个简单的引导加载程序 目前 这是我的 bootloader asm 文件 BITS 16 ORG 0x7C00 Where the code gets mapped top jmp top Loo
  • Atmel SAM3X8E 双组切换用于启动不同的行为

    我目前正在使用 Arduino Due 板 该板嵌入了 Atmel SAM3X8E 处理器 我使用 Atmel Studio 版本 7 0 1645 和提供的 Atmel 软件框架 版本 3 28 1 对其进行编程 在 SAM 上运行的程序
  • 在 x86 程序集中制作鼠标处理程序

    我正在 NASM 程序集中编写操作系统 但在制作鼠标处理程序 指向设备 BIOS 接口处理程序 时遇到问题 我尝试在互联网上搜索如何做到这一点 但没有成功 这是设置的代码 call checkPS2 PS2 routines jc NOMO
  • 与 CMPSB 指令混淆

    我一直在看这段代码 我对代表 cmpsb line LOOP push cx mov cx 0x000B eleven character name mov si ImageName image name to find push di r
  • 将 NASM 和 64 位 C 代码编译并链接到引导加载程序中 [重复]

    这个问题在这里已经有答案了 我制作了一个非常简单的一级引导加载程序 它执行两个主要操作 从 16 位实模式切换到 64 位长模式 并从硬盘读取接下来的几个用于启动基本内核的扇区 对于基本内核 我尝试用 C 而不是汇编编写代码 对此我有一些疑
  • 不使用预定义函数在汇编中打印字符串

    我必须在汇编中定义一个函数 该函数允许我循环遍历声明的字节字符串并使用 BIOS 中断打印它们 我处于 16 位实模式 这是一个根据教科书编写一个小引导加载程序的练习 但看起来这只是一个草稿 并且缺少一些东西 我得到了以下代码 org 0x
  • 没有操作系统直接运行的程序叫什么名字?

    当我试图提出有关该主题的其他问题时 我很难正确表达我的问题 那么直接在相关计算机上运行的程序的正确名称是什么 一个可以描述内核和引导加载程序的术语 因为它们是在没有操作系统的情况下直接执行的 C 标准称之为 独立环境 我觉得这个术语和我见过
  • 将引导加载程序存储在软盘映像上的哪里?

    我将编写并测试引导加载程序 为了做到这一点 我计划将引导加载程序复制到软盘映像文件上并将其安装在虚拟机中 但是 我不确定将引导加载程序的机器代码放在哪里 它是否只是转储到文件的前几个字节中 软盘的引导扇区是第一个扇区 如果您谈论的是原始软盘
  • 什么是“Javascript 引导加载程序”?

    我主要在Facebook的源码中看到过这个Bootloader setResourceMap bMxb7 name javascript 中的引导加载程序到底是什么 它的用途和目的是什么 Bootloader 是 Facebook 前端代码

随机推荐

  • vue项目打包后卡死

    element使用el tabs导致浏览器卡死 使用ElementUi开发后台本地是好的 xff0c 打包后有一个页面打开就卡死浏览器 xff0c 经排查发现在是由于引起的 将vue vue template compiler elemen
  • Win11运行VMware延迟卡顿

    最近在使用VMware时 xff0c 开机提示如下 xff1a 您在运行该虚拟机时启用了侧通道缓解 侧通道缓解可增强安全性 xff0c 但也会降低性能 要禁用缓解 xff0c 请在虚拟机设置的 高级 面板中更改侧通道缓解设置 有关更多详细信
  • MacBookPro制作Windows 11 U盘启动盘

    下载 Windows ISO 文件 你可以直接从 Windows 官网下载 ISO 文件 插入U盘 官方iso镜像文件大约5GB xff0c U盘需要大于5G 通过命令确认U盘所在的驱动器 在终端输入如下命令 diskutil list 可
  • Git彻底删除历史记录中大文件

    在做项目时 使用Git为版本控制时 经常会有小伙伴提交一些二进制的大文件到git xff0c 使用版本库变的臃肿 等到发现用git rm删除那个文件 但这样做显然是不够的 xff0c 这些文件并没有真正在项目中被用到 xff0c 与此同时这
  • Archlinux在升级后无法进入图形桌面

    Archlinux系统在经历了一个多小时的升级后 终于升级完成 但重启后 xff0c 就进不了系统 xff0c 出现错误提示 系统出问题 请联系管理员 Archlinux升级命令 yay span class token parameter
  • Docker使用普通用户运行

    Docker 守护程序绑定到 Unix 套接字 xff0c 而不是 TCP 端口 默认情况下 xff0c 拥有 Unix 套接字的是用户 xff0c 其他用户只能使用 Docker 守护程序始终以用户身份运行 span class toke
  • OpenCV学习实践(2) 获取当前工作空间目录

    0 前言 因为opencv涉及导入本地图片 cv imread函数 又不想一直使用绝对路径 使用相对路径有一直出错 所以想先看看当前工作目录在哪 此外 这里还使用roslaunch启动程序 使当前工作目录更难找了 感谢tjf ym两位师兄的
  • STM32的SPI

    1 SPI硬件层共有4个引脚SCK MISO MOSI NSS 不需要接上拉及下拉电阻等 2 SPI跟I2C一样是一种通讯总线 所以可以挂载多个从机 通过NSS片选引脚控制从机 3 SPI主模式时钟与挂载总线相关 STM32时钟为fpclk
  • AC-AC变换电路

    1 工频变压器变换 隔离变压器安全性高 xff0c 但效率低于自耦变压器 2 自耦变压器变换电压 非隔离型变压器 xff0c 效率高但安全性不高 3 阻容降压电路 利用电容隔直通交的特性 xff0c 容抗 Xc 61 1 2 fc 当频率非
  • 使用matlab曲线拟合

    1 excl中的x y变量参数 2 使用matlab中的导入数据 选择刚刚的表格 3 导入选项中选择列向量 4 在matlab命令行中输入函数plot M1 M2 其中M1 M2是x y变量 5 然后会显示新窗口 在新窗口中使用工具的基本拟
  • LLC软开关笔记

    1 增益 当工作在谐振频率时 LLC的增益为1 开关频率高于谐振频率 增益降低 开关频率低于谐振频率时 增益大于1 当开关频率过高 增益过小时 需要进入打嗝模式 2 mos零电压开通 要保证mos的软开 首先要保证一定的死区时间 在死区时间
  • simulink PID自动整定

    使用此方法可以快速得出PID参数而不用经过复杂的计算 电压电流环均可使用此方法 1 模型搭建完成后点击PID模块的Tunne 选项进入PID Tunner模块 2 由于模型为非线性对象需要识别控制对象 点击 plant gt Identif
  • 以Boost为例的type3电压环补偿器实例

    因为零极点控制在开关电源当中对于控制系统稳定性具有较大的自由度 最近半年一直在研究学习开关电源中的零极点控制 零极点控制对于我在内的大部分人来说应该是难点 因为数学模型推导计算复杂 难度较高 最近半年一直翻书查阅资料还是没有完全掌握 所幸通
  • Simulink 使用C语言发PWM波 (一)

    1 在matlab中安装C语言模块mingw 2 在simulink中引用S Function模块 和S Function Examples模块 3 使用S Function Examples模块创建C文件 双击S Function Exa
  • Simulink 使用C语言发PWM波 (二)触发采样

    1 定义结构体 2 定义S Function输出端口数量 3 定义采样时间 4 初始化参数 5 用代码实现三角波载波 根据调制波配置占空比并在计数器为0时采样电感电流 6 simulink图 至此实现了电感电流使用C语言采样
  • c++的几个刷题网站(不只有c++)

    oj joyskid cn 116 55 251 18 9902 ybt ssoier cn 8088 http hihocoder com https www lintcode com https vjudge net https www
  • Putty登陆root输入密码被拒绝(没开启ssh)

    输入密码 xff0c 提示Access denied 考虑是因为没有开启ssh xff0c 检查后发现未安装ssh yum y install openssh 提示出错 xff0c yum install tree也不行 xff0c 猜是源
  • ubuntu系统(三):c++ serial使用与学习

    0 前言 目前讲解单一知识点 xff0c 觉得最好的就时c 43 43 官方 xff08 官方网站 xff09 给的说明 xff0c 链接如下 xff1a serial 1 1 0 http wjwwood io serial doc 1
  • python编程入门书籍-最适合Python初学者的6本书籍推荐「必须收藏」

    原标题 xff1a 最适合Python初学者的6本书籍推荐 必须收藏 Python是一种通用的解释型编程 xff0c 主要用于Web开发 机器学习和复杂数据分析 Python对初学者来说是一种完美的语言 xff0c 因为它易于学习和理解 x
  • Pixhawk遥控器无法检测&bootloader烧写

    Pixhawk detected 0 radio channel 导火索 xff1a 最近毕设想用pixhawk来做个东西 于是跟着官方的wiki xff0c 搭建起了编译环境 但是奇怪的事情突然发生了 我clong的是官方最新版的mast