首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM和LINUX系统下嵌入式USB主机的设计(2)

ARM和LINUX系统下嵌入式USB主机的设计(2)


图1 ARM 核心板的构成


Cypress公司的SL811HST芯片是一款嵌入式的USB主机/从机控制器,它的双功能端口既可作为USB主机又可作为从机来支持全速或低速的USB器件,能够与单片机、DSP和ARM等实现无缝接口。数据线为8位,只需要9根线用于系统的数据通讯,16个内部寄存器,可以对USBHost进行充分的控制。内部多达256字节的RAM,为USB传输建立了足够的缓冲区。它的主要优点有:通过其M/S引脚对主/从模式方便的进行选择;提供全速和低速2种USB总线速度方式;硬件自动产生帧起始包SOF和CRC5/16校验;片上集成了接口引擎(SIE)、单端口根Hub、USB收发器和256B的SRAM,其中0x00~0x0F共16个字节是寄存器区,其余的240B是数据缓冲区。


SL811HS只有一根地址线A0。A0=1用于设定偏移量,A0=0用于读写数据。读写数据应该首先指定偏移量,然后实现读取时序。A0与ARM的ADDR0相连。nCS和ARM的nGCS2相连,即把SL811HST分配到ARM的外部I/O口02。SL811HST与S3C44B0X的连接如图2所示:



图 2 SL811HST 与S3C44B0X 连接图


4 软件系统


本设计的软件系统是在Linux环境下编写调试运行的,前期工作为下载ucLinux内核包,打补丁包等。ucLinux是专门针对如ARM7这类无MMU的CPU而设计的,它主要由以下几个部分构成:BootLoader、内核初始化、系统调用函数/捕获函数、设备驱动和文件系统。其中BootLoader被用来初始化系统板上的硬件资源,必须根据系统板上不同的硬件资源进行相应的配置。本系统中主要是更改了FLASH和SDRAM的容量及数据宽度,开启了外部I/O口2并设定为8位数据宽度以用来配置SL811HST,并把它的基地址设定为0x012000000完成对源代码的修改之后就可以进行内核的编译。编译是在装有Linux及所需的交叉编译工具链的计算机上来进行的,编译生成的image.ram文件可以下载到SDRAM中直接运行,image.rom文件可以烧写到FLASH中,系统上电或重启后,将从FLASH的0x0地址处开始执行,对硬件资源进行初始化后进入ucLinux。


从Linux2.4内核以后,Linux的设备驱动中加入了对USB的支持,ucLinux也秉承了这一特点。本设计采用内核编译的方式加载USB驱动,将驱动程序的源代码加进ucLinux系统内核,编译移植到嵌入式系统,系统启动后将自动加载驱动。

继承事业,薪火相传
返回列表