当前位置: 技术问答>linux和unix
问个2.6.12 kernel的usb keyboard的问题
来源: 互联网 发布时间:2016-06-17
本文导语: 是这样,我静态编译了2.6.12的kernel,让它支持usb keyboard在我们自己的板子上。 下面是devices的信息: # more devices I: Bus=0003 Vendor=0a81 Product=0101 Version=0110 N: Name="CHESEN USB Keyboard" P: Phys=usb-ohci-1/input0 H: Handlers=event1 ...
是这样,我静态编译了2.6.12的kernel,让它支持usb keyboard在我们自己的板子上。
下面是devices的信息:
# more devices
I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-ohci-1/input0
H: Handlers=event1 evbug
B: EV=120003
B: KEY=7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: LED=1f
我在编译的时候没有选择VT,如果选择上,那么H: Handlers=kbd event0 evbug (我加入了event debug信息)
这个时侯,我阅读/dev/input/event0,是可以读到东西的。
# hexdump /dev/input/event0
0000000 43af 386d bd09 0007 0001 0023 0001 0000
0000010 43af 386d bd5e 0007 0000 0000 0000 0000
0000020 43af 386d b100 0009 0001 0023 0000 0000
0000030 43af 386d b14f 0009 0000 0000 0000 0000
0000040 43b0 386d c7c8 0000 0001 0021 0001 0000
0000050 43b0 386d c81f 0000 0000 0000 0000 0000
0000060 43b0 386d fa3c 0002 0001 0021 0000 0000
0000070 43b0 386d fa8a 0002 0000 0000 0000 0000
在我不停掉这个hexdump,然后拔掉usb keyboard,这个时侯打印:
hexdump: /dev/input/event0: No such device
0000080
----------------------------------------------------
这样证明usb keyboard的驱动,open,read都正常了。于是我写了一个简单的程序来读取input_event。
打印正常:
type:1 code:46 value:1
type:1 code:33 value:1
type:0 code:0 value:0
type:1 code:46 value:0
type:0 code:0 value:0
type:1 code:33 value:0
type:0 code:0 value:0
这个时侯,我在不停掉该程序的情况下,拔掉keyboard,于是这段程序不停地打印:
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
我想知道,当我拔掉keyboard的时候,如何让内核知道usb keyboard已经被拔掉了?
是不是我应该使用hotplug的脚本进行rmmod?
谢谢!
下面是devices的信息:
# more devices
I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-ohci-1/input0
H: Handlers=event1 evbug
B: EV=120003
B: KEY=7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: LED=1f
我在编译的时候没有选择VT,如果选择上,那么H: Handlers=kbd event0 evbug (我加入了event debug信息)
这个时侯,我阅读/dev/input/event0,是可以读到东西的。
# hexdump /dev/input/event0
0000000 43af 386d bd09 0007 0001 0023 0001 0000
0000010 43af 386d bd5e 0007 0000 0000 0000 0000
0000020 43af 386d b100 0009 0001 0023 0000 0000
0000030 43af 386d b14f 0009 0000 0000 0000 0000
0000040 43b0 386d c7c8 0000 0001 0021 0001 0000
0000050 43b0 386d c81f 0000 0000 0000 0000 0000
0000060 43b0 386d fa3c 0002 0001 0021 0000 0000
0000070 43b0 386d fa8a 0002 0000 0000 0000 0000
在我不停掉这个hexdump,然后拔掉usb keyboard,这个时侯打印:
hexdump: /dev/input/event0: No such device
0000080
----------------------------------------------------
这样证明usb keyboard的驱动,open,read都正常了。于是我写了一个简单的程序来读取input_event。
while(1)
{
while(read(fd,&buff,sizeof(struct input_event))==0)
{
;
}
printf("type:%d code:%d value:%dn",buff.type,buff.code,buff.value);
}
打印正常:
type:1 code:46 value:1
type:1 code:33 value:1
type:0 code:0 value:0
type:1 code:46 value:0
type:0 code:0 value:0
type:1 code:33 value:0
type:0 code:0 value:0
这个时侯,我在不停掉该程序的情况下,拔掉keyboard,于是这段程序不停地打印:
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
type:0 code:0 value:0
我想知道,当我拔掉keyboard的时候,如何让内核知道usb keyboard已经被拔掉了?
是不是我应该使用hotplug的脚本进行rmmod?
谢谢!
|
我想知道,当我拔掉keyboard的时候,如何让内核知道usb keyboard已经被拔掉了?
我想usb子系统和input子系统会自动将该usb驱动和input驱动给卸载的,而且/dev/input/event0也会被udev给自动删除了的
我想usb子系统和input子系统会自动将该usb驱动和input驱动给卸载的,而且/dev/input/event0也会被udev给自动删除了的
|
你用的那个驱动已经编译到内核中了,
不能用rmmod卸载的。
除非你是把它编译成了模块。
当你拔掉keyboard的时候,内核会知道的,
因为找不到设备了,驱动程序会检测到。
不能用rmmod卸载的。
除非你是把它编译成了模块。
当你拔掉keyboard的时候,内核会知道的,
因为找不到设备了,驱动程序会检测到。