平台设备/字符设备的 struct 类和 sysfs

whh*_*000 5 linux-device-driver linux-kernel

我创建了一个平台设备驱动程序,它在启动时从设备树中初始化。我希望能够作为字符驱动程序访问该设备,并试图找出我应该使用哪些结构条目。

基本上我希望我的设备(在设备树中使用从 开始的资源)0x34000000在 中显示为 char 设备/dev/myDevice

为此,我知道我需要使用dev_t. 1)我可以在platform_device->dev.devt中使用dev_t吗?如果可以,我还需要调用`alloc_chrdev_region'还是由内核预先初始化?

目前我使用它,我仍然调用alloc_chrdev_region它来初始化它,然后我调用cdev_init/cdev_add创建我的字符设备。

现在我的设备在 /dev 中显示为 /dev/34000000.myDevice。

2)为什么前面会显示它的内存资源?

在做了一些阅读之后,我决定尝试创建一个新类和一个新设备(这似乎不对),以便获得一个/dev/myDevice条目。

我看到有一个struct class *字段platform_device->dev.class

3)我需要初始化这个字段还是由内核预先初始化?

device_create4)当我已经初始化了设备时,为什么我需要使用新的“结构类”进行调用( struct platform_device->dev

dev_tcdev、之间的联系class以及它们与 的关系platform_device对我来说有点像迷宫。如果有人能帮忙解释一下,那就太好了。