免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3451 | 回复: 5
打印 上一主题 下一主题

USB Driver和USB Serial Device之间的关联 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-28 15:33 |只看该作者 |倒序浏览
今天想在Linux下使用电信的3G上网卡,于是安装中兴的驱动。这里有篇参考文章:
http://forum.ubuntu.org.cn/viewtopic.php?f=116&t=213843

按里面说法,580驱动可以直接用于560。拿源代码做了一些修改,最后能在RHEL5上编译加载了,但系统中没有/dev/ttyUSB0。先做了个对比分析,结果发现插入时它主要是里面自带的存储卡上线生成/dev下的设备,没看到其它设备;而驱动的probe函数也没有被调用到。

我想驱动和设备关联,无外乎类似于PCI的(Vendor, Product)(没做过USB驱动)或驱动名称(以前做过一个嵌入式的HPI是这样的)对应吧。先查了一下(Vendor, Product):
Bus 001 Device 001: ID 0000:0000
Bus 001 Device 004: ID 03f0:0024 Hewlett-Packard
Bus 004 Device 001: ID 0000:0000
Bus 002 Device 002: ID 046d:c018 Logitech, Inc.
Bus 002 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 003 Device 006: ID 19d2:fff5
Bus 003 Device 001: ID 0000:0000

通过拔插入上网卡可以看出就是红色的项,而且它的iVendor刚好是代码中定义的zte_VENDOR_ID,0xfff5在代码中的zte_ids[]中不存在,不知道是不是电信专用的有些特别。但我加了一条:
   { USB_DEVICE_AND_INTERFACE_INFO(zte_VENDOR_ID, 0xfff5, 0xff, 0xff, 0xff) },

发现Probe函数还是不被调用(里面插了打印的;USB_DEVICE_AND_INTERFACE_INFO是我为了方便把新版本的宏直接抄过来了)。后来对了一下发现zte_driver中的name是zte而zte_1port_device.driver.name是zte1,但改为一致的还是不行。实在是搞不明白了,我注册的driver可以在/sys/bus/usb/drivers/zte中找到,但没显示它绑定的设备;而注册的设备现在还不知道怎么看。初始化很简单:
static int __init zte_init(void)
{
    int retval;
    retval = usb_serial_register(&zte_1port_device);
    if (retval)
        goto failed_1port_device_register;
    retval = usb_register(&zte_driver);
    if (retval)
        goto failed_driver_register;

    info(DRIVER_DESC ": " DRIVER_VERSION);

    return 0;

failed_driver_register:
    usb_serial_deregister (&zte_1port_device);
failed_1port_device_register:
    return retval;
}


info()的结果可以在dmesg输出中看到,应该说明两个注册都成功了。

[ 本帖最后由 Cyberman.Wu 于 2009-7-28 15:34 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-07-30 12:55 |只看该作者
踢一脚。难道没人知道?

论坛徽章:
0
3 [报告]
发表于 2009-07-30 13:06 |只看该作者
有源代码?我怎么没看到

论坛徽章:
0
4 [报告]
发表于 2009-07-30 15:08 |只看该作者

回复 #3 epegasus 的帖子

这个不是Linux自带的,所以看不到代码。附件是我修改之后的,我把它自带的预编译.ko全部删掉了,否则多占空间。

ZTE_driver_install_V2.0.tar.bz2

10.96 KB, 下载次数: 95

论坛徽章:
0
5 [报告]
发表于 2009-07-30 16:07 |只看该作者
那个zte_init是在哪个c文件中啊,我在2.6.29中没找到

论坛徽章:
0
6 [报告]
发表于 2009-07-30 18:35 |只看该作者

回复 #5 飞羽zhang 的帖子

我前面已经说过了,这个是中ZTE自己的驱动,没有集成在Linux里面,我上传的附件中有。这个是修改过的,基本上所有修改处我都加了注释。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP