问题重述
当我们用FMT开源飞控FMT飞控烧录程序后,再次连接地面站,即Qgroundcontrol时,地面站无法连接pixhawk2飞控。
解决办法
总体思路是重新给飞控烧录bootloader,然后再次给pixhawk2烧录FMT开源飞控程序。
在px4_bootloader下载bootloader源程序。然后进入到PX4-Bootloader目录。
在目录内依次执行下面指令
git submodule sync --recursive
git submodule update --init --recursive
make
编译结果如下:
我们需要px4fmuv2_bl和px4io_bl这两个bootloader固件。
note:若提示gcc-arm-none-eabi not found,可在ARM developer下载其中版本的gcc-arm-none-eabi。
我下载的是gcc-arm-none-eabi-7-2018-q2-update
安装好后,打开.bashrc
gedit ~/.bashrc
在最后面添加
export PATH=$PATH:~/gcc-arm-none-eabi-7-2018-q2-update/bin
note:上面的安装地址要根据自己的安装路径来修改。
拆开pixhawk2飞控硬件。这里引用一下别人的图
下图中,中间部分是FMU,即STM32F4的ST LINK口,右边是STM32F1的ST LINK口。
pixhawk2的ST LINK引脚如下图所示。
ST LINK下载器如下:
在硬件接线上,参考如下顺序接线
ST LINK引脚 | PIXHAWK2引脚 |
---|---|
SWCLK 2脚 | SWCLK 4脚 |
SWDIO 4脚 | SWDIO 2脚 |
3.3V 8脚 | VCC 1脚 |
用STM32 ST-LINK utility往pixhawk2烧录bootloader。
在下面图片搜索ST-LINK utility
得到下面结果,然后下载下来,并在window系统安装。
STM32 ST-LINK utility安装好后,打开它。并按照下面步骤操作:
- 打开STM32 ST-LINK utility,Target->Settings,在Connect setting那里选择SWD模式。
- 把pixhawk的FMU板的JTAG和st-link的VCC,SWDIO,SWCLK, GND分别对应接上(如果是烧写IO板则连IO板的JTAG)。
- 把px4fmuv2_bl.bin固件拖进去STM32 ST-LINK utility界面(如果烧写的是IO板则拖px4io_bl.bin)。
- Target-Connect,然后Target-Erase Chip,然后Target-Program,按start。等待数秒后即可烧写完成。
结语
恭喜你,往pixhawk2烧录bootloader成功,现在你可以往pixhawk2里烧录fmt开源飞控程序了,祝你玩的愉快!!!