前几次在写驱动程序的时候,在生成 .ko文件后加载后,通过cat /proc/devices可以看到已经生成相应的设备,但是并没有生成相应的设备文件在,linux系统中,驱动程序就像普通的程序一样读写,所以必须要相应的设备文件,前几次是在/dev/目录下直接 mknod led c 253 0这样就生成了相应的设备文件,这篇文件,推荐一个在驱动程序中自动生成设备文件的方法。
首先:需要一个类,通常是指针形式的:struct class *this_class
什么时候生成设备文件呢,当然是在内核加载的那个入口程序里面了,在这里我们使用class_create(struct class,name);这个函数,然后
this_class = class_create(THIS_MODULE, DEVICE_NAME);到这里知道刚才那个指针变量的含义了,然后再创建一个设备,下面这个函数是在用户空间里面的。 device_create(this_class, NULL, MKDEV(252, 0), NULL, "hello_init");
表示创建成功了一个设备文件,主设备号252,次设备号是0的一个设备文件,在内核初始化的时候,被调用,并生成设备文件
· 这个是根据busybox生成的,busybox继承了udev并简化得到的mdev,根据设备信息自动生成设备文件,这样每次在启动系统的时候,会自动生成设备节点,另一种方法或许就是添加一个初始化脚本吧。