前言
前段时间梳理了PX4IO以及PX4FMU的类,但是还是没真正上去梳理到硬件框架上去,这次直接开始梳理AP_HAL框架,从根本上去认识pixhawk在硬件框架上的实现;
namespace AP_HAL
在pixhawk里面对于硬件的驱动在使用上完全是依赖了nuttx的驱动层,所以在驱动的调用上也是沿用了nuttx的fs_ops的方式,但是通过源码可以发现的是,pixhawk对与硬件又进行了抽象例如之前抽象的Device以及派生出来的CDev,这些最终只是提出了一个device框架,来定义设备,以及派生出的字符设备;对于底层硬件抽象这是通过AP_HAL来完成:
【device】是对设备抽象的一个框架,使得设备代码更清晰、易维护;
【AP_HAL】是对硬件抽象的一个框架,目的在于适应多个硬件平台;
namespace AP_HAL {
/* 顶层的虚类 Hal. 最顶层的抽象类*/
class HAL;
/* 顶层驱动类 drivers. 抽象的各个接口驱动 */
class UARTDriver; //串口
class I2CDevice; //I2C
class I2CDeviceManager; //I2C
class Device;
/*SPI总线*/
class SPIDevice;
class SPIDeviceDriver;
class SPIDeviceManager;
/*外设抽象*/
class AnalogSource;
class AnalogIn;
class Storage;
class DigitalSource;