我创建了一个平台设备驱动程序,它在启动时从设备树初始化。我希望能够作为char驱动程序访问此设备,并试图找出我应该使用的结构条目。
基本上我希望我的设备(在设备树中使用从0x34000000
开始的资源)显示为/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)我是否需要初始化此字段,还是由内核预先初始化?
4)当我已经初始化设备(device_create
)
struct platform_device->dev
dev_t
,cdev
,class
之间的联系以及它们与platform_device
的关系对我来说有点迷宫。如果有人帮忙解释,那就太好了。