ARM大讲堂讲稿
ARM知识简介
一、什麽是ARM:
. ARM-Advanced RISC Machines其中(RISC的英文全称为Reducedln-struction-Set-Computer 精简指令集计算机),所以ARM翻成中文就是先进的精简指令集的计算机。我们熟悉的8051系列计算机(即我们常说的单片机)是属于传统的CISC类型的(Complex-Instruction-Set-Computer)的计算机。传统的CISC类型的计算机在结构上有其固有的缺点就是随着对计算机功能要求不断的增加,要不断地新增加新的指令。而要支持这些新增指令的功能计算机的结构要越来越复杂。然而,在CISC类型的的计算机指令集中的各种指令中,指令的使用频率却相差悬殊。大约有20%的指令会被反复使用,使用率要占到整个程序代码的80%,而余下的80%的指令却不经常使用,在整个程序代码中只占20%,显然,这种结构的资源浪费严重,是不合理的。RISC结构的计算机把着眼点放在了如何使计算机的结构更简单合理地提高到运算速度上,优先选用使用频率最高的简单指令,避免复杂指令。
使用单周期指令,便于流水线操作的执行。
大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,提高了指令的执行效率。
在相同的条件下,RISC结构的计算机的速度比传统的CISC类型的计算机速度要快2---5倍。
ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场。
下面的图片显示了ARM的随处可见:
基
属于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。
当然,和CISC架构相比较,尽管RISC架构有上述的优点,但决不能认为RISC架构就可以取代CISC架构,事实上,RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的
外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一。
二、为什麽要学ARM:
从20世纪80年代到现在单片机始终在8位机的档次上俳徊,16位单片机虽然也掀起过波浪,但始终没行成太大的气候。但是互联网的快速发展、多媒体、视频、音频信息处理技术对计算机性能要求越来越高、对计算机运算速度要求越来越快。ARM系统的工作频率比51系列单片机有了大幅度的提高。
ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟频率为100MHz-233MHz,ARM10最高可以达到700MHz。不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为ARM核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。
人类社会对机器设备的低能耗、低碳的要求越来越严格。集成电路技术的发展要求将一个完整产品的各功能集成在一片集成电路的芯片中,可以包括的电路有CPU、存储器、硬件加速元件(AV处理器、浮点协处理器、DSP等)、通用I/O(GPIO)、UART接口和模数混合电路(放大器、比教器、A/D、D/A、射频电路、锁相环)、甚至延伸到传感器、微机电、和微光电元件,这种SoC(片上系统芯片)不仅大大降低了成本,缩小产品的体积、更重
要的是大大提高了产品的可靠性。以上这些领域的使用8051系列16位机或者80196系列16位机就很难胜任了。
还有一个对我们在座的年轻朋友们来说也是一个重要的原因,就是开发和学习的经济成本低,我们玩得起。而学会了以后,掌握了这项技术以后,你在社会上的技术层次高,技术创收和就业的门路广。
三、ARM难学吗
要回答这个问题,我的答案是,也难,也不难。ARM处理器的结构要比8051系列的处理器的结构确实要复杂一些。学习起来要比8051单片机难一些。但是从应用的角度来说,只要有了51系列的基础,再掌握了一点C语言的知识,学习ARM并不是很困难的事。因为我们对ARM处理器的学习只是学习它的使用,并不要全部学懂它复杂的内部软硬件的结构和原理。从应用的角度来看,要学会和掌握ARM处理器的基本内容和51系列的情况很相近,ARM的基本内容也就是包括(1)中断的响应过程,(2)ARM的指令集,(3)存储器的结构,(4)汇编语言的程序结构和C语言的编程。并没有比51系列更多的内容。从这几个方面出发去学习掌握ARM处理器,就会发现学习掌握ARM处理器并不是很困难的事。
四、ARM微处理器概述
(一)、目前ARM微处理器几种系列
ARM微处理器目前包括下面几个系列,以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。
- ARM7系列
- ARM9系列
- ARM9E系列
- ARM10E系列
- SecurCore系列
- Inter的Xscale
- Inter的StrongARM
其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。Xscale、SecurCore、StrongARM等系列专门为安全要求较高的应用和Inter而设计的。
我们今天主要ARM9微处理器为例解绍ARM微处理器系列的大致情况:
(二)、 ARM9微处理器系列
ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点:
- 5级整数流水线,指令执行效率更高。
- 提供1.1MIPS/MHz的哈佛结构。
- 支持32位ARM指令集和16位Thumb指令集。
- 支持32位的高速AMBA总线接口。
- 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。
- MPU支持实时操作系统。
- 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。
(三)、ARM9的体系结构
作为一种RISC体系结构的微处理器,ARM9微处理器具有RISC体系结构的典型特征。还具有如下增强特点:
(l)在每条数据处理指令当中,都控制算术逻辑单元(ALU)和移位器,以使ALU和移位器获得最大的利用率;
(2)自动递增和自动递减的寻址模式,以优化程序中的循环;
(3)同时Load和Store多条指令,以增加数据吞吐量;
(4)所有指令都条件执行,以增大执行吞吐量。
ARM体系结构的字长为32位,它们都支持Byte(8位)、Halfword(16位)和Word(32位)3种数据类型。
ARM处理器支持7种处理器模式,如下表:
大部分应用程序都在User模式下运行。当处理器处于User模式下时,执行的程序无法访问一些被保护的系统资源,也不能改变模式,否则就会导致一次异常。对系统资源的使用由操作系统来控制。
User(用户)模式之外的其它几种模式也称为特权模式,它们可以完全访问系统资源,可以自由地改变模式。其中的FIQ(快速中断)、IRQ(普通中断)、supervisor(管理)、Abort(中止)和undefined(未定义) 5种模式也被称为异常模式。在处理特定的异常时,系统进入这几种模式。这5种异常模式都有各自的额外的寄存器,用于避免在发生异常的时候与用户模式下的程序发生冲突。
还有一种模式是system(系统)模式,任何异常都不会导致进入这一模式,而且它使用的寄存器和User模式下基本相同。它是一种特权模式,用于有访问系统资源请求而又需要避免使用额外的寄存器的操作系统任务。
程序员可见的ARM寄存器共有37个:31个通用寄存器以及6个针对ARM处理器的不同工作模式所设立的专用状态寄存器,如下图:
ARM9采用5级流水线操作:指令预取、译码、执行、数据缓冲、写回。ARM9设置了16个字的数据缓冲和4个字的地址缓冲。这5级流水已被很多的RISC处理器所采用,被看作RISC结构的“经典”。
(四)、ARM9硬件设计结构
我们以ARM9主要的S3C2410A微控制器为例来解绍
4.1 S3C2410A微控制器
电路板上的ARM微控制器S3C2410A采用了ARM920T核,它由ARM9TDMI、存储管理单元MMU和高速缓存三部分组成。其中,MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。ARM920T有两个内部
协处理器:CP14和CP15。CP14用于调试控制,CP15用于存储系统控制以及测试控制。
S3C2410A集成了大量的内部电路和外围接口:
ØLCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
SDRAM控制器 3个通道的UART 4个通道的DMA 4个具有PWM功能的计时器和一个内部时钟 8通道的10位ADC 触摸屏接口 I2C总线接口 12S总线接口 两个USB主机接口 一个USB设备接口 两个SPI接口 SD接口 MMC卡接口
S3C2410A集成了一个具有日历功能的RTC和具有PLL(MPLL和UPLL)的芯片时钟发生器。MPLL产生主时钟,能够使处理器工作频率最高达到203MHz。这个工作频率能够使处理器轻松运行WinCE、Linux等操作系统以及进行较为复杂的信息处理。UPLL则产生实现USB模块的时钟。
下图显示了S3C2410A的集成资源和外围接口:
我们需要对上图中的AHB总线和APB总线的概念进行一番解释。ARM核开发的目的,是使其作为复杂片上系统的一个处理单元来应用的,所以还必须提供一个ARM与其它片上宏单元通信的接口。为了减少不必要的设计资源的浪费,ARM公司定义了AMBA(Advanced Microcontroller Bus Architecture)总线规范,它是一组针对基于ARM核的、片上系统之间通信而设计的、标准的、开放协议。
在AMBA总线规范中,定义了3种总线:
(l)AHB—Advanced High Performace Bus,用于高性能系统模块的连接,支持突发模式数据传输和事务分割;
(2)ASB—Advanced System Bus,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由AHB总线替代;
(3)APB—Advanced PeriPheral Bus,用于较低性能外设的简单连接,一般是接在AHB或ASB系统总线上的第二级总线。 典型的AMBA总线系统如下图:
S3C2410A将系统的存储空间分成8个bank,每个bank的大小是128M字节,共1G字节。Bank0到bank5的开始地址是固定的,用于ROM或SRAM。bank6和bank7可用于ROM、SRAM或SDRAM。所有内存块的访问周期都可编程,外部Wait也能扩展访问周期。
下图给出了S3C2410A的内存组织:
下图给出了S3C2410A的数据总线、地址总线和片选电路:
SDRAM控制信号、集成USB接口电路:
内核与存储单元供电电路(S3C2410A对于片内的各个部件采用了独立的电源供给,内核采用1.8V供电,存储单元采用
3.3V独立供电):
JTAG标准通过边界扫描技术提供了对电路板上每一元件的功能、互联及相互间影响进行测试的方法,极大地方便了系统电路的调试测试接入端口TAP的管脚定义如下:
Ø TCK:专用的逻辑测试时钟,时钟上升沿按串行方式对测试指令、数据及控制信号进行移位操作,下降沿用于对输出信号移位操作;
Ø TMS:测试模式选择,在TCK上升沿有效的逻辑测试控制信号;
Ø TDI:测试数据输入,用于接收测试数据与测试指令;
Ø TDO:测试数据输出,用于测试数据的输出。 S3C2410A调试用JTAG接口电路:
4.2 SDRAM存储器
SDRAM被用来存放操作系统(从FLASH解压缩拷入)以及存放各类动态数据,采用SAMSUNG公司的K4S561632,它是4Mxl6bitx4bank的同步DRAM,容量为32MB。用2片K4S561632实现位扩展,使数据总线宽度达到32bit,总容量达到64MB,将其地址空间映射在S3C2410A的bank6。
SDRAM 所有的输入和输出都与系统时钟CLK上升沿同步,由输入信号RAS、CAS、WE组合产生SDRAM 控制命令,其基本的控制命令如下:
SDRAM 在具体操作之前首先必须通过MRS命令设置模式寄存器,以便确定SDRAM 的列地址延迟、突发类型、突发长度等工作模式;再通过ACT命令激活对应地址的组,同时输入行地址;然后通过RD 或WR 命令输入列地址,将相应数据读出或写入对应的地址;操作完成后用PCH 命令或BT 命令中止读或写操作。在没有操作的时候,每隔一段时间必须用ARF命令刷新数据,防止数据丢失。
下图给出了SDRAM的连接电路:
4.3 FLASH存储器
NOR和NAND是现在市场上两种主要的非易失闪存技术。 NOR的特点是芯片内执行(XIP,Execute In Place),即应用程序可直接在Flash闪存内运行,不必把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口,S3C2410A内嵌了NAND FLASH控制器。
S3C2410A支持从GCS0上的NOR FLASH启动(16位或32位)或从NAND FLASH启动,需要通过OM0和OM1上电时的上下拉来设置:
在系统中分别采用了一片NOR FLASH(28F640)和NAND FLASH(K9S1208),电路如下图:
4.4串口
S3C2410内部集成了UART控制器,实现了并串转换。外部还需提供CMOS/TTL电平与RS232之间的转换:
4.5以太网
以太网控制芯片采用CIRRUS LOGIC公司生产的CS8900A,其突出特点是使用灵活,其物理层接口、数据传输模式和工作模式等都能根据需要而动态调整,通过内部寄存器的设置来适应不同的应用环境。它符合IEEE803.3以太网标准,带有传送、接收低通滤波的10Base-T连接端口,支持10Base2,10Base5和10Base-F的AUI接口,并能自动生成报头,自动进行CRC检验,在冲突后自动重发。
CS8900A支持的传输模式有I/O和Memory模式。当CS8900A有硬件复位或软件复位时,它将默认成为8位工作模式。因此,要使CS8900A工作于16位模式,系统必须在访问之前提供给总线高位使能管脚(/SBHE)一个由高到低、再由低到高变化的电平。
4.6 USB接口
USB 系统由USB 主机(USB Host)、USB集线器(USB Hub)和USB设备(USB Device)组成。USB 和主机系统的接口称作主机控制器(Host Controller),它是由硬件和软件结合实现的。根集线器是综合于主机系统内部的,用以提供USB的连接点。USB的设备包括集线器(Hub)和功能器件(Function)。
S3C2410A集成了USB host和USB device,外部连接电路如下图:
4.7电源
LDO(Low Dropout)属于DC/DC变换器中的降压变换器,它具有低成本、低噪声、低功耗等突出优点,另外它所需要的外围器件也很少,通常只有 1~2 个旁路电容。
在电路板上分别用两个LDO来实现5V向3.3V(存储接口电平)和1.8V(ARM内核电平)的转换。
up监控电路采用MAX708芯片,提供上电、掉电以及降压情况下的复位输出及低电平有效的人工复位输出:
4.8其它
SN74LVTH62245A提供总线驱动和缓冲能力:
S3C2410A集成LCD液晶显示器控制电路,外部引出接口:
触摸屏有电阻式、电容式等,其本质是一种将手指在屏幕上的触点位置转化为电信号的传感器。手指触到屏幕,引起触点位置电阻或电容的变化,再通过检测这一电性变化,从而获得手指的坐标位置。通过S3C2410A集成的AD功能,完成电信号向屏幕坐标的转化,触摸屏接口如下:
键盘则直接利用CPU的可编程I/O口,若连接 mxn键盘,则需要m+n个可编程I/O口,由软件实现键盘扫描,识别按键:
4.9整体架构
下图呈现了ARM9处理器及外围电路的整体设计框架:
(五)、 ARM9微处理器的指令结构
ARM编译器一般都支持汇编语言的程序设计和C/C++语言的程序设计,以及两者的混合编程。
ARM9微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。
5.1 ARM微处理器的指令的分类
ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。
ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指
令和异常产生指令六大类。
5、2 ARM汇编器所支持的伪指令
在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。
在ARM的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。
五、小结:
以上简单的介绍了基于S3C2410A ARM处理器电路板硬件设计的基本组成。和以ARM9为内核的 S3C2410A处理器的软件结构的简单概况,由于时间的关系讲的比较粗浅。我们对ARM的学习时间也不长,可能会有错误。在这和大家交流的同时也希望批评指正。目前ARM在我国和深圳的使用越来越广。我们希望大家以技师学院和高训大厦为基地,形成高技能人才的ARM学习和交流及开发的团队,使深圳的高技能人才ARM技术水平提高到一个新的高度。
六、ARM实用实际操作(演示)