0
点赞
收藏
分享

微信扫一扫

NXP RT1052--移植mavlink

骨灰级搬砖工 2022-12-07 阅读 46


MAVLink简介

MAVLink是一种针对微型飞行器,推出的轻量化,仅由头文件信息编码而成的软件通信协议库。

MAVLink遵循一种混合发布和点对点设计模式:主要的信息可以作为主数据流向多个目标目标进行发送,而一些子协议如(mission protocol或者parameter protocol)可以采用点对点通信模式,利用重传机制进行可靠的数据传输。

MAVLink的信息包(各种数据包类型的组合如姿态信息包、GPS信息包)都是定义在XML格式的原始文件中。利用这个XML文件可以生成如下支持语言的MAVLink源代码。针对不同的的应用场合,XML文件也被定义了多种。比如针对绝大多数的地面站系统和自动驾驶系统,这样一些系统所需要的信息包类型就被定义一种取名为“common.xml”文件中。

支持生成的语言

MAVLink2 可以生成如下语言

  • C
  • C++11
  • Python

MAVLink1可以生成如下语言

  • C
  • C#
  • Objective C
  • Java
  • JavaScript
  • Lua
  • Swift
  • Python

XML文件种类:

  • common.xml
  • ardupilotmega.xml
  • ASLUAV.xml
  • autoquad.xml
  • icarous.xml
  • matrixpilot.xml
  • minimal.xml
  • paparazzi.xml
  • python_array_test.xml
  • slugs.xml
  • standard.xml
  • test.xml
  • ualberta.xml
  • uAvionix.xml

移植过程:

​​https://github.com/mavlink/mavlink​​,

 

通过git下载:git clone ​​https://github.com/mavlink/mavlink.git​​ --recursive

安装python,安装选型全选择。安装pymavlink

python -m pip install pymavlink

F:/mavlink/message_definitions/v1.0/common.xml

F:/mavlink/C++_code

也可以选择C语言

NXP RT1052--移植mavlink_python

 

创建一个keil工程,将生成文件复制到工程中,导入头文件。

 

编译错误1:

..\..\user\mavlink\ardupilotmega\../mavlink_types.h(53): error:  #20: identifier "pack" is undefined

   #define MAVPACKED( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop) )

改为#define MAVPACKED( __Declaration__ ) __Declaration__ 

 

错误2

..\..\user\mavlink\ardupilotmega\../mavlink_types.h(53): error:  #3092: anonymous unions are only supported in --gnu mode, or when enabled with #pragma anon_unions

在最前面加上#pragma anon_unions

NXP RT1052--移植mavlink_xml_02

编译后

FromELF: creating hex file...
".\Objects\TestProject.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:03

测试参考 ​​https://www.2cto.com/kf/201612/582856.html​​

举报

相关推荐

0 条评论