《嵌入式 Linux 系统开发标准教程》 作者:华清远见 第2章ARM 嵌入式处理器 本章目标 本章描述了 ARM 体系结构和 ARM Linux 的发展,介绍了几种应用 Linux 的典 型ARM 处理器和开发板.本章可以使读者了解嵌入式 Linux 系统硬件平台的基础 知识. ARM 体系结构 典型的 ARM 处理器 S3C2410 开发板介绍 专业始于专注 卓识源于远见 ? ? ? ‐? 2? 2.1 初识 ARM ARM(Advanced RISC Machines) ,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称, 还可以认为是一种技术的名字.ARM 处理器是一种低功耗高性能的 32 位RISC 处理器,ARM 处理器是一 个综合体, ARM 公司自身并不制造微处理器, 而是由 ARM 的合作伙伴来制造, 作为 SOC (System On Chip) 的典型应用,目前,基于 ARM 的处理器以其高速度、低功耗等诸多优异的性能而得到非常广泛的应用. 采用 RISC 架构的 ARM 微处理器一般具有如下特点. ? 体积小、低功耗、低成本、高性能. ? 支持 Thumb(16 位)/ARM(32 位)双指令集,能很好地兼容 8 位/16 位器件. ARM 微处理器支持两种指令集:ARM 指令集和 Thumb 指令集.其中,ARM 指令为 32 位的长度, Thumb 指令为 16 位长度. Thumb 指令集为 ARM 指令集的功能子集, 但与等价的 ARM 代码相比 较,可节省 30%~40%以上的存储空间,同时具备 32 位代码的所有优点. ? 大量使用寄存器,指令执行速度更快. ARM 处理器共有 37 个寄存器,被分为若干个组(BANK) ,如下. ? 31 个通用寄存器,包括程序计数器(PC 指针) ,均为 32 位的寄存器. ? 6 个状态寄存器,用以标识 CPU 的工作状态及程序的运行状态,均为 32 位. 概括地讲,ARM 体系结构中各寄存器的使用方式可以归纳如表 2.1 所示. 表2.1 ARM 寄存器使用方式 寄存器使用方式程序计数器 PC(r15) 所有运行状态都可以使用 通用寄存器 r0~r7 所有运行状态都可以使用 通用寄存器 r8~r12 除去快速中断以外的状态都可以使用 当前程序状态寄存器 CPSR 所有运行状态都可以使用 保存程序状态寄存器 SPSR 除去用户状态以外的 6 种运行状态,分别都有自己的 SPSR 堆栈指针 SP(r13)和链接寄存器 lr(r14) 所有的运行状态都有自己的 SP 和lr ? 大多数数据操作都在寄存器中完成.? 寻址方式灵活简单,执行效率高. ? 指令长度固定. 为了保证 ARM 处理器具有高性能的同时, 进一步减少芯片的体积和功耗, ARM 处理器采用了以下一些比 较特别的技术. ? 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率. ? 可用加载/存储指令批量传输数据,以提高数据的传输效率. ? 可在一条数据处理指令中同时完成逻辑处理和移位处理. ? 在循环处理中使用地址的自动增减来提高运行效率. ARM 微处理器有以下 7 种运行模式. ? 用户模式(usr) :ARM 处理器正常的程序执行状态. ? 快速中断模式(fiq) :用于高速数据传输或通道处理. ? 外部中断模式(irq) :用于通常的中断处理.? 管理模式(svc) :操作系统使用的保护模式. ? 数据访问终止模式(abt) :当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护. ? 系统模式(sys) :运行具有特权的操作系统任务. ? 未定义指令中止模式(und) :当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软 件仿真. ARM 微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变.大多数的应用程序 运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的.除用户模式 以外,其余的所有 6 种模式称之为非用户模式,或特权模式(Privileged Modes) ;其中除去用户模式和系 统模式以外的 5 种又称为异常模式(Exception Modes) ,常用于处理中断或异常,以及需要访问受保护的 系统资源等情况. 专业始于专注 卓识源于远见 ? ? ? ‐? 3? 2.1.1 ARM 公司简介 1991 年ARM 公司(Advanced RISC Machine Limited)成立于英国剑桥,最早由 Arcon、Apple 和VLSI 合 资成立,主要出售芯片设计技术的授权,在1985 年4月26 日,第一个 ARM 原型在英国剑桥的 Acorn 计 算机有限公司诞生(在美国 VLSI 公司制造) .目前,ARM 架构处理器已在高性能、低功耗、低成本的嵌 入式应用领域中占据了领先地位. ARM 公司最初只有 12 人,经过十多年的发展,ARM 公司已拥有近千名员工,在许多国家都设立了分公 司,包括 ARM 公司在中国上海的分公司.目前,采用 ARM 技术知识产权(IP)核的微处理器,即我们 通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类 产品市场,基于 ARM 技术的微处理器应用约占据了 32 位RISC 微处理器 80%以上的市场份额,其中,在 手机市场,ARM 占有绝对的垄断地位.可以说,ARM 技术正在逐步渗入到人们生活中的各个方面,而且 随着 32 位CPU 价格的不断下降和开发环境的不断成熟,ARM 技术会应用得越来越广泛. ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司, 作为嵌入式 RISC 处理器的知识产权 IP 供应商, 公司本身并不直接从事芯片生产,而是靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体 生产商从 ARM 公司购买其设计的 ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路, 从而形成自己的 ARM 微处理器芯片进入市场,利用这种合伙关系,ARM 很快成为许多全球性 RISC 标准 的缔造者. 目前, 全世界有几十家大的半导体公司都使用 ARM 公司的授权, 其中包括 Intel、 IBM、 Samsung、 LG 半导体、NEC、SONY、PHILIP 等公司,这也使得 ARM 技术获得更多的第三方工具、制造、软件的 支持,又使整个系统成本降低,使产品更容易进入市场并被消费者所接受,更具有竞争力. 2.1.2 ARM 体系结构基础 处理器的体系结构定义了指令集(ISA)和基于这一体系结构下处理器的程序员模型.ARM 体系结构为嵌 入系统发展商提供了很高的系统性能,同时保持了优异的功耗和面积效率,每一次 ARM 体系结构的重大 修改,都会添加一些非常关键的技术. 目前,ARM 体系结构共定义了 6 个版本,从版本 1 到版本 6,ARM 体系的指令集功能不断扩大,不同系 列的 ARM 处理器,性能差别很大,应用范围和对象也不尽相同,但是,如果是相同的 ARM 体系结构, 那么基于它们的应用软件是兼容的. 1.V1 结构(版本 1)? V1 版本的 ARM 处理器并没有实现商品化,采用的地址空间是 26 位,寻址空间是 64MB,在目前的版本 中已不再使用这种结构. 2.V2 结构? 与V1 结构的 ARM 处理器相比,V2 结构的 ARM 处理器的指令结构要有所完善,比如增加了乘法指令并 且支持协处理器指令,在该版本的处理器仍然是 26 位的地址空间. 3.V3 结构? 从V3 结构开始,ARM 处理器的体系结构有了很大的改变,实现了 32 位的地址空间,指令结构相对前面 的两种结构也所完善. 专业始于专注 卓识源于远见 ? ? ? ‐? 4? 4.V4 结构? V4 结构的 ARM 处理器增加了半字指令的读取和写入操作,增加了处理器系统模式,并且有了 T 变种-V4T,在Thumb 状态下所支持的是 16 位的 Thumb 指令集.属于 V4T(支持 Thumb 指令)体系结构的处理器(核)有ARM7TDMI、ARM7TDMI-S(ARM7TDMI 可综合版本) 、ARM710T(ARM7TDMI 核的处理器) 、ARM720T (ARM7TDMI 核的处理器) 、ARM740T(ARM7TDMI 核的处理器) 、ARM9TDMI、ARM910T(ARM9TDMI 核的处理器) 、ARM920T(ARM9TDMI 核的处理器) 、ARM940T(ARM9TDMI 核的处理器) 、StrongARM(Intel 公司的产品) . 5.V5 结构? V5 结构的 ARM 处理器提升了 ARM 和Thumb 两种指令的交互工作能力,同时有了 DSP 指令-V5E 结构、 Java 指令-V5J 结构的支持. 属于 V5T(支持 Thumb 指令)体系结构的处理器(核)有ARM10TDMI、ARM1020T(ARM10TDMI 核 处理器) . 属于 V5TE(支持 Thumb,DSP 指令)体系结构的处理器(核)有ARM9E、ARM9E-S(ARM9E 可综合版本) 、 ARM946 (ARM9E 核的处理器) 、 ARM966 (ARM9E 核的处理器) 、 ARM10E, ARM1020E (ARM10E 核处理器) 、 ARM1022E(ARM10E 核的处理器) 、Xscale(Intel 公司产品) . 属于 V5TEJ (支持 Thumb、 DSP 指令、 Java 指令) 体系结构的处理器 (核) 有ARM9EJ、 ARM9EJ-S (ARM9EJ 可综合版本) 、ARM926EJ(ARM9EJ 核的处理器) 、ARM10EJ. 6.V6 结构? V6 结构是在 2001 年发布的,在该版本中增加了媒体指令,属于 V6 体系结构的处理器核有 ARM11(2002 年发布) .V6 体系结构包含 ARM 体系结构中所有的 4 种特殊指令集:Thumb 指令(T) 、DSP 指令(E) 、 Java 指令(J)和Media 指令. 目前,基于 ARM 核结构的微处理器目前包括下面几个系列. ? ARM7 系列 ARM7 系列包括 ARM7TDMI、ARM720T、ARM7TDMI-S、ARM7EJ,该系列中,使用最广泛的是基于 ARM7TDMI 核的 ARM 处理器, 比如 Samsung 的S3c4510B、 S3c44b0x 等, 在这里后缀 TDMI 的含义如下. T:表示支持 Thumb 指令集. D:表示支持片上调试(Debug) . M:表示内嵌硬件乘法器(Multiplier) . I:表示支持片上断点和调试点. ? ARM9 系列 ARM9 系列包括 ARM920T、ARM922T 和ARM940T.ARM9 处理器采用了 5 级流水线,指令执行效率较 ARM7 有较大提高,而且带有 MMU 功能,这也是与 ARM7 的重要区别.同时,该系列的处理器支持指令 Cache 和数据 Cache,因而具有更高的数据处理能力,主要应用在无线设备、手持终端、数字照相机等. ? ARM9E 系列 ARM9E 系列包括 ARM926EJ-S、ARM946E-S、ARM966E-S、ARM968E-S,该系列的处理器是综合类的处 理器,它使用单一的处理器核提供了微控制器、DSP、Java 应用,因而非常适应于同时使用 DSP 和微控制 器的场合.采用了 5 级流水线,支持 DSP 指令集、32 位的高速 AMBA 总线接口,带有 MMU 功能,最高 主频可达 300MIPS. ? ARM10E 系列 专业始于专注 卓识源于远见 ? ? ? ‐? 5? ARM10E 系列包括 ARM1020E、ARM1022E、ARM1026EJ-S,该系列的 ARM 处理器采用了新的体系结构, 同ARM9 系列相比有了很大的提高,采用了更高的 6 级流水线结构,支持 DSP 指令,适合同时需要高速数 字信号处理的场合,支持 64 位的高速 AMBA 总线接口、32 位的 ARM 指令集和 16 位的 Thumb 指令集.主 要应用于下一代的无线设备、数字消费品等. ? ARM11 系列 ARM11 系列包括 ARM1136J(F)-S, ARM1156T2(F)-S, ARM1176JZ(F)-S, AMR 公司在 2003 年推出了 ARM11 架构的核,基于 ARM11 核结构的处理器具有更高的性能,尤其是在多媒体处理能力方面,采用了先进的 0.13?m 工艺,最高工作频率可达 750MHz. ? SecurCore 系列 SecurCore 系列包括 SecurCore SC100、SecurCore SC110、SecurCore SC200 和SecurCore SC22,SecurCor 系列处理器专为安全需要而设计, 提供了对于安全方案解决的支持, 主要应用在比如电子商务、 电子银行、 网络认证等对安全性要求很高的场合. ? Xscale Xscale 处理器是 Intel 公司基于 ARMV5TE 体系结构的解决方案,是一款高性能、低功耗的 32 位RISC 处 理器,有PXA25x 系列和 PXA27x 系列. 2.1.3 Linux 与ARM 处理器 在32 位RISC 处理器领域,基于 ARM 的结构体系在嵌入式系统中发挥了重要作用,ARM 处理器和嵌入 式Linux 的结合也正变得越来越紧密,并在嵌入式领域得到了广阔的应用.早在 1994 年,Linux 就可在 ARM 架构上运行,但那时 Linux 并没有在嵌入式系统中得到太多应用.目前,上述状况已经出现巨大变 化, 包括便携式消费类电子产品、 网络、 无线设备、 汽车、 医疗和存储产品在内, 都可以看到 ARM 与Linux 相结合的身影,linux 之所以能在嵌入式市场上取得如此辉煌的成就,与其自身的优秀特性是分不开的. Linux 具有诸多内在优点,非常适合于嵌入式操作系统. ? Linux 的内核精简而高效,针对不同的实际需求,可将内核功能进行适当剪裁,Linux 内核可以小 到100KB 以下,减少了对硬件资源的消耗. ? Linux 诞生之日就与网络密不可分,它本身就是一款优秀的网络操作系统,Linux 具有完善的网络性 能,并且具有多种网络服务程序,而操作系统具备网络特性是很重要的. ? Linux 的可移植性强,方便移植到许多硬件平台,其模块化的特点也便于开发人员进行删减和修 改,同时,Linux 还具有一系列优秀的开发工具,嵌入式 Linux 为开发者提供了一整套的工具链 (Tool Chain) ,能够很方便地实现从操作系统内核到用户态应用软件各个级别的调试. ? Linux 源码开放、软件资源丰富,可以支持多种硬件平台,如X86、ARM、MIPS 等,已经成功 移植到数十种硬件平台之上, 几乎包括所有流行的 CPU 架构, 同时 Linux 下面有着非常完善的驱 动资源,支持各种主流硬件设备,所有这些都促进了 Linux 在嵌入式领域广泛的应用. 不同特征的 Linux 都是在某一个 CPU 架构体系上运行的, 而ARM 结构体系历经多年的发展产生出很多版 本,Linux 对于已在 ARM 规划蓝图中获定义的新特征也有相应的支持.ARM 体系的处理器按照不同的目 标应用分类有着不同的特点和发展方向,基于与操作系统结合的特点考虑,可以根据有无 MMU(Memory Management Unit)把CPU 分成两类,即带 MMU 功能的处理器和不带 MMU 功能的处理器. Linux 作为一种基于 X86 平台发展过来的操作系统, 是一种典型的应用操作系统, 在硬件上需要 MMU 的支持, 所以只有在包含 MMU 的ARM 处理器上才能运行 Linux, 如典型的 ARM720T、 ARM920/922T 和ARM926EJ. 另外一些常用的 ARM 处理器,如ARM7TDMI 系列,因为没有 MMU,所以不支持标准的 Linux.不带 MMU 的处理器由于特别适合于深度嵌入的特点(如快速实时响应、实地址编程等) ,在嵌入式系统中的应用非常广 泛.为了适应这种需求,?Clinux 应运而生.?Clinux 是开放源码的嵌入式 Linux 的一个经典之作,它设计的目 标平台是那些没有内存管理单元(MMU)的微处理器芯片.为了满足嵌入式系统的需求,?Clinux 还改写和裁 减了大量 Linux 内核代码, 因此?Clinux 内核远小于标准 Linux 的内核, 但仍然保持了 Linux 操作系统的绝大部 分特性,包括稳定强大的网络功能及出色的文件系统支持等. 专业始于专注 卓识源于远见 ? ? ? ‐? 6? 2003 年末推出的 Linux 内核 2.6 版本加强了对无 MMU 处理器的的支持,Linux2.6 内核扩展多嵌入式平台 支持的一个主要途径就是把?CLinux 的大部分并入主流内核功能中,这无疑为 Linux 在嵌入式领域的广泛 应用加重了砝码,也使得 ARM 与Linux 的关系更加紧密. 2.2 ARM 指令集 2.2.1 ARM 处理器的指令集概述 ARM 处理器的指令集主要有 6 大类. ? 跳转指令.? 数据处理指令. ? 程序状态寄存器(PSR)处理指令. ? 加载/存储指令. ? 协处理器指令. ? 异常产生指令. 具体的指令及功能如表 2.2 所示(表中指令为基本 ARM 指令,不包括派生的 ARM 指令) . 表2.2 ARM 指令及其功能描述 指令指令功能描述 ADC 带进位加法指令 ADD 加法指令 AND 逻辑与指令 B 跳转指令 BIC 位清零指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令 CDP 协处理器数据操作指令 CMN 比较反值指令 CMP 比较指令 EOR 异或指令 LDC 存储器到协处理器的数据传输指令 LDM 加载多个寄存器指令 LDR 存储器到寄存器的数据传输指令 MCR 从ARM 寄存器到协处理器寄存器的数据传输指令 MLA 乘加运算指令 MOV 数据传送指令 MRC 从协处理器寄存器到 ARM 寄存器的数据传输指令 MRS 传送 CPSR 或SPSR 的内容到通用寄存器指令 MSR 传送通用寄存器到 CPSR 或SPSR 的指令 MUL 32 位乘法指令 MVF 传送值到浮点数寄存器 MVN 数据取反传送指令 ORR 逻辑或指令 RSB 逆向减法指令 RSC 带借位的逆向减法指令 SBC 带借位减法指令 STC 协处理器寄存器写入存储器指令 STM 批量内存字写入指令 STR 寄存器到存储器的数据传输指令 专业始于专注 卓识源于远见 ? ? ? ‐? 7? SUB 减法指令 SWI 软件中断指令 SWP 交换指令 TEQ 相等测试指令 TST 位测试指令 2.2.2 ARM 指令寻址方式 1.立即数寻址? ARM 指令的立即数寻址是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了 操作数.这个操作数被称为立即数. ADD R0,R0,#1 ;R0←R0 + 1 ADD R0,R0,#0x3A ;R0←R0 + 0x3A 在以上两条指令中,第2个源操作数即为立即数,实际使用时以"#"符号为前缀. 2.寄存器寻址? 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也 是一种执行效率较高的寻址方式.例如,以下的指令: ADD R0,R1,R2 ;R0←R1 + R2 该指令的执行效果是将寄存器 R1 和R2 的内容相加,其结果存放在寄存器 R0 中. 3.寄存器间接寻址? 寄存器间接寻址就是以寄存器中的值作为操作数的地址, 而操作数本身存放在存储器中. 例如, 以下指令: ADD R0,R1,[R2] ;R0←R1 + [R2] LDR R0,[R1] ;R0←[R1] 在第 1 条指令中,以寄存器 R2 的内容作为操作数的地址,然后与 R1 相加,其结果存入寄存器 R0 中. 第2条指令将以 R1 的值为地址的存储器中的内容送到寄存器 R0 中. 4.基址变址寻址? 基址变址的寻址方式就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相 加,从而得到一个操作数的有效地址.如下面的几条指令所示. LDR R0,[R1,#0x0A] ;R0←[R1 + 0x0A] LDR R0,[R1,#0x0A]! ;R0←[R1 + 0x0A]、R1←R1 + 0x0A 在第 1 条指令中, 将寄存器 R1 的内容加上 0x3A 形成操作数的有效地址, 将该地址处的操作数送到寄存器 R0 中. 在第 2 条指令中,将寄存器 R1 的内容加上 0x0A 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中,然后,R1 的内容自增 0x0A 个字节. 专业始于专注 卓识源于远见 ? ? ? ‐? 8? 5.多寄存器寻址? 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送.这种寻址方式可以用一条指令完成传送 最多 16 个通用寄存器的值.比如下面的指令. LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0 + 4] ;R3←[R0 + 8] ;R4←[R0 + 12] 该指令的后缀 IA 表示在每次执行完加载/存储操作后,R0 按字长度增加,因此,指令可将连续存储单元的 值传送到 R1~R4. 6.相对寻址? 与基址变址寻址方式相类似,相对寻址以程序计数器 PC 的当前值为基地址,指令中的地址标号作为偏移 量,将两者相加之后得到操作数的有效地址.比如下面的程序段完成子程序的调用和返回,跳转指令 BL 采用了相对寻址方式. BL NEXT ;跳转到子程序 NEXT 处执行 …… NEXT …… MOV PC,LR ;从子程序返回 7.堆栈寻址? 堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用 寄存器指示当前的操作位置,堆栈指针总是指向栈顶. 根据堆栈的生成方式,堆栈又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack) ,当堆 栈由低地址向高地址生成时,称为递增堆栈;当堆栈由高地址向低地址生成时,称为递减堆栈.这样就有 4 种类型的堆栈工作方式,ARM 微处理器支持以下 4 种类型的堆栈工作方式. (1)满递增堆栈:堆栈指针指向最后压入的数据,并且堆栈以递增方式向上生成. (2)满递减堆栈:堆栈指针指向最后压入的数据,并且堆栈以递减方式向下生成. (3)空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成. (4)空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成. 2.2.3 Thumb 指令概述 作为 32 位的嵌入式处理器,ARM 具有 32 位数据总线宽度,但是为了更好地兼容数据总线宽度为 16 位的应 用系统, ARM 体系结构除了支持执行效率很高的 32 位ARM 指令集以外, 同时支持 16 位的 Thumb 指令集. Thumb 指令集是 ARM 指令集的一个子集, 允许指令编码为 16 位的长度. 与等价的 32 位代码相比较, Thumb 指令集在保留 32 代码优势的同时,可以在很大程度上节省系统的存储空间.当处理器在执行 ARM 程序段 时,称ARM 处理器处于 ARM 工作状态;当处理器在执行 Thumb 程序段时,称ARM 处理器处于 Thumb 工作状态. 所有的 Thumb 指令都有对应的 ARM 指令, 而且 Thumb 的编程模型也对应于 ARM 的编程模型, 在应用程 序的编写过程中,只要遵循一定调用的规则,Thumb 子程序和 ARM 子程序就可以互相调用,二者结合应 专业始于专注 卓识源于远见 ? ? ? ‐? 9? 用可以充分发挥各自的特点,取得较好的效果. 2.3 典型 ARM 处理器简介 2.3.1 Atmel AT91RM9200 Atmel 公司的 32 位RISCC 处理器 AT91RM9200 是基于 ARM Thumb 的ARM920T(核)微控制器,时钟频率为 180MHz, 运算速度可以达到 200MIPS. 带有全性能的 MMU, 支持 SDRAM、 静态存储器、 Burst Flash、 CompactFals、 SmartMedia 以及 NAND Flash,具有高性能、低功耗、低成本、小体积等优点.AT91RM9200 微处理器是一个多 用途的通用芯片,它内部集成了微处理器和常用外围组件,具有更高性价比的特点,可以为工控领域嵌入式系统 提供优秀的解决方案. AT91RM9200 具有以下的丰富片上资源. (1)16KB 数据 Cache,16KB 指令 Cache. (2)虚拟内存管理单元 MMU. (3)带有 Debug 调试的在片 Emulator. (4)Mid-level Implementation Embedded Trace Macrocell. (5)16KB 的内部 SRAM 和128KB 的内部 ROM. (6)带有外部总线接口(EBI) ,方便用户进行扩展升级. (7)支持 SDRAM、SRAM、Burst Flash 和CompactFlash、SmartMedia and NAND Flash 的无缝连接. (8)增强型的时钟产生器和电源管理单元. (9)带有 2 个PLL 的2个在片振荡器. (10)慢速的时钟操作模式和软件电源优化能力. (11)4 个可编程的外部时钟信号. (12)包括周期性中断、看门狗和第二计数器的系统定时器. (13)带有报警中断的实时时钟. (14)带有 8 个优先级、可单个屏蔽中断源、Spurious 中断保护的先进中断控制器. (15)7 个外部中断源和 1 个快速中断源; (16)4 个32 位的 PIO 控制器,可以达到 122 个可编程 I/O 引脚(每个都有输入控制、可中断及开路的输 出能力) . (17)20 通道的外部数据控制器(DMA) . (18)10/100M 的以太网接口. (19)2 个全速的 USB 2.0 主接口和一个从口. (20)4 个UART. (21)3 通道 16 位的定时/计数器(TC) . (22)两线接口(TWI) . (23)IEEE 1149.1 JTAG 标准扫描接口. 2.3.2 Samsung S3C2410 S3C2410 是著名的半导体公司 Samsung 推出的一款 32 位RISC 处理器,为手持设备和一般类型的应用提供了 低价格、 低功耗、 高性能微控制器的解决方案. S3C2410 的内核基于ARM920T, 带有 MMU (Memory Management Unit) 功能, 采用 0.18?m 工艺, 其主频可达 203MHz, 适合于对成本和功耗敏感的需求, 同时它还采用了 AMBA (Advanced Microcontr-oller Bus Architecture)的新型总线结构,实现了 MMU、AMBA BUS、Harvard 的高速 缓冲体系结构,同时支持 Thumb16 位压缩指令集,从而能以较小的存储空间需求,获得 32 位的系统性能. 其片上功能如下. 专业始于专注 卓识源于远见 ? ? ? ‐? 10? (1)内核工作电压为 1.8/2.0V、存储器供电电压 3.3V、外部 I/O 设备的供电电压 3.3V. (2)16KB 的指令 Cache 和16KB 的数据 Cache. (3)LCD 控制器,最大可支持 4098 色STN 和256 色TFT. (4)4 通道的 DMA 请求. (5)3 通道的 UART(IrDA1.0、16 字节 TxFIFO、16 字节 RxFIFO) ,2 通道的 SPI 接口. (6)2 通道的 USB(Host/Slave) . (7)4 路PWM 和1个内部时钟控制器. (8)117 个通用 I/O,24 路外部中断. (9)272Pin FBGA 封装. (10)16 位的看门狗定时器. (11)1 通道的 IIC/IIS 控制器. (12)带有 PLL 片上时钟发生器. S3C2410 ARM 处理器支持大/小端模式存储字数据,其寻址空间可达 1GB,每个 Bank 为128MB,对于外 部I/O 设备的数据宽度,可以是 8/16/32 位,所有的存储器 Bank(共有 8 个)都具有可编程的操作周期, 而且支持各种 ROM 引导方式(NOR/NAND Flash、EEPROM 等) ,其结构框图如图 2.1 所示. 图2.1 S3C2410 结构框图 2.3.3 TI OMAP1510/1610 系列 TI 在1998 年推出了可扩展的开放式 OMAP 处理器平台,OMAP 平台提供了语音、数据和多媒体所需的带宽和 功能,可以极低的功耗为高端 2.5G 和3G 无线设备提供较高的性能.TI 的OMAP 处理器支持所有类似的高级操 作系统,无需任何新的编程技能便可提供无缝访问其高性能 DSP 算法的能力.TI 还提供了 OMAP 解决方案,将 无线调制解调器与专用应用处理器完美地组合在单个芯片上.TI 在提供全球范围的技术支持的同时,还提供了 可降低系统成本的高度集成的解决方案. 专业始于专注 卓识源于远见 ? ? ? ‐? 11? OMAP(开放式多媒体应用平台)是TI 公司针对无线市场推出的一系列针对便携设备的多媒体处理器,但 其应用并不限于手机.OMAP 系列处理器一般具有双核(DSP 和ARM)架构,这种低功耗的 OMAP 架构 把用于语音的 DSP 信号处理功能与 RISC 处理器的通用系统性能融合在了一起,设计了开放式软件架构, 以鼓励开发语音引擎、语音应用和多媒体等应用,包括语音识别器和原型应用等开发支持,可帮助开发商 快速建立其自己的产品并缩短产品上市时间.除具有"性能/功耗比"上的优势之外,OMAP 系列处理器 还提供丰富的外围接口,支持几乎所有流行的有线和无线接口标准. 按功能应用来区分,TI 的OMAP 处理器主要分为两类,如表 2.3 所示. 表2.3 OMAP 系列分类 类别型号描述单纯应用处理器 OMAP310 175MHz,具有基本的多媒体功能 OMAP1510 175MHz,与OMAP310 相比增加了 DSP 和ARM926 处理内核, 192KB 的片内 RAM OMAP1610 204MHz,功耗和封装尺寸较 1510 更小,多媒体处理能力有较大 提高,增加了 JAVA 加速器,采用硬件方法加速应用程序的执行, 集成了更多运动控制和接口器件 OMAP1611 204MHz, 增加了内部 SRAM (有助于提高流媒体和图形处理能力) 和54Mbit/s 的WLAN 接口 OMAP1612 204MHz,较1611 又增加了堆叠式整合的 DDR 存储器,与外接存 储器方式相比减少了空间和功耗 整合数字基带功 能的应用处理器 OMAP710 132MHz,针对中端智能手机,性能与 1510 对应 OMAP730 200MHz,性能较 710 提高一倍,待机时间也增加一倍,是TI 目 前主推的芯片 OMAP732 200MHz,与730 相似,但将 SRAM 以堆叠式整合,减小了体积 OMAP1510 是一颗双核心的基于 2.5G/3G 手持设备和 PDA 产品应用的多媒体应用芯片,这种芯片包括了 完整的视频流媒体处理功能、音频解码功能、移动通信协议的,面向 OEM/ ODM 客户的产品. 该芯片由两部分构成: TMS320C55x DSP 芯片和扩展型的 ARM925 芯片. 其中 ARM925 芯片负责控制部分的功能、操作系统的用户界面接口支持.而TMS320C55x 则负责安全性、多媒体和语音 方面的处理.这种独特的双核心架构把高性能低功耗的 DSP 核与控制功能很强的 ARM 处理器结合起来, 具有集成度高、硬件可靠性和稳定性好、速度快、数据处理能力强、功耗低、开放性好等优点. 为了适应 3G 的应用发展,TI 又推出了新的应用处理器 OMAP1610/1611/1612 系列.新的 OMAP 处理器对 安全应用、Java、多媒体和图形处理均采用了硬件加速器,并且还预留了 802.11a/b/g 接口.OMAP161X 系 列的处理器主要具有以下特点. 1.低功耗、高性能 CMOS 技术? ? 采用低电压工作模式,内核 1.1~1.5V,I/O1.8~3V. ? 静态消耗电流小于 120?A. ? 优化了时钟和电源管理,只需要 13MHz 和32kHz 的两个时钟. ? 0.13?m 工艺技术. ? 12mm?12mm BGA 封装. 2.TMS320C55xDSP 核? ? 最高工作频率可达 204MHz. ? 带有片内 32K?16 位的双口 RAM(DARAM) (64KB) . ? 48K?16 位的片内 RAM(SARAM) (96KB) . 专业始于专注 卓识源于远见 ? ? ? ‐? 12? ? 24KB 的指令 cache. ? 每时钟周期执行单/双指令. 3.ARM926TEJ 核? ? 最高 204MHz 的工作频率,采用 ARM926TEJ V5 版本架构. ? 16KB 的指令 Cache,8KB 的数据 Cache. ? 采用了 Java 加速器. ? 支持 32 位和 16 位(Thumb)指令结构. ? MMU 功能. ? 最高 204MHz 的工作频率,采用 ARM926TEJ V5 版本架构. ? 16KB 的指令 Cache,8KB 的数据 Cache. ? 采用了 Java 加速器. ? 支持 32 位和 16 位(Thumb)指令结构. 图2.2 是OMAP1610 处理器的结构框图. Compact Flash NAND Flash Flash Mobile DDR 802.11 Emulator Pod JTAG/Emulation EMIF IrDA IIC Kepad GPIO LPG PWT ETM9 Camera I/F MMC/SD TMS320C55X DSP ARM926 Shared Memory Controller/DMA 2D Graphic Accelerator Timers, Interrupt Controller, RTC Security: SHA-1/MDS DES/3DES RNG RART MCSI UART MCSI McBSP uWire McBSP USB OTG LDC Controller Clock& Reset PWL TSC2301 Audio codec Host Client LCD LCD Light Controller Bluetooth Wirless Technology TCS Modem Chipset Voice Data Control Voice Data OMP1610 图2.2 OMAP1610 结构框图 2.3.4 Freescale i.Max21 飞思卡尔半导体(其前身属于摩托罗拉半导体公司)开发了 i.MX 系列处理器,其i.MX 系列嵌入式应用处 理器采用了 ARM 内核,主流应用处理器 i.MAX21(第二代的龙珠芯片)在多媒体和安全性能、并行处理 能力等方面都有不错的表现.i.MX21 可支持实时 MPEG4 和H.263 编解码,最高可每秒传输 30 帧CIF 或QVGA 图像. 另外, i.MX21 还支持 Mobile Java 3D 和OpenGL-ES 等先进的图型软件标准, 以及 Superscape、 HI Corp 和Fathammer 3D 软件引擎.可用于智能电话、无线个人数字助理(PDA)和许多其他移动产品. i.MX 应用处理器的组件数量少,电池寿命长,并且性能出众,方便开发出功能更加齐全(例如数字图像捕 捉、文件共享、无线连接和多媒体娱乐) 、经济更高效的支持无线的手持设备.开发商采用这些平台可以 开发出从以语音为主的 2G 手机到具有丰富功能和特色的 3G 手机, 进而保持了开发商产品开发的延续性, 并能很容易地实现开发平台的转换. 专业始于专注 卓识源于远见 ? ? ? ‐? 13? i.Max21 主要具有如下特性. ? 集成 ARM926 内核. ? 16KB 的指令 Cache 和16KB 的数据 Cache. ? 采用 Smart Speed Switch 技术,可实现数据的并行处理,增加数据的吞吐量. ? 16/18 位的彩色 LCD 控制器,支持 SVGA. ? USB On-the-Go,2 通道的 USB Host. ? 支持实时 MPEG4 和H.263 编解码,最高可每秒传输 30 帧CIF 或QVGA 图像. 其结构框图如图 2.3 所示. USB OTG/Host 1-Wire IrDA 2X MMC/SD PCMCIA/CF 2X CSPI 2X SSI IIC Audio Mux 4X UARTs Connectivity Internal External Expansion Smart Speed Swith(MAX) Internal Control I-Cache Bus Control D-Cache Memory Control MMU ARM926TM CPU CPU Complex Memory Interface SDRAMC EIM/BMI NANDF Control Pre-and-Post Processing Enhanced Multimedia Accelerator Video Accelerator EIM/BMI JTAG/Multi-ICE Bootstrap Clock Management System Control Standard System I/O 3X Timers PWM WD Timer RTC GPIO eDMA Human Interface SLCD Control KeyPAD Multimedia Interface Camera Interface 图2.3 i.Max21 结构框图 2.4 典型的嵌入式系统开发平台—三星 S3C2410 开发板 在读者准备研究嵌入式开发时,选择合适的开发平台也是一个很重要的环节.开发板可以为用户提供基本 的底层硬件、系统和驱动等资源.目前,针对同一处理器的开发板有很多种,当然,开发目的是各不相同 的,其中要考虑的因素也很多,诸如开发成本、开发板资源是否满足要求、周期、技术支持程度等.本书 以深圳优龙科技有限公司的 ARM9 开发套件 FS2410 开发版作为研究平台来进行介绍,该开发板是基于 Samsung 2410 处理器为核心的嵌入式开发平台,提供了完备的软硬件资源,为广大嵌入式开发爱好者深入 研究嵌入式开发技术提供了一个较好的平台. FS2410 开发板的外观如图 2.4 所示. 图2.4 FS2410 开发板 专业始于专注 卓识源于远见 ? ? ? ‐? 14? 该开发板的资源如下. 1.硬件资源情况? ? CPU:三星 S3C2410A,主频 203MHz. ? 内存:64MB. ? NOR Flash:2MB(SST39VF160 或SST39VF1601) . ? NAND Flash:64MB(K9F1208,用户可自己更换为 16MB、32MB 或128MB 的NandFlash) . ? 2 个标准 5 线串口. ? 10M 网口,CS8900Q3,带联接和传输指示灯. ? 2 个USB1.1 HOST 接口(其中一个 HOST 与Device 复用,通过短路块选择) . ? 1 个USB1.1 Device 接口(它与 USB HOST 接口复用,通过短路块选择) . ? 1 个IRDA 红外线数据通信口. ? 采用 IIS 接口芯片 UDA1341,一路立体声音频输出接口可接耳机或音箱. ? 支持录音,自带驻机体话筒可直接录音,另有一路话筒输入接口可接麦克风. ? 1 个SD 卡接口,可接 256M SD 卡. ? 1 个50 芯LCD 接口引出了 LCD 控制器和触摸屏的全部信号. ? 支持黑白、4 级灰度、16 级灰度、256 色、4096 色STN 液晶屏,尺寸从 3.5 英寸到 12.1 英寸,屏 幕分辨率可达到 800?600 像素. ? 支持黑白、4 级灰度、16 级灰度、256 色、64K 色、真彩色 TFT 液晶屏,尺寸从 3.5 英寸到 12.1 英寸,屏幕分辨率可达到 800?600 像素. ? 标准配置为夏普 256K 色240?320/3.5 英寸 TFT 液晶屏,带触摸屏. ? 内部实时时钟(带有后备锂电池) . ? 1 个20 芯Multi-ICE 标准 JTAG 接口,支持 SDT2.51、ADS1.2 等调试. ? 开关电源供电,输入直流电压范围是 7~20V,带电源开关和指示灯. ? 1 个EEPROM(AT24C02)用来验证 IIC 总线读写. ? 16 个小按键,4 个高亮 LED. ? 1 个蜂鸣器(带使能控制的短路块) . ? 2 个PS/2 接口,信号线接在中断引脚上. ? 1 个精密可调电阻接到 ADC 引脚上用来验证模数转换. ? 1 个60 芯2mm 间距双排标准连接器用作扩展口,引出了地址线、数据线、读写、片选、中断、I/O 口、ADC、5V 和3.3V 电源、地等用户扩展可能用到的信号. 2.软件资源情况? ? ADS1.20 安装程序(评估版) . ? 采用 Linux2.4 以上内核. ? 支持多种文件系统,比如 Cramfs、Fat 以及用于 NAND Flash 的YAFFS 文件系统. ? 支持 LCD 和触摸屏. ? 支持 USB HOST. ? 支持 QT. ? 支持 MP3 播放和视频播放. ? 支持多种网络应用,比如 FTP、HTTP、Telnet 等网络应用. ? 烧写 Flash 的工具软件 SJF2410(包含 NT/2000/XP 解决方案) . ? 串口工具软件 sscom32.exe、dnw.exe、tftp.exe. 专业始于专注 卓识源于远见 ? ? ? ‐? 15? ? 64K 色(RGB565)图片字模软件. ? USB Device 接口驱动程序. ? FS2410 BIOS 源代码(ADS1.20 的项目文件) . ? FS2410 测试程序(ADS1.20 的项目文件,包含全部源代码) . ? Linux for S3c2410 内核源码包以及编译工具. ? WINCE4.2.NET 板级支持包 BSP for S3c2410. ? 已经编译好并可在 FS2410 上运行的 windows CE 内核,基于优龙提供的 BSP. ? Samsung 半导体网站关于 S3C2410 的全部资料和参考代码. ? FS2410 核心板和底板电路原理图. 目前,国内的 ARM 开发板供应商大多与国外半导体厂商取得合作关系推出一系列的 ARM 开发板,其种 类繁多,从面向低端的基本应用到高端设计的参考模型,应用尽有,除了前面提到的深圳优龙科技,还有 华恒、英蓓特、傅立叶等,他们为用户提供了充足的选择余地以进行嵌入式的深入研究和二次开发. 联系方式 集团官网:www.hqyj.com 嵌入式学院:www.embedu.org 移动互联网学院:www.3g-edu.org 企业学院:www.farsight.com.cn 物联网学院:www.topsight.cn 研发中心:dev.hqyj.com 集团总部地址:北京市海淀区西三旗悦秀路北京明园大学校内 华清远见教育集团 北京地址:北京市海淀区西三旗悦秀路北京明园大学校区,电话:010-82600386/5 上海地址:上海市徐汇区漕溪路 250 号银海大厦 11 层B区,电话:021-54485127 深圳地址:深圳市龙华新区人民北路美丽 AAA 大厦 15 层,电话:0755-25590506 成都地址:成都市武侯区科华北路 99 号科华大厦 6 层,电话:028-85405115 南京地址:南京市白下区汉中路 185 号鸿运大厦 10 层,电话:025-86551900 武汉地址:武汉市工程大学卓刀泉校区科技孵化器大楼 8 层,电话:027-87804688 西安地址:西安市高新区高新一路 12 号创业大厦 D3 楼5层,电话:029-68785218 广州地址:广州市天河区中山大道 268 号天河广场 3 层,电话:020-28916067