当前位置: 技术问答>linux和unix
请教一个驱动与设备号对应的问题,百思不得其解
来源: 互联网 发布时间:2016-02-20
本文导语: 我以前写linux驱动时,总是自己从头构架,这样就可以按自己的意愿分配主、从设备号,如UART、IIC、RTC等等,但发现自己写的没有系统的稳定, 如UART、IIC、RTC在linux里都有一个很完整的驱动,只要再完成一些硬件上...
我以前写linux驱动时,总是自己从头构架,这样就可以按自己的意愿分配主、从设备号,如UART、IIC、RTC等等,但发现自己写的没有系统的稳定,
如UART、IIC、RTC在linux里都有一个很完整的驱动,只要再完成一些硬件上的接口函数就行了,于是想全部用系统的驱动,但是出一个比较麻烦的问题。
现在我就这些注册设备得到的主、从设备号是多少产生疑问,如RTC的二种注册方法:
一:
static struct rtc_ops atmel_rtt_rtcops = {
.owner = THIS_MODULE,
.open = atmel_rtt_rtcops_open,
.release = atmel_rtt_rtcops_release,
.ioctl = atmel_rtt_rtcops_ioctl,
.read_time = atmel_rtt_rtcops_gettime,
.set_time = atmel_rtt_rtcops_settime,
.proc = atmel_rtt_rtcops_proc,
};
register_rtc(&atmel_rtt_rtcops);
这样的话,在/dev下建议一个设备节点,主、从设备号是10、135就可以了(我是瞎猜的),但如何知道这10、135是如何得到的?
二:
static const struct rtc_class_ops atmel_rtc_ops = {
.ioctl = atmel_rtc_ioctl,
.read_time = atmel_rtc_readtime,
.set_time = atmel_rtc_settime,
.read_alarm = atmel_rtc_readalarm,
.set_alarm = atmel_rtc_setalarm,
.proc = atmel_rtc_proc,
};
rtc = rtc_device_register(pdev->name, &pdev->dev, &atmel_rtc_ops, THIS_MODULE);
这个是最近2.6内核里大部分的做法,它得到的设备主、从号不再是10、135,那么如何知道这个注册方法的主、从设备号?
在/proc里的 devices文件里只显示其主设备号,如何得知它的从设备号?
如UART、IIC、RTC在linux里都有一个很完整的驱动,只要再完成一些硬件上的接口函数就行了,于是想全部用系统的驱动,但是出一个比较麻烦的问题。
现在我就这些注册设备得到的主、从设备号是多少产生疑问,如RTC的二种注册方法:
一:
static struct rtc_ops atmel_rtt_rtcops = {
.owner = THIS_MODULE,
.open = atmel_rtt_rtcops_open,
.release = atmel_rtt_rtcops_release,
.ioctl = atmel_rtt_rtcops_ioctl,
.read_time = atmel_rtt_rtcops_gettime,
.set_time = atmel_rtt_rtcops_settime,
.proc = atmel_rtt_rtcops_proc,
};
register_rtc(&atmel_rtt_rtcops);
这样的话,在/dev下建议一个设备节点,主、从设备号是10、135就可以了(我是瞎猜的),但如何知道这10、135是如何得到的?
二:
static const struct rtc_class_ops atmel_rtc_ops = {
.ioctl = atmel_rtc_ioctl,
.read_time = atmel_rtc_readtime,
.set_time = atmel_rtc_settime,
.read_alarm = atmel_rtc_readalarm,
.set_alarm = atmel_rtc_setalarm,
.proc = atmel_rtc_proc,
};
rtc = rtc_device_register(pdev->name, &pdev->dev, &atmel_rtc_ops, THIS_MODULE);
这个是最近2.6内核里大部分的做法,它得到的设备主、从号不再是10、135,那么如何知道这个注册方法的主、从设备号?
在/proc里的 devices文件里只显示其主设备号,如何得知它的从设备号?
|
可以用mknod 建立个该主设备号指定一个空闲的从设备号到/dev目录下的..
|
查看这个&pdev结构体应该定义了设备号变量名称..
2.6一般是动态生成的吧
2.6一般是动态生成的吧
|
"在/proc里的 devices文件里只显示其主设备号,如何得知它的从设备号?"
从设备可以自己设定,目的就是不出现重复的相同的设备的..
你可以先指定从设备号为0试试看..
从设备可以自己设定,目的就是不出现重复的相同的设备的..
你可以先指定从设备号为0试试看..