驅動設備管理

  • 設備管理作用
  • 設備管理接口使用
  • 設備管理實現

設備管理作用

一個操作系統往往集成很多設備的驅動,比如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是具體的設備,
每個設備都會被加入設備鏈表,在鏈表裏面實現設備的增刪查改。

device code

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章