Linux usb skeleton.c不工作

Linux usb skeleton.c不工作,linux,usb,linux-device-driver,usb-mass-storage,Linux,Usb,Linux Device Driver,Usb Mass Storage,我正在尝试在Linux中编写一个基本的设备驱动程序,以便在USB大容量存储设备上执行IO。我使用的是2.6.34内核。我使用内核附带的usb skeleton.c来理解usb核心API的正确工作。我编译了它,插入了为我的USB闪存驱动器生成的/dev/skel0设备 我在设备上写了1个1024字节的数据包,但令我惊讶的是,写入失败,输入/输出错误 # insmod usb-skeleton.ko # ls /dev/skel0 /dev/skel0 # dd if=/dev/urandom

我正在尝试在Linux中编写一个基本的设备驱动程序,以便在USB大容量存储设备上执行IO。我使用的是2.6.34内核。我使用内核附带的usb skeleton.c来理解usb核心API的正确工作。我编译了它,插入了为我的USB闪存驱动器生成的/dev/skel0设备

我在设备上写了1个1024字节的数据包,但令我惊讶的是,写入失败,输入/输出错误

# insmod usb-skeleton.ko
# ls /dev/skel0
  /dev/skel0
# dd if=/dev/urandom of=/dev/skel0 bs=1024 count=1
  dd closing output file `/dev/ask0': Input/Output error
当我写数据时,骨架驱动程序的写函数甚至写回调都被调用,但IO仍然失败

由于usb skeleton.c随Linux内核一起提供,我确信它将经过严格测试,并且完美无缺。我一定是做错了什么,作为设备驱动程序编程的新手,我无法意识到这个错误。在这件事上,如果有任何帮助,我将不胜感激

谢谢。

您可以使用

$ sudo chmod -R 777 /dev/skel0

是否需要使用仿古内核?否则你的练习就没有任何意义了。我正在学习LDD第三版(第13章-USB驱动程序)。我使用2.6.34是因为这本书引用了这个特定的版本。否则,使用古老内核背后没有特别的原因。