Pixhawk遥控器无法检测&bootloader烧写
2017-06-06 16:01
971 查看
origin: http://blog.csdn.net/q7727765/article/details/69054452
2
3
1
2
3
编译成功后会输出各个版本对应的bootloader文件:
其中:
pixhawk的fmu对应的是:px4fmuv2_bl.bin
pixhawk的io对应的是:px4io_bl.bin
拆开的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上对应位置即可。
在官网下载比较麻烦,要注册一个帐号。这里直接附上度盘下载地址链,密码:wqv8
2.把pixhawk的FMU板的JTAG和st-link的VCC,SWDIO,SWCLK,
GND分别对应接上(如果是烧写IO板则连IO板的JTAG)。
3.把px4fmuv2_bl.bin固件拖进去STM32 ST-LINK utility界面(如果烧写的是IO板则拖px4io_bl.bin)。
4.Target-Connect,然后Target-Erase Chip,然后Target-Program,按start。等待数秒后即可烧写完成。
- 可是产生这个问题的原因到底是什么呢?
- 之前说过尝试过很多方法:重刷旧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做了什么事情了。
Pixhawk“detected 0 radio channel”
导火索:最近毕设想用pixhawk来做个东西。于是跟着官方的wiki,搭建起了编译环境。但是奇怪的事情突然发生了。我clong的是官方最新版的master分支的固件,ubuntu下完成编译并且下载。连接上QGC后发现,遥控器读取不了信号,并且显示
尝试过很多方法:重刷旧PX4固件和arduipilot固件,换QGC版本,清空SD卡,换遥控器,换飞控。均无果。于是想到了重新刷写两个板子的booloader。
pixhawk的fmu和io板刷写过程
1.固件准备
git clone git@github.com:PX4/Bootloader.git cd Bootloader make1
2
3
1
2
3
编译成功后会输出各个版本对应的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的VCC,SWDIO,SWCLK,
GND分别对应接上(如果是烧写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这样切换到一个稳定的版本后,再进行后续的开发。
相关文章推荐
- Pixhawk遥控器无法检测&bootloader烧写
- 启动JvisualVM提示"无法检测到本地java应用程序"的解决方案
- Pixhawk---烧写FMU/IO bootloader
- 工行U盾检测不到,Giesecke & Devrient StarKey无法安装 解决办法
- 解决TI cc2538串口无法烧写,bootloader出错
- 使用JVM管理工具jvisualvm,系统提示"无法检测到本地java应用程序"的原因和解决办法
- Pixhawk---烧写FMU/IO bootloader
- Pixhawk---烧写FMU/IO bootloader
- 启动JvisualVM提示"无法检测到本地java应用程序"的解决方案
- visual studio.net 已检测到指定的web服务器运行的不是ASP.net 1.1版本。你将无法运行aps.net web应用程序或服务
- vs.net已经检测到制定的WEB服务器运行的不是ASP.NET1.1版,你无法运行ASP.NET WEB应用程序或服务
- Session:"数据无法验证的错误"
- 关于整合php5,apache2.x,mysql中出现"无法载入 mysql 扩展,请检查 PHP 配置"的解决方法
- ASP.NET2.0中"无法显示 XML 页。 使用 XSL 样式表无法查看 XML 输入。"问题的解决
- vs.net已经检测到制定的WEB服务器运行的不是ASP.NET1.1版,你无法运行ASP.NET WEB应用程序或服务
- visual studio.net已检测到指定的web服务器运行的不是asp.net1.1版。无法运行asp.net web应用程序,打开aspx页面时出现下载情况
- 无法打开"添加/删除程序"现象解决方法
- 解决ASP.NET连接Oraclei数据库出现"无法加载DLL(oci.dll)"异常
- 解决"无法找到脚本库 "/aspnet_client/system_web/1_1_4322/WebUIValidation.js'.请尝到试手动放置此文件,或通过运行"aspnet_regiis -c"重新安装。"?(转东转西)
- visual studio.net已检测到指定的web服务器运行的不是asp.net1.1版。无法运行asp.net web应用程序