NXP RT1052--移植mavlink

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语言

 

创建一个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

编译后

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

https://www.cnblogs.com/BlogsOfLei/p/9587763.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值