sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2327回复:12

USB主机的驱动程序问题

楼主#
更多 发布于:2004-11-10 17:04
各位大侠,我现在要通过某个单片机来读取U盘中的文件。
我要问的是,我是不是开发这个USB外设的驱动程序呀,或是这个开发过程是如何能告诉一下吗?真诚求助
sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-14 09:38
这两天看了好多的书,总算是有点意思了。不过有事还得向大家请教呀!!
  多谢大佬了!!
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-11-13 10:30
sl811 demo
不记得什么时候在网上下的了。看看有用不?
附件名称/大小 下载次数 最后更新
2004-11-13_Emb_Host.rar (79KB)  13
sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-12 14:34
另外那位大侠有USB驱动程序代码的,请指教
急呀!
sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-12 14:28
我现在要做的是一个比较简单的usb主机系统,只要求能与U盘通信就行,也不要界面。
另外硬件的选型各位能指点一下吗?主要是便宜点。
lake
驱动小牛
驱动小牛
  • 注册日期2001-09-04
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-12 08:45
好文章
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-11-12 08:17
用单片机的话不用wmd
给你篇文章,有没有用处自己感觉吧
//------------------------------------------------------
USB主机(HOST)的介绍与开发过程

作者:     Truly      Email: box00@21cn.com       QQ:21298058
发表于  http://www.embedzone.com/bbs/index.asp 嵌入式社区
转载请保留此说明文字,并注明出处

  项目名称:USB HOST(主机)与OTG(ON THE GO移动互联)功能的实现
  项目要求:实现USB HOST功能,并实现相应的设备类的驱动与应用,第一阶段为实现海量存储设备类(Mass Storage Class)在系统上的应用。以后将增加其它的类设备的驱动与功能,如HID设备、USB图象设备,USB音频设备……

  本项目将实现USB主机(HOST)功能与USB OTG功能,应用于需要与USB设备连接的场合。由于USB规范中严格遵从主、从关系,或者说是主机与设备的分类,一切的数据传输与命令的传送都是由主机发现与控制的,设备间不能直接通信与交换数据,如USB接口的数码相机或者是U盘,就不能直接通过打印机打印出它所存储的图片与文档,而USB OTG规范的出现,改变了这一限制,从而使得设备之间的直接连接成为了可能。
  实现设备间的直接连接,有两种方法,一种就是最新的OTG方式的实现。还有就是传统的主、从结构的连接,而芯片技术的发展与厂商努力的结果,在OTG规范之前,也有可以实现这个要求的双规范的USB主控/设备芯片,如CYPRESS公司的SL811HS、CY7C637300,PHILIPS ISP1161A1等,这些芯片是面向嵌入式系统的应用而优化设计的,可以很方便地通过通用的MCU和CPU之间的控制通信实现用户所需要的主机/设备功能。此外,还有已经把USB主机控制设计到了MCU里面的,如三星的ARM内核的S3C2410X就集成了两个USB HOST,控制器还可以在软件的控制下实现主机与设备模式的切换。USB的主机通过主机控制器与USB设备进行数据传输。USB主机一般具有以下的功能:1.检测USB设备的插拔。2.管理USB主机与USB设备之间的控制流。3.管理USB主机与设备间的数据流。4.收集USB主机的状态。USB主机包括两个部分:主控器硬件和相应的功能软件。硬件提供了主机的物理接口;主机上的系统软件管理设备与主机上的该设备软件之间的交互,包括设备的枚举与配置,总线管理与带宽、电流的分配,各种所需的数据传输过程的管理,如有时间要求的中断传输,同步(ISO)传输,控制传输,也有需要大量带宽,但时间要求不严格的块(BULK)传输。
  如上所述,将有若干实现任务要求的硬件方案,一是直接采用已经内嵌了USB HOST的MCU。二是采用传统成熟的主机功能的芯片与高性能CPU或MCU的搭配。三是采用OTG功能的芯片加上高性能的CPU或MCU。第一方案的系统集成度与可靠性、性能都相对较高,但价格也相对较高,适合于高端应用。第二方案在性能方面没有太大的损失,可以满足要求,但系统的集成度相对较低,价格也适中,适合一般的应用。而第三方案与第二方案相比,功能性能方面相近,但系统有一定的局限性,而且价格方面也没有优势,除非用户有特别要求,不作为推荐方案。要满足USB HOST功能,主机方面则最好有25MIPS以上的处理能力,才能保证USB全速通信,包括标准的四种传输方式(控制、中断、块、同步传输)的支持,以满足不同设备的带宽要求。因此对CPU也有一定的性能要求。而在嵌入式的硬件平台中,ARM结构的各种衍生MCU、CPU的性能与功能可以满足设计的要求。所以在本方案中,采用基于ARM内核的高性能多功能与高可扩展性的MCU。这其中因为三星的各类ARM的推广普及工作上的努力,推出了可以满足用户不同要求的有特色的产品线,加上其较高的性能-价格比的优势,还有就是市场上货源方面,和用户的认可和支持的程度,都显得三星的更适合于本方案。对于第一方案,可以采用三星的S3C2410,此为集成了USB HOST等众多功能,具有很高的扩展性与性能的产品,其32位ARM9内核,具有32KB的CACHE、最高203MHz的运行频率不单可以满足USB HOST功能,还可以满足用户对多媒体、网络、控制方面的要求。对于第二方案,可以采用三星的ARM7内核的S3C44B0X(最高66MHz)或者S3C4510(50MHz)的MCU,外加CYPRESS的SL811HS或者PHILIPS的ISP1161来实现,另外,这个方案也同样可以使用S3C2410外接USB HOST功能的芯片的方法实现,在开发的实验与调试过程中可以共用一套开发板,对于开发过程这是一个好的选择。
  为了实现USB主机功能的统一,提高系统的可靠性与可移植性,上游芯片生产厂家在确定USB标准的同时,也确定了相应的主机规范。现在用得比较广泛的有三种,其中的用于USB2.0高速设备的EHCI(Enhanced Host Control Interface增强主机控制接口)规范是INTEL用于USB2.0高速主机的,不是我们今天要讨论的。而同是INTEL推出的UHCI(Universal Host Control Interface 通用主机)与前Compaq 、Microsoft等推出的OHCI(Open Host Control Interface开放主机控制接口)可用于全速与低速USB系统中,硬件的要求与系统性能、软件复杂的要求相对较低,也能够满足大部分的具有USB接口嵌入式系统的要求。因此更具有实现开发意义,也是今天我们要讨论的。而在UHCI与OHCI的对比中,UHCI对硬件的要求相对较少,但对系统的处理能力与软件的开发要求相对要高(PC机就较多地采用了UHCI);OHCI则把较多的功能定义在硬件中,软件需要处理的内容就相对容易,对系统的处理能力和系统资源的要求就低。因此,在嵌入式的USB HOST功能中,较多地选用了遵循OHCI的规范的硬件,从而简化了系统的设计。
  USB是一个完全规范化与标准化的接口,要实现与各个不同厂家,不同设备间的可靠通信,就要完全遵守USB的相关规范与标准。这其中包含了硬件的标准和软件的标准、协议。另一方面,相关规范的完善也降低了USB开发中的难度,只要按照规范实现所需要的功能,就能得到其它标准的支持。在实现本任务中,我们需要完成的功能主要有USB主机芯片的驱动,USB主机功能的管理、USB设备的配置与管理,主机与设备间数据通信的发起与控制,用户接口的实现。为了可靠地完成设计的要求、实现设计的开发性与可扩展性,加快开发的进度,引入一个开放的操作系统是必需的,而当前的适合于嵌入式应用的操作系统,发展成熟与得到广泛支持的有LINUX、Windows CE、UCOS II、VxWORK,后三种系统都是有版权的系统,而经过剪裁优化的LINUX操作系统则是源码开放的系统,不但得到了用户的推崇与喜爱,提供了广泛的发展与扶持,也得到了众多厂家的推荐、并提供了相应的开发资源,而LINUX系统本身也已经提供了USB的协议栈的支持与众多的类设备的驱动程序,可以直接实现对设备的驱动和用户接口,为项目的实现提供了便捷。因此本方案也将采用LINUX系统作为操作系统,并采用相应的设备驱动实现设备功能。这样我们所需要的就只要实现USB控制器和少部分自定义的非类设备的驱动(而SL811HS已经提供了LIUNX下的主机控制驱动程序和USBDI的实现代码,更方便了设计过程),从而大大降低了方案实现的难度并提高了方案的可用程度。
  综合上面所述,本方案的首要目标为实现基于ARM嵌入式硬件平台嵌入式LIUNX操作系统的USB HOST功能,对于应开发的要求,可以分别高端与一般应用对应两个方案进行,也可以只使用S3C2410外加SL811HS或ISP1161的方式进行开发与调试。

设计要求:
硬件:    基于ARM的开发板,选择一:S3C2410开发板;选择二:S3C44B0X
    芯片:SL811HS、ISP1161A1
软件:    LINUX系统支持
网络:    INTERNET支持

人员安排:项目负责:
     相关的协助人员

技术要求:1.ARM硬件与底层软件开发与调试,
     2.USB相关协议,USB硬件与驱动程序开发与调试,
     3.LINUX相关知识、LIUNX下驱动程序与应用程序开发与调试
    
开发周期:约13工作周
时间安排:选型准备、器件与工具购买,软件与资料的收集与准备    (1周)
     开发工具与设备调试、资料学习,实验            (2周)
     功能实现与调整、调试                    (8周)
     用户测试程序编写与调试验收                (2周)

附录:
参考资料:
《三星S3C2410数据手册》
《ARM编程》
《USB OHCI(USB开放主机控制接口协议)》
《USB USBDI(USB设备接口协议)》
《LINUX驱动程序开发》
《LINUX应用程序开发》
参考网址:
http://www.usb.org/developers
http://www.linux.org
http://www.uclinux.org
http://www.semiconductors.philips.com/catalog/282/41740/31580/index.html
http://www.cypress.com/products/family.cfm?objectid=A6B8BB1A-BDB2-4175-8B47D1F27AEDBD27&foid=A6B8BB1A-BDB2-4175-8B47D1F27AEDBD27&familyName=USB%20Embedded%20Hosts


sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-11 15:36
你说的很对,不过关于用到的芯片的选型比较困难呀!你有合适的能给介绍一下吗?
另外驱动程序的开发是不是必须用wmd才行呀?
lake
驱动小牛
驱动小牛
  • 注册日期2001-09-04
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-11 13:20
你如果编写固件的话,那就看你单片机用的什么语言拉,因为你不与pc机通讯,所以设计不到其他的驱动工具,当然,usb所有固件都需要你自己写,不过可以参考网上的资料,我记得就在这几天的帖子里面有一篇可以读写u盘的资料,你也可以参考以下
sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-11-11 10:34
传统意义的USB开发,仅仅是对USB外设的开发,USB底层驱动程序和USB主控制器驱动程序都由Windows等操作系统提供,有关这些驱动程序的细节过程都蒙着一层神秘的面纱。所以,要设计USB 主机,就须设计这两部分驱动程序,Windows源码不公开,这些细节资料就无从得到。
  因此,设计就要遵循USB主机的协议规范。可以阅览参考文献。
具体的设计就要包括固件Firmware和硬件两大部分。
sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-11-11 10:08
不会吧,这么人看也不回一下,没有顶只有自己顶了。大家帮个忙嘛!!!!!
sunfines
驱动牛犊
驱动牛犊
  • 注册日期2004-11-10
  • 最后登录2004-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-11-11 09:09
是呀,关于这方面的资料我也看了一些,那再具体一点呢?我是说从硬件设计到软件代码的开发方面我还要做那些工作呢?比如说,USB系统层中,主机控制器驱动和USB驱动是不是都自己亲自开发呀,如果是的话,那用C可不可以呀?不过我听说在开发驱动程序是不是还要用特殊的工具呀?
   还请这位大侠费心了!!!  
    
lake
驱动小牛
驱动小牛
  • 注册日期2001-09-04
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-11-11 08:46
你这个操作麻烦一点,你需要搭建你的单片机usb接口,而且usb接口要作为主机模式,所以你应该选择可作为usb主控设备的芯片,如飞利浦的isp1160,
游客

返回顶部