最近开始学习ArduPilot/APM飞控的源码, 源码托管在github上。
源码链接:https://github.com/diydrones/ardupilot。
飞控主页:http://ardupilot.com/;
飞控的开发者官网网址为:http://dev.ardupilot.com/。
学习源码主要在开发者(developer)网页,官方提供了较为详细的代码编译和源码学习的教程,非常详细。
我这里主要是为了记录一下学习的东西,以便以后参考。
源码基本结构分为了5个部分:
AP_HAL是硬件抽象层,不同硬件平台通过该层提供统一的接口。
libraries提供了一系列的库文件,内容比较多,类型也比较广。
tools directories提供了一些其他库支持,包括bootloader,demo等等。
external support code主要是一些平台需要的额外代码,包括嵌入式系统和特有的驱动等。
在libraries目录下的各个设备中,有些会提供一个example目录,里边提供了一些针对该设备的测试文件,可以编译后单独测试该设备。同时也可以通过例程学习该设备相关函数和接口的使用方法。
在apm飞控上,系统不支持多线程,在px4和Linux平台设备上可以支持多线程,具体过程有待学习,涉及到了操作系统的知识。
在工程设计中,开发者采用5个uart分别实现不同的作用。A-E分别为终端、第一个GPS,第一个数传,第二个数传,第二个GPS。
RCin和RCout
提供了几种存储管理