免费注册 查看新帖 |

Chinaunix

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

嵌入式设备LINUX USB slave驱动 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-25 19:06 |只看该作者 |倒序浏览

LINUX USB slave 驱动介绍
[原创]
http://blob.csdn.net/SuperKris
      MSN:
li_ji_qun@163.com

  • 目的: 本文介绍了LINUX下USB的驱动(slave端)。host端就是PC了, 只考虑了windows,如果不加特别说明,         本文说的USB 驱动都是指Slave驱动



  • 在kernel 2.4版本中,嵌入式USB驱动是在kernel/arch/arm目录下的ep0.c  ep**.c, 在调试USB驱动的时候比较难,主要是如果在中断了加太多的printk, 会影响USB的时序,导致枚举就失败或不停地USB reset。
  • 在kernel 2.6版本中,USB的驱动改为了gadget接口,在/kernel/drivers/usb/gadget目录下,有一系列的文件,这些文件都是USB的驱动,其中serial.c是bulk驱动或CDC ACM驱动, 运行make menuconfig配置好所有的USB功能后,make modules,则在gadget目录下有一些g_serial.ko,  g_enther.ko, g_rnds.ko, g_file_storage.ko, g_gadget.ko. 其中g_serial.ko运行的时候有个参数是use_acm, 若为0则是普通的USB bulk驱动,最好修改serial.c文件,改为不要和tty关联,这时候windows端用USB bulk驱动,在DDK下有源代码,编译一下就可以了。如果不`想写windows端的驱动,可以把use_acm置为1, host端用windows自带的usbser.sys驱动,即USB转串口驱动,有时候在 c:/windows/driver/dllcach目录下,可以用expand把它解出来,具体参考/kernel/document.  在windows端需写个inf文件, 在inf文件里可以把USB转为一个MODEM, 这样Windows就可以拿它来拨号上网了,当然在小机端要和GPRS模组通讯,模组的初始化AT命令可以写在INF文件里。在windows的资源管理中是看不见串口的,只能看到modem (comX), 在超级终端中打不开这个串口,但是在secureCRT中是可以访问这个串口的。如果想虚拟出真正的串口,可以修改INF文件,把它虚拟出真正的串口,想添加MODEM的时候可以选择添加标准MODEM,模组的初始化AT命令可以写在MODEM的属性-->初始化命令中,比如ATD*99***1#
  • g_file_storage.ko是U盘的驱动,比如把SD卡当U盘,insmod g_file_storage.ko file=/mnt/mmc luns=1,若有3个分区可以当U盘,则luns=3. 注意busybox中没有mkdosfs来格式化FAT文件系统,需要自己编译修改mkdosfs的源代码。
  • g_enter.ko是把USB虚拟出一个网卡,在windows端用usblan.sys就可以构成直接对接的网络了。
  • g_rnds.ko只在XP下有windows端的驱动,windows 2000下要字迹开发,可以到微软的网站上查RNDS.其中可以拿RNDS来调试程序
  • 不论用USB转串口还是USB网卡来配合GDB调试程序,都比tty串口调试快多了




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25111/showart_190397.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP