3

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

http://lxr.free-electrons.com/source/drivers/usb/usb-skeleton.c?v=2.6.34

我在设备上写了 1 个 1024 字节的数据包,但令我惊讶的是,写入失败并出现Input/Output error

# 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 内核,我相信它会经过严格测试并且完美无缺。我一定是做错了什么,并且是设备驱动程序编程的新手,我无法意识到错误。我将不胜感激在这件事上的任何帮助。

谢谢你。

4

1 回答 1

0

您可以使用

$ sudo chmod -R 777 /dev/skel0
于 2019-05-19T20:09:50.727 回答