实现设备访问框架,访问各类设备,以及各类设备的添加,初始化,读写操作,删除设备等,创建设备管理结构体。同样,进行分层管理,对于操作系统,实现内核抽象层。对于具体芯片,实现硬件抽象层。此项目中,我们会使用到LED、风扇等设备,我们先实现LED灯的设备驱动。
1.设备子系统
根据功能构造设备对象结构体,抽象出LED灯设备操作结构体:
typedef struct LEDDevice { int which; int (*Init)(struct LEDDevice *ptLEDDevice); int (*Control)(struct LEDDevice *ptLEDDevice, int iStatus); void (*SetColor)(struct LEDDevice *ptLEDDevice, int iColor); void (*SetBrightness)(struct LEDDevice *ptLEDDevice, int iBrightness); }LEDDevice, *PLEDDevice;
2.分层抽象
应用层,内核抽象层,芯片抽象层,驱动层。例如初始化函数:
int (*Init)(struct LEDDevice *ptLEDDevice); LEDDeviceInit ->KAL_LEDDeviceInit ->CAL_LEDDeviceInit 使用HAL库,已在HAL_INIT初始化完成
对于控制:
int (*Control)(struct LEDDevice *ptLEDDevice, int iStatus); LEDDeviceControl ->KAL_LEDDeviceControl