设备注册到内核
说起驱动开发,都不可能绕过的就是设备注册啦,也不得不提到devfs.
devfs是Linux 2.4内核被引入的,可以通过程序在设备初始化时在/dev目录里创建设备文件,也可以卸载它们.使用devfs也可以指定设备名|所有者|权限位(用户空间仍可以修改后俩者),可以使用register_chrdev()传递0以获得可用主设备号,devfs_register()指定次设备号.(方法比较老,可以bd些新东西)
现在主流都很少看到那玩意了,我们该咋整呢?
拿platform举例子哈:
int platform_device_register(struct platform_device *)
void platform_device_unregister(struct platform_device *)
是不是很简单,当然我们得了解一下,咱们现在设备和驱动匹配是靠设备名来的,所以platform__device结构体中是这样的:
struct platform_device { // platform总线设备
const char * name; // 平台设备的名字
int id; // ID 是用来区分如果设备名字相同的时候(通过在后面添加一个数字来代表不同的设备,因为有时候有这种需求)
struct device dev; // 内置的device结构体
u32 num_resources; // 资源结构体数量
struct resource * resource; // 指向一个资源结构体数组
const struct platform_device_id *id_entry; // 用来进行与设备驱动匹配用的id_table表
/* arch specific additions */
struct pdev_archdata archdata; // 自留地 添加自己的东西
};