阅读:2326回复:12
USB主机的驱动程序问题
各位大侠,我现在要通过某个单片机来读取U盘中的文件。
我要问的是,我是不是开发这个USB外设的驱动程序呀,或是这个开发过程是如何能告诉一下吗?真诚求助 |
|
沙发#
发布于:2004-11-11 08:46
你这个操作麻烦一点,你需要搭建你的单片机usb接口,而且usb接口要作为主机模式,所以你应该选择可作为usb主控设备的芯片,如飞利浦的isp1160,
|
|
板凳#
发布于:2004-11-11 09:09
是呀,关于这方面的资料我也看了一些,那再具体一点呢?我是说从硬件设计到软件代码的开发方面我还要做那些工作呢?比如说,USB系统层中,主机控制器驱动和USB驱动是不是都自己亲自开发呀,如果是的话,那用C可不可以呀?不过我听说在开发驱动程序是不是还要用特殊的工具呀?
还请这位大侠费心了!!! |
|
地板#
发布于:2004-11-11 10:08
不会吧,这么人看也不回一下,没有顶只有自己顶了。大家帮个忙嘛!!!!!
|
|
地下室#
发布于:2004-11-11 10:34
传统意义的USB开发,仅仅是对USB外设的开发,USB底层驱动程序和USB主控制器驱动程序都由Windows等操作系统提供,有关这些驱动程序的细节过程都蒙着一层神秘的面纱。所以,要设计USB 主机,就须设计这两部分驱动程序,Windows源码不公开,这些细节资料就无从得到。
因此,设计就要遵循USB主机的协议规范。可以阅览参考文献。 具体的设计就要包括固件Firmware和硬件两大部分。 |
|
5楼#
发布于:2004-11-11 13:20
你如果编写固件的话,那就看你单片机用的什么语言拉,因为你不与pc机通讯,所以设计不到其他的驱动工具,当然,usb所有固件都需要你自己写,不过可以参考网上的资料,我记得就在这几天的帖子里面有一篇可以读写u盘的资料,你也可以参考以下
|
|
6楼#
发布于:2004-11-11 15:36
你说的很对,不过关于用到的芯片的选型比较困难呀!你有合适的能给介绍一下吗?
另外驱动程序的开发是不是必须用wmd才行呀? |
|
7楼#
发布于: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 |
|
8楼#
发布于:2004-11-12 08:45
好文章
|
|
9楼#
发布于:2004-11-12 14:28
我现在要做的是一个比较简单的usb主机系统,只要求能与U盘通信就行,也不要界面。
另外硬件的选型各位能指点一下吗?主要是便宜点。 |
|
10楼#
发布于:2004-11-12 14:34
另外那位大侠有USB驱动程序代码的,请指教
急呀! |
|
11楼#
发布于:2004-11-13 10:30
sl811 demo
不记得什么时候在网上下的了。看看有用不? |
|
|
12楼#
发布于:2004-11-14 09:38
这两天看了好多的书,总算是有点意思了。不过有事还得向大家请教呀!!
多谢大佬了!! |
|