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

发布者:zdf1966最新更新时间:2012-03-03 来源: 21IC关键字:ARM  LINUX系统  嵌入式  USB主机 手机看文章 扫描二维码
随时随地手机看文章

1 引言

通用串行总线(Universal Serial Bus,即USB)是一种新型的高速串行总线,作为一种快速、灵活的总线接口,已经在电子产品中广泛应用。同时人们对USB的期望也越来越高,希望USB能应用在各种计算机领域中。但是,由于USB通信模型是一种Host/Slave主从式结构,经由USB总线进行通信的双方必须有一方在通信控制中担当主机,而两个USB设备之间则无法直接进行基于USB的数据交换。这就大大限制了USB在嵌入式设备中的应用。

ARM( Advanced RISC Machine)作为一种低功耗、高性能的32位嵌入式微处理器,在中高端嵌入式设备开发中有着广泛的应用。有些ARM芯片的生产厂商在以ARM为内核的微处理器中集成了USB主机控制器,但是,更多的ARM处理器是不带USB主机功能的。解决这一问题的方法就是在需要使用USB设备的嵌入式系统中外扩一片USB主机控制器芯片,使之具有与USB设备进行数据传输的能力。本设计考虑设计一种USB主、从机一体化的外部扩展模块,通过简单地改变跳线,使得ARM核心的嵌入式设备既可作为USB主机,又可以作为USB从机。

2 总体设计

由于目前USB从机的硬件及软件方面的开发已经比较成熟,可以直接使用现有的资源,所以本设计主要讨论USB主机功能的实现,目标任务是ARM核心板能够读写外接USB设备,这里选择最常用的U盘,实现读、写U盘数据。

系统分为ARM核心板和SL811HST扩展板两大部分。核心板是一个由ARM7微处理器、FLASH、SDRAM 、JTAG口和串口组成的最小系统。ARM处理器选用的是三星公司的S3C44B0X,这是一款基于ARM7TDMI内核的微处理器,具有低功耗、高性能的特点。Flash用来存放ucLinux操作系统和一些十分重要的数据,SDRAM则是操作系统和应用程序的运行空间、数据及堆栈区,JTAG口和串口用于下载和调试。扩展板主要由USB主控芯片及其外围电路和USB主、从接口构成。USB主控制芯片选用的是Cypress公司的SL811HST,这是一款双功能的控制芯片,通过设置开关既可以用来做主机又可以做从机。USB接口分为主机接口和从机接口,与主控芯片功能配套。

3 硬件电路

Flash存储器是一种可在系统进行电擦写,掉电后信息不丢失的存储器。常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。系统中选用一片16位的Flash存储器SST39VF1601,单片存储容量2M,用于存放操作系统和程序代码,系统上电或复位后从此获得第一条指令并开始执行,因此,应将Flash存储器配置到BANK0,即将S3C44B0X的nGCS<0>接到其片选引脚CE#端;将S3C44B0X的OM[1:0]置为10,选择BANK0为16位工作方式。与Flash存储器不同,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,因此,它在系统中主要用作程序的运行空间、数据及堆栈区,系统及用户堆栈、运行数据也都存放在其中。系统中选用一片HY57V641620HG,它的存储容量为8M,工作电压为3.3V,16位数据宽度。1620的CS与S3C44B0X的nGCS6连接。

JTAG接口主要是用来实现芯片的嵌入式调试及在系统编程的功能,如对Flash器件进行编程等。串口的主要作用是向计算机传输信息,这些信息可以在计算机的超级终端上显示,以便于调试程序时监测程序的内部变量值;在ucLinux操作系统运行时,串口将用来显示它的启动信息和运行状态,向操作系统发送命令对其进行控制也需要通过串口来完成。ARM核心板的硬件组成如图1所示:

图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是数据缓冲区。[page]

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系统内核,编译移植到嵌入式系统,系统启动后将自动加载驱动。

编译过程如下:
 

1:在ucLinux内核的USB驱动目录中添加如下三个文件:s181lh-usb.c、sl8llh.h、s1811husb.h。;

2:编辑/uclinux-s2cev40/linux-2.4.x/drivers/usb/config.in文件。修改这个文件的内容加入对SL811HST的描述语句:

USB 设备驱动程序被编译进ucLinux 内核,包含在image.bin 文件中。在系统启动时,USB 设备驱动就自动执行了。

5 总结

本文作者创新点:巧妙利用ucLinux 内核模块,简化开发过程,节约成本。本设计以uclinux 嵌入式操作系统为平台,充分发挥了SL811HST 芯片的Host/Slave 两种模式的作用, 整套系统上电运行结果证明,本系统设计能够顺利的读写U 盘数据,并且达到USB1.1的全速。此系统价格低廉,实现简单有效。为嵌入式系统添加USB 主机接口,使得USB 能应用在没有PC 的领域中,真正实现USB 点对点的通讯。在需要野外大量采集记录数据的场合,如勘测,气象等领域,嵌入式USB 主机方便携带;在需要远距离传输数据的场合,在USB 设备上增加无线网卡,数据就可以实时传送,等等。

关键字:ARM  LINUX系统  嵌入式  USB主机 引用地址:ARM和LINUX系统下嵌入式USB主机的设计

上一篇:LTC2207在ARM与FPGA控制下的采集应用
下一篇:TI Stellaris MCU支持ARM微控制器软件接口标准

推荐阅读最新更新时间:2024-03-16 12:54

ARM汇编指令集1
(汇编)指令是CPU机器指令的助记符,经过编译过会得到一串0011组成的机器码,可以由CPU读取执行。 (汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。 两种不同风格的ARM指令 --ARM官方的ARM汇编风格:指令一般用大写,Windows中的IDE开发环境(如ADS、MDK)常用。如:LDR R0, --GNU风格的ARM汇编:指令一般用小写字母、Linux中常用。如:ldr r0, ARM 汇编的特点1:LDR/STR架构 --ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容载入CPU中通用寄存器
[单片机]
嵌入式WEB服务器中TCP/IP协议栈的设计与实现
随着因特网的迅速发展,Web应用越来越广泛。由于Web技术的开放性和独立平台特性,大大降低了软件系统和通信系统的设计、维护工作量,节省了人员培训费用,提高了现场测试和控制设备的管理水平。而嵌入式Web服务器将Web服务器引入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,Web技术为核心的基于互联网的网络测试和控制设备,有着一般Web服务器所不具有优势。本文就嵌入式Web服务器在通信协议的选择方面做了具体的研究。 1 嵌入式Web服务器的结构分析 嵌入式Web服务器运行的目标系统大多是各类专用设备,内存资源和存储器资源非常有限,它通常作为一种监控、管理
[单片机]
<font color='red'>嵌入式</font>WEB服务器中TCP/IP协议栈的设计与实现
利用ARM MCU设计激光电源控制系统
   0 引言   随着激光行业的飞速发展,激光器已广泛应用于工业加工领域,如激光切割、激光打标、激光调阻、激光热处理等,除此之外还被作为诊疗设备应用于医疗领域。   激光焊接是以聚焦的激光束作为能源轰击焊件所产生的热量进行焊接的方法,是激光材料加工技术应用的重要方面之一。   基于ARM的数字化控制系统能够有效解决激光器的准确、稳定和可靠性问题,数字化、智能化是激光器的必然发展方向。使用ARM对激光电源进行功能扩展控制,能有效提高电源的性价比,简化激光电源的硬件结构,增强整机的自动化程度,为整机的功能扩展提供了有利条件。本文重点针对激光焊接应用中的激光电源控制系统进行功能扩展设计,利用ARM控制激光电源的系统设置,包括开关
[单片机]
利用<font color='red'>ARM</font> MCU设计激光电源控制系统
ZLG体外诊断设备嵌入式解决方案介绍
摘要:ZLG深耕嵌入式二十年,为诸多医疗企业用户提供嵌入式解决方案,包括基因扩增仪、荧光免疫分析仪、特定蛋白分析仪等常用医疗设备,本篇文章为大家介绍ZLG在体外诊断设备上提供的各类嵌入式解决方案。 病毒试剂盒的研制离不开基因扩增仪(PCR)、荧光分析仪等医疗仪器的分析,试剂研制成功之后,需要对疑似病患的鼻咽拭纸、痰液、肺泡灌洗液3种样本进行检测。而试剂盒的检测同样需要相应的仪器配套工作,其中包括特定蛋白分析仪、手持式荧光分析等医疗设备,在大范围的检测群体需求下会对此类设备有小型化需求,最优情况下是实现手持式分析,实现即时检验(PCOT)。 ZLG成熟的应用方案已在此类设备仪器中广泛应用。本文将为大家介绍ZLG在设备仪器中的
[医疗电子]
ZLG体外诊断设备<font color='red'>嵌入式</font>解决方案介绍
ARM处理器的运行模式和ARM寄存器
一、ARM处理器共有7种运行模式 处理器模式 描述 用户模式(User,usr) 正常程序执行的模式 快速中断模式(FIQ,fiq) 用于高速数据传输和通道处理 外部中断模式(IRQ,irq) 用于通常的中断处理 特权模式(Supervisor,sve) 供操作系统使用的一种保护模式 数据访问中止模式(Abort,abt) 用于虚拟存储及存储保护 未定义指令中止模式(Undefined,und) 用于支持通过软件仿真硬件的协处理器 系统模式(System,sys) 用于运行特权级的操作系统任务 usr是普通模式,其他六种是特权模式(Privileged Modes),在这些模式下,程序可以访问所有的系统资源,
[单片机]
<font color='red'>ARM</font>处理器的运行模式和<font color='red'>ARM</font>寄存器
英特尔回应CPU内核漏洞:AMD/ARM也中招、性能削弱不足虑
关于近日曝光的CPU严重安全漏洞,Intel终于打破了沉默。Intel官方回应称,他们和相关科技公司已经完全了解到了安全漏洞的工作机制,如果被恶意理用,有可能会造成信息数据泄露,但是绝没有修改、删除和导致系统崩溃的可能。 第二点,关于该漏洞仅仅是Intel x86-64处理器的一个设计BUG或者说缺点,Intel认为报道有误。他们指出AMD/ARM的服务器系统事实上也受到波及,大伙儿正紧密配合,研究出最彻底的应对之策。 第三点,所谓的打上补丁后性能损失30%~35%。Intel强调,性能问题是与工作负载强关联的,不能一概而论。事实上,就每个用户而言,不会有显著影响,而且(即便性能削弱)也会随时间减轻。 Intel强调,他们已经开
[嵌入式]
在Windows环境下调用动态库实现VXI嵌入式计算机间的数据传递
摘 要:本文介绍了调用VISA函数来实现动态链接库的设计,提出软件设计的整体框架和实现方案。动态链接库的设计包括三个部分:初始化通信环境、传送数据和事件回调函数的设计。通过这种方法,实现了在Windows环境下通过调用动态链接库完成同一个VXI机箱内安装在不同槽位的嵌入式计算机之间的数据传递。 关键词:VXI ;VISA函数;动态链接库 引言 在VXI系统中,控制器可以选用各种流行的控制机和操作系统。嵌入式控制机无疑是一种很好的选择。但在一些由VXI组成的大型、复杂系统中,往往一台计算机无法完成所有的任务,因此需要多台机器之间配合完成,各自负责处理部分任务,因此如何传递彼此间的实时性数据显得十分重要。本文介绍在一个VXI机箱插入
[应用]
80C186XL嵌入式系统中DRAM控制器的CPLD解决方案
    摘要: 介绍怎样在嵌入式CPU 80C186XL DRAM刷新控制单元的基础上,利用CPLD技术和80C196XL的时序特征设计一个低价格、功能完整的DRAM控制器的方法,并采用VHDL语言编程实现。     关键词: 刷新控制单元(RCU) DRAM控制器 状态机 CPLD VHDL语言 80C186XL16位嵌入式微处理器 是Intel公司在嵌入式微处理器市场的上导产品之一,已广泛应用于电脑终端、程控交换和工控等领域。在该嵌入式微处理器片内,集成有DRAM RCU单元,即DRAM刷新控制单元。RCU单元可以自动产生DRAM刷新总线周期,它工作于微处理器的增益模式下。经适当编程后
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved