- 設備管理作用
- 設備管理接口使用
- 設備管理實現
設備管理作用
一個操作系統往往集成很多設備的驅動,比如led燈,按鍵,PWM,ADC,SD等等設備。如何管理
這些設備,使得應用層可以使用統一的方式去操作這些設備,類似linux操作所有設備當做操作
文件的方式,FOS也是這種方式,用戶可以在驅動層去定義open,read,write,iocontrol,close
等接口,在應用層去做對應的設備操作。
設備管理接口使用
驅動層
定義設備操作接口,初始化operation結構體
用戶層
調用接口
int device_open(DEVICE * device, char * name, U8 flag);
int device_read(DEVICE * device, char * buff, U8 size);
int device_write(DEVICE * device, char * buff, U8 size);
int device_ioctrl(DEVICE * device, U8 cmd, void *arg);
int device_close(DEVICE * device);
設備管理實現
typedef struct OPERATIONS_STR {
int (*open) (char *arg, U8 flag);
int (*read) (char * buff, U8 size);
int (*write) (char * buff, U8 size);
int (*ioctrl) (U8 cmd, void *arg);
int (*close) ();
} OPERATIONS;
typedef struct DEVICE_STR {
LIST list;
BOOL enable;
const char *name;
OPERATIONS *ops;
U8 open_count;
U8 flag;
} DEVICE;
這兩個結構體是整個設備管理的核心, OPERATIONS_STR 是設備操作的方式, DEVICE_STR是具體的設備,
每個設備都會被加入設備鏈表,在鏈表裏面實現設備的增刪查改。