织梦CMS - 轻松建站从此开始!

罗索

ARM系统设计及其USB主机扩展方案(SL811)

落鹤生 发布于 2010-04-02 14:05 点击:次 
本文介绍了以ARM为核心微处理器的嵌入式系统的设计方法,以及USB主机控制芯片在ARM系统中的扩展方案,在此硬件平台的基础上,对ucLinux操作系统的移植和应用进行说明,并探讨了USB主机控制芯片驱动程序的设计。
TAG:

摘要:本文介绍了以ARM为核心微处理器的嵌入式系统的设计方法,以及USB主机控制芯片在ARM系统中的扩展方案,在此硬件平台的基础上,对ucLinux操作系统的移植和应用进行说明,并探讨了USB主机控制芯片驱动程序的设计。

关键词:ARM; USB主机; ucLinux; USB驱动程序
通用串行总线 (Universal Serial Bus,即USB)是一种目前广泛应用的计算机外围串行通信标准,但是,无论是采用USB1.1还是采用支持高速数据传输的USB2.0所设计的USB系统,都需要以计算机为主机控制数据的传输,而两个设备之间则无法直接进行USB传输,这就大大限制了USB在这些嵌入式设备中的应用。为此,USB OTG应运而生,它规范定义了双功能设备,这种设备既具有USB主机的功能,又具有USB外设的功能,这样就可以在诸多的嵌入式设备中使用USB主机的功能,大大方便了设备间的互连[1]
ARM(Advanced RISC Machine)既是一类微处理器的通称,也是设计这种处理器内核的公司的名字。作为一种低功耗、高性能的32位嵌入式微处理器,现在已经被广泛应用在各个领域中,但现在很多以ARM为内核的嵌入式设备都只具有USB外设的功能。为了在嵌入式设备中使用USB主机的功能,必须给ARM系统外扩一片USB主机控制器芯片。有些ARM芯片的生产厂商也在以ARM为内核的微处理器中集成了USB主机控制器,但是,更多的ARM处理器是不带USB功能的,外部扩展USB控制芯片的方式使选择微处理器的空间更加广阔。
1 系统总体设计方案
系统的主要功能是在以ARM为核心的嵌入式系统中实现USB的主机控制能力,以便在没有计算机介入的情况下对USB设备进行直接的控制及读写操作。如图1所示,系统主要由ARM7微处理器、FLASH、SDRAM、USB主机控制芯片和串口组成。ARM处理器选用的是三星公司的S3C4510B,这是一款基于ARM7内核的微处理器,具有低功耗、高性能的特点 [2][3]。FLASH用来存放ucLinux操作系统和一些十分重要的数据,SDRAM则是操作系统和应用程序的运行空间、数据及堆栈区。USB主机控制芯片选用的是Cypress公司的SL811HS,这是一款双功能的控制芯片,既可以用来做主机又可以做外设,系统中主要使用了它作为主机控制器的功能[4]
2 硬件电路设计
21 FLASH存储器电路
Flash存储器是一种可在系统进行电擦写,掉电后信息不丢失的存储器,在嵌入式系统中广泛应用。它在系统中通常用于存放程序代码、常量表、以及一些在系统掉电后需要保存的用户数据等。常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。系统中选用一片16位的Flash存储器AM29LV160B,单片存储容量2MB,用于存放操作系统和程序代码,系统上电或复位后从此获得第一条指令并开始执行,因此,应将Flash存储器配置到ROM/SRAM/FALSH BANK0,即将S3C4510B的nRCS<0>接到其片选引脚CE#端。将S3C4510B的B0SIZE[1:0]置为‘10’,选择ROM/SRAM/FALSH Bank0为16位工作方式。
22 SDRAM 电路
与Flash存储器相比,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,因此,它在系统中主要用作程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址即FLASH的0x0处读取启动代码,在完成系统的初始化后,程序代码将被调入SDRAM中运行以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都存放在其中。系统中选用HY57V641620,它的存储容量为8MB,工作电压为3.3V,16位数据宽度。根据系统需求,可以构建16位或32位的SDRAM存储系统,但为了充分发挥32位CPU的数据处理能力,本系统采用32位的SDRAM存储系统。选用两片HY57V641620并联构建32位的SDRAM存储系统。
23 串口电路
串口的主要作用是向计算机传输信息,这些信息可以在计算机的超级终端上显示,以便于调试程序时监测程序的内部变量值;在ucLinux操作系统运行时,串口将用来显示它的启动信息和运行状态,向操作系统发送命令对其进行控制也需要通过串口来完成。
24 JTAG调试接口
JTAG接口主要是用来实现芯片的嵌入式调试及在系统编程的功能,如对Flash器件进行编程等。ARM公司的集成开发环境ADS可以通过JTAG下载线或仿真器和系统板上的JTAG接口相连,通过JTAG接口把在ADS中编译好的程序下载到系统板上以进行调试。
25 USB主机控制器SL811HS
由于S3C4510B本身不带USB控制电路逻辑模块,所以必须外扩一片USB控制芯片以实现USB传输。系统中使用的SL811HS主要有以下几点特性:
l能工作在两种模式下——主模式或从模式,可以通过硬件或者软件进行控制。
l符合USB1.1标准。
l8位双向数据总线,采用I/O端口传输方式,在从模式下还支持DMA方式。
如图2所示,它主要由CPU接口、中断控制、主/从模式控制、USB SIE、时钟模块、SRAM及根集线器等模块组成。
它与S3C4510B的主要信号接口电路如图3所示:
SL811HS采用了数据线和地址线复用的方式,当A0为低且处于写状态时,ARM向SL811HS的片内地址指针寄存器写入地址值,当A0变为高时,则可对写入的地址中的数据进行读写。A0与ARM的ADDR2相连,因此对SL811HS写地址时应将ARM的地址总线低位置为0x0,而读写数据时应将其置为0x4。nCS和ARM的nECS0相连,即把SL811HS分配到ARM的外部I/O口0。
3 系统软件
31 ucLinux操作系统
为了降低硬件成本及运行功耗,有一类CPU在设计中取消了内存管理单元MMU,ucLinux就是专门针对这类CPU而设计的,它主要由以下几个部分构成:Boot Loader、内核初始化、系统调用函数/捕获函数、设备驱动和文件系统。
其中Boot Loader被用来初始化系统板上的硬件资源,可见,这部分代码是硬件相关的,必须根据系统板上不同的硬件资源进行相应的配置。ucLinux源代码中针对S3C4510B的片内特殊功能寄存器以及其他相关硬件信息的定义位于linux-2.4.x\include\asm-armnommu\arch-snds100\hardware.h中,而对这些硬件进行初始化的代码则位于linux-2.4.x\arch\armnommu\boot\compressed\head.S中,通过对这两个文件进行适当的修改,即可使ucLinux适合于不同的系统板。本系统中主要是更改了FLASH和SDRAM的容量及数据宽度,开启了外部I/O口0并设定为8位数据宽度以用来配置SL811HS,并把它的基地址设定为0x01400000。
完成对源代码的修改之后就可以进行内核的编译。编译是在装有Linux及所需的交叉编译工具链的计算机上来进行的,编译生成的image.ram可以下载到SDRAM中直接运行,image.rom可以烧写到FLASH中,系统上电或重启后,将从FLASH的0x0地址处开始执行,对硬件资源进行初始化后进入ucLinux。
3.2USB驱动程序
从Linux2.4内核以后,Linux的设备驱动中加入了对USB的支持,ucLinux也秉承了这一特点。ucLinux中的USB驱动程序由主机控制器驱动程序(HCD)、USB核心驱动程序(USBD)、USB设备驱动程序(包括集线器驱动程序)3个部分组成。由于USB主机控制器主要有OHCI和UHCI两大标准,所以ucLinux分别为符合这两种标准的主机控制器提供了相应的驱动程序。但是SL811HS是为嵌入式系统设计的,它不符合主要是为计算机而制定的OHCI和UHCI标准,因此,必须为它提供专门的驱动程序。
ucLinux中内置了Cypress公司为自己的SL811HS编写的Linux下的驱动程序,但这个驱动是为StrongArm SA1100而编写的,而SA1100上可以运行Linux而不能运行ucLinux,因此这个驱动程序并不适合ucLinux,在编译中无法通过。因此,本系统没有使用Cypress提供的代码,而选择自己编写代码。
SL811HS驱动程序的总体结构如图4所示,最底层是其寄存器和数据缓冲区的读写函数,供上层的函数调用。通过对SL811HS的寄存器及数据缓冲区的一系列读写操作,可以实现进行USB传输所需要的设置事务、输入事务和输出事务[5]。USB的四种传输方式,控制传输、中断传输、批量传输和同步传输就是由上述三种事务所构成。有了这些底层的函数之后,就可以对SL811HS进行初始化,然后对设备进行枚举以获取该设备的一系列描述符,最后就可以配置设备并实现各种传输协议。
文中讲述了以ARM为核心微处理器的USB主机控制系统的一般设计方法,并对其上运行的操作系统及驱动程序做出初步分析。ARM在嵌入式系统中现在已经取得了广泛的应用,而USB设备端口在嵌入式系统中也是十分普遍。随着USB OTG的推出,必将有越来越多的外设具有USB主机端的功能,实现外设之间直接的数据传输。
参考文献
[1] 马伟. 计算机USB系统原理及其主/从机设计. 北京航空航天大学出版社.2004
[2] S3C4510B User Manual. Samsung Electronics.
[3 ] 李驹光 聂雪媛等. ARM应用系统开发详解. 清华大学出版社. 2003
[4] SL811HS Embedded USB Host/Slave Controller Data Sheet. Cypress Semiconductor Corporation.2002
[5] SL811HS/SL811HST Application Notes. Cypress Semiconductor Corporation.2002
(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201004/8977.html]
本文出处:网络博客 作者:秩名
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容