usb驱动问题,虚拟机运行成功,另一台机器上失败.
小弟我目前正在做一个usb驱动相关的项目,首先在我的个人电脑上通过虚拟机VMWare安装了一个Fedora 14系统,
然后在这个环境下进行开发,编译,生成了一个mydrv.ko驱动模块文件,最后通过测试软件能成功的使用该驱动模块
和usb硬件设备进行通信.
但是把该驱动复制到另外一台机器上,该电脑上也安装的是Fedora 14系统,不过只是最小化安装,
没有装开发环境,加载驱动成功,然后通过测试软件进行usb通信,一运行,驱动就报错,
具体的错误出现在主机往usb设备写数据, 调用 usb_submit_urb 函数时失败,返回的错误号是:-22.
开发环境虚拟机的内核是: 2.6.35.6-45.fc14.i686.PAE mod_unload 686,安装了开发环境等。
另一台测试主机器的内核是:2.6.35.6-45.fc14.i686.mod_unload 686,只是最小化安装了linux,没有安装开发环境。
能否请各位兄弟帮忙看看问题出在哪里,谢谢了!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我自己顶一下.
查找了一下资料,-22的错误号表示是: EINVAL,有三种可能性会引发该错误:
a) Invalid transfer type specified (or not supported)
b) Invalid interrupt interval (0<n<256)
c) More than one interrupt packet requested
今天再测试了一下,在我的电脑上安装了Fedora14系统(不是虚拟机),是按照选择开发环境大项来安装的。
测试驱动,一切正常.这个的内核版本是:2.6.35.6-45.fc14.i686.PAE
然后,再使用另一块主板,也安装了Fedora14系统,不同之处在于,安装的时候,没有安装开发环境。
测试,现在的内核版本是:2.6.35.6-45.fc14.i686,不是PAE版本,PAE是抗展物理内存的意思.
有错误发生,依然会出现调用 usb_submit_urb 函数时失败,返回的错误号是:-22.
看来难道在带PAE版本的内核上编译的驱动模块在不是PAE版本的内核模块中会不正常?不知道我的这个推测有道理没有?烦请各位指点下。