事情的起因:
实验室有套无人机,上面的飞控是Pixhawk4,最近有人要用,我去调试的时候发现解锁后电机不转,上电时也没有电机滴滴的声音,一开始怀疑是固件版本的问题,px4版本换了1.13.3、1.12.3、1.11.1都试过了,发现没有一个解锁后电机能够转动。怀疑是bootload的问题,然后查PX4官网,发现QGC就能直接升级bootload,大喜,但是发现更新bootload后解锁后电机还是不转动。同门说这个四代飞控上次烧写FMT之后再烧写pixhawk4就不行了,然后他给我烧写了个FMT固件,解锁后电机呼呼转,这下可以确定起码硬件没有坏了,应该还是bootload的问题。
故障现象
pixhawk4烧写px4固件解锁后电机不转,烧写FMT能够正常使用。
解决方案:
Bootload烧写过程参考这两位前辈的:
Pixhawk遥控器无法检测&bootloader烧写_arctory的博客-CSDN博客
PX4IO刷写BootLoader、固件 PX4IO固件损坏修复_px4烧写bootloader_韬_17的博客-CSDN博客
首先咱得有个ST-LINK,这个我实验室没有,因为上次帮室友调试stm32发现了,白嫖过来,ST-LINK引脚定义如下图所示:
ST-link引脚图有点胡,将就看吧。然后再看看pixhawk4飞控的引脚图:
Pixhawk有两套bootload,一个是IO的,一个是FMU的。IO DEBUG PORT就是烧写IO的bootload的,FMU DEBUG PORT就是烧写FMU的bootload的。两者引脚定义大同小异,但是用到的引脚是一样的,分别是VT,SWDIO,SWCLK,GND。然后就是做线了。
一开始我不知道只要做四根线连接就好了,所以全给做了,只要对于接口能够接上就行了,然后就是编译Bootload了。Bootload编译需要在ubuntu,如果不想自己编译,后面会给出我已经编译好的Bootload,实测可以用,Bootload 的github官网:
GitHub - PX4/PX4-Bootloader: PX4 Bootloader for PX4FMU, PX4IO and PX4FLOW
打开终端,运行下列命令:
git clone https://github.com/PX4/PX4-Bootloader.git
然后进入下载好的bootload文件夹里,打开终端运行:
git submodule sync --recursive
git submodule update --init --recursive
make
我在编译的时候报了一个错:
px_mkfw.py
px_uploader.py
genlink.py
irq2nvic_h
csv2yaml.py
文件中的
#!/usr/bin/env python
改为:
#!/usr/bin/env python3
就行了。 我是用的vscode,然后在bootload文件夹打开,在左侧搜索栏搜索这个参数修改的。修改后编译成功出现以下界面:
这里提供编译好的bootload:
链接:https://pan.baidu.com/s/1qxoidofmuGVn-U-XNnq9HQ?pwd=3349
提取码:3349
下一步就是烧写了:
Pixhawk4 FMU烧写版本是px4fmuv5_bl,这个我在官网上找到线索了:
IO的版本有px4io_bl和px4iov3_bl,这个我不知道咋选,我烧写的px4io_bl是能够用的,
px4iov3_bl没有测试过。首先连接ST-link和Pixhawk4,我这里先烧写的IO再烧写的FMU。
首先连接飞控:
注意,这一步还是得用usb给飞控供电的,不然识别不到飞控。
然后安装下载STM32 ST-LINK Utility:
参考链接:
STM32 ST-LINK Utility下载链接:
链接:https://pan.baidu.com/s/1HmZuld1A8TmhpogzQ0Ue6w?pwd=3349
提取码:3349
一路下一步安装就行,打开后点击连接:
连接成功会出现一下内容:
先点击擦除数据:
然后点击烧录:
选择烧录文件所在文件夹:
点击Start开始烧录
这样bootload就开始烧录了,烧录结束后用同样方法对FMU进行烧录即可。两者烧录完后再用QGC下px4固件解锁电机就能正常转动了。