在Linux之中,约定如果设备不属于任何的总线,则可以把它注册为虚拟的platform设备。
下面就简单来学习一下一个简单的platform设备是怎么创建出来的。
一般注册platform驱动的步骤是:
1,platform_device_create注册一个设备
2,platform_driver_create注册一个驱动。
static struct platform_driver chrdev_platform_driver = {
.probe = chrdev_probe,
.remove = chrdev_remove,
.driver = {
.name = CHRDEV_NAME,
.owner = THIS_MODULE,
},
};
static struct platform_device chrdev_platform_device = {
.name = CHRDEV_NAME,
.id = 0,
.dev = {
}
};
platform_device和platform_driver的名字必须一致
然后在chrdev_probe中完成注册一个字符设备。一般注册字符设备的流程如下:
1,alloc_chrdev_region分配一个未使用的设备号
2,cdev_init和cdev_add使用(1)分配到的设备号添加一个字符设备
如果到这里就结束了,我们就需要使用分配到的设备号手动去建立/dev下面的设备节点,,,
在这里可以使用class_create和device_create让udev deamon自动为我们创建设备节点
3,class_create(THIS_MODULE, "chrdev");
4,device_create(chrdev_class, NULL, chrdev_devno, NULL, "chrdev");
源文件:chrdev.c