如何成功移植cleanflight、INAV到keil开发环境

现在常见的开源飞控已经有很多,穿越机的有CC3D兼容cleanflight、beatflight。但是如果追求先进导航体验 话可以下载cleanflight的一个分支iNav fork固件。INAV是专注导航、如多旋翼的定点、定高、返航、航线规划等。相对PIX、APM这样在复杂的操作系统上开发的开源系统,cleanflight、INAV版本中使用来比较简单的操作系统,从开发的人数上讲PIX4有14人,beatflight有9人,cleanfligt有5人,INAV有4人(截止2018年9月)。在特技飞行上beatflight是一种抢先版,在开源网站上也看出有大牛兼顾beatflight和cleanflight这两个版本的开发,而INAV的导航部分则是移植了PIX4的导航算法。

对于初学者来说,仅仅学习PIX这样开源代码风格需要很长一段时间、同时搭建它的开发环境也是很耗精力的一件事。大多数人对keil开发环境都比较熟悉、包括调试。而在Linux下的操作包括Makefile/交叉工具链的环境搭建都相对陌生,也比较复杂。最近琢磨实现了对开源代码cleanflight、INAV两种开源代码的移植,成功移植到keil开发环境下并设计相匹配的硬件,可实现JTAG在线调试、并且支持cleanflight-configurator/INAV-configurator两种地面站。

在移植之前我们先搭建cleanflight、inav在windows开发环境搭建。根据官网说明:
第一步安装cygwin软件
如何成功移植cleanflight、INAV到keil开发环境_第1张图片
如何成功移植cleanflight、INAV到keil开发环境_第2张图片

如何成功移植cleanflight、INAV到keil开发环境_第3张图片
如何成功移植cleanflight、INAV到keil开发环境_第4张图片

如何成功移植cleanflight、INAV到keil开发环境_第5张图片

如何成功移植cleanflight、INAV到keil开发环境_第6张图片
如何成功移植cleanflight、INAV到keil开发环境_第7张图片

第二步:安装交叉工具链、设置环境变量以上这些图片在
https://github.com/cleanflight/cleanflight/tree/master/docs/development/assets

如何成功移植cleanflight、INAV到keil开发环境_第8张图片
如何成功移植cleanflight、INAV到keil开发环境_第9张图片

如何成功移植cleanflight、INAV到keil开发环境_第10张图片

第三步:检查交叉工具链版本、下载代码
如何成功移植cleanflight、INAV到keil开发环境_第11张图片

如何成功移植cleanflight、INAV到keil开发环境_第12张图片

如何成功移植cleanflight、INAV到keil开发环境_第13张图片
如上图所示,下载完代码选择目标可进行编译。
可能你会疑惑搭建这个开发环境的意义是什么?
要完成移植需要了解编译某个目标的整个过程,最重要的是需要建立某个目标所需要的源文件,另外的方法是研读Makefile,看看整个源码的编译过程,方便移植。

我选择的的目标板是PORT103R,再次截图一部分编译过程。

如何成功移植cleanflight、INAV到keil开发环境_第14张图片

在编译完后以后,在下载的源代码中找到在编译过程中出现的源代码待用。
第四部:搭建keil的开发环境
因为源代码在linux上开发的,所使用的是GCC交叉工具链,因此我们需要将keil的开发环境也配置成gcc交叉工具链,而非keil自带的ARM编译工具。使用自带的工具会出现很多的错误,因为很多汇编语言两者都不兼容。
这部分有很多相应博客教程,在此不再说明。
移植成功后可根据自己实际情况使用不同的传感器,包括mup6050、mup6000、mpu6500,以下是我移植好的cleanflight、INAV两个版本代码。

如何成功移植cleanflight、INAV到keil开发环境_第15张图片
如何成功移植cleanflight、INAV到keil开发环境_第16张图片

以上两部分截图,一是穿越机cleanflight的源码支持cleanflight的地面站,另一种是在导航方面表现强大的INAV代码,支持INAV-configuratorI,两种代码支持同一个硬件,都是支持mavlink协议。
注:第一次写博客,如有错误欢迎指正,感恩,谢谢!

你可能感兴趣的:(如何成功移植cleanflight、INAV到keil开发环境)