/* Device information */ typedef struct { int flags; /* Device flags: input/output/system */ int ext; /* Supported extensions */ char name[16]; /* Device name 设备名称 */ /* GENERAL functions 启动和停止函数 */ int (*start) (void); /* To start the device */ int (*stop) (void); /* To stop the device */ /* OUTPUT functions 输出函数 */ void (*putc) (const char c); /* To put a char */ void (*puts) (const char *s); /* To put a string (accelerator) */ /* INPUT functions 输入函数*/ int (*tstc) (void); /* To test if a char is ready... */ int (*getc) (void); /* To get that char */ /* Other functions */ void *priv; /* Private extensions */ } device_t;
U-Boot将所有的设备结构体组成一个链表:list_t devlist = 0;
devlist = ListCreate (sizeof (device_t));
再来看一些函数:
device_register (device_t * dev) 设备注册,将结构体添加到devlist的后面
device_deregister(char *devname)
search_device (int flags, char *name) 设备搜索
device_deregister(char *devname)设备的移除
以上这些就过程了U-Boot的设别管理框架。下面来分析一个该框架下的设备实例。