第3章 基于ARM的处理器体系结构1 主讲 马洪连.

Slides:



Advertisements
Similar presentations
《单片机原理及应用》 《微型计算机原理及接口技术 》 授课专业:测控13级 授课学时: 78 学时 理论教学:52学 实验教学:26学时
Advertisements

提高阶段: ——ARM部分 电气工程系 赵志衡.
第一章 微型计算机系统概述 1.1 计算机的发展与应用 微型计算机的发展与分类 微型计算机的应用
教员信息 姓 名:仲崇权 单 位:电子与信息工程学院 电 话: 办公室:创新院大厦720房间 :
嵌入式系统 主讲人: 赵宏伟 学时: 32 吉林大学计算机科学与技术学院.
第 2 章 中央處理單元.
第二部分 嵌入式硬件系统 第2章 嵌入式处理器 第3章 ARM内核与ARM处理器 第4章 嵌入式系统的外围设备.
嵌入式系统与结构 —基于ARM的体系结构和应用开发
基于s3c44B0X嵌入式uCLinux系统原理及应用
NEUSOFT Institute of information Technology .ChengDu
第二章 微型计算机系统 第一节 基本术语和基本概念 第二节 计算机系统的基本构成 第三节 微机系统的硬件组成 第四节 微机系统的软件组成.
第二章 嵌入式处理器.
微型计算机技术及应用 王 健 主讲 授课学时:40学时 大连理工大学计算机系.
第一章 嵌入式系统概况 大连理工大学 马洪连.
计算机组成原理 北京理工大学计算机科学工程系 赵清杰 北京理工大学计算机科学工程系.
微机原理与接口技术 第二章 ARM微处理器硬件结构
第六章 ADS集成开发环境的使用.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
第四章 BootLoader开发 附-s3c2410/s3c2440处理器介绍
ARM体系结构.
ARM及Thumb指令集.
ARM 架构.
第一章 嵌入式系统开发基础 本章介绍了嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基本内容,使读者系统地建立起的嵌入式系统整体概念。
微处理器设计1 刘鹏 College of ISEE Zhejiang University
ARM存储器结构 ARM架构的处理器的存储器寻址空间有4G字节 ,存储空间可以分为 :
主講:王穎聰 電腦與通訊工程學系講師 銘傳大學資訊網路處
嵌入式系统讲义 第3章 ARM指令系统 周国运
第3章 ARM体系结构.
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
5 Computer Organization (計算機組織).
C H A P T E R 8 体系结构对系统开发的支持.
嵌入式系统设计与开发 第1章 概述 第2章 ARM及其编程模型 第3章 ARM指令集 第4章 嵌入式程序设计
嵌入式系统教案 武汉创维特信息技术有限公司 2018/11/27.
ARM CPU從高階語言到Machine Code
嵌入式微处理器系统 第二章 处理器技术(1) 北京大学软件与微电子学院.
College of Computer Science & Technology
微处理器设计2 刘鹏 College of ISEE Zhejiang University
第1章 嵌入式系统概述 嵌入式系统的发展、定义、特点、组成、分类 嵌入式系统硬件核心、软件核心 嵌入式实时操作系统
第4章 汇编语言程序设计 汇编语言源程序格式 汇编语言上机过程 汇编语言与C语言混合编程技术.
嵌入式系統概論-以S3C2440核心為架構 第1章 嵌入式系統概念.
嵌入式体系结构与应用 第三章-ARM指令系统(ARMv4T).
第2章 ARM微处理器硬件结构 计算机体系结构分类 ARM版本及系列 ARM处理器结构 存储系统机制.
1.3 微型计算机的结构和工作原理.
ARM處理器 定址方式.
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
嵌入式系统教案 武汉创维特信息技术有限公司 2019/1/18.
(第2版).
第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块
第2章 ARM体系结构.
ARM 架构.
ARM 架构.
ARM 处理器内核.
ARM及Thumb指令集 (练习).
第2章ARM/THUMB微处理器结构及指令系统
第3章 ARM微處理器的指令集.
ARM Developer Suite 介 绍.
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/18.
ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/29.
微處理機 Microprocessor (100上)
ARM處理器.
ARM简介及BootLoader介绍 黄大荣
第二章ADS1.2开发环境创建与简介.
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
第3章 目录 1.简介 2.ARM7TDMI 3.ARM7TDMI的模块和内部框图 4.体系结构直接支持的数据类型 5.处理器状态
嵌入式系统教案 武汉创维特信息技术有限公司 2019/10/1.
第三章 计算机体系结构.
Presentation transcript:

第3章 基于ARM的处理器体系结构1 主讲 马洪连

3.1 基于ARM架构的嵌入式微处理器 在多媒体技术、网络互连和开放操作系统等方面的应用,是8位机体系结构所难以逾越的障碍,也就正好成为选择32位嵌入式系统的主要理由。 所有的ARM芯片在内核上保持高度的兼容性,这样在学习和开发嵌入式系统中就可以使用通用的开发、调试工具。目前ARM CPU内核里面都有一个Embedded ICE逻辑模块,用于采集CPU总线信号,而对Embedded ICE以及CPU执行单元的通信是通过扫描线来进行的,所有的扫描线都受到测试访问控制端口(TAP)控制,并通过芯片与JTAG接口连接,故可保持不同CPU之间的接口控制的兼容性。调试工具只要支持TAP端口访问,就能进行ARM的系统调试。

32位体系结构的性能优势 (1)寻址空间大 在ARM的体系结构里,所有的资源,如存储器、控制寄存器、I/O端口等都是在有效地址空间内采用统一编址的,方便了程序在不同处理器间的移植。 (2)运算和数据处理强 采用了先进的CPU设计理念、多总线接口(哈佛结构)、多级流水线、高速缓存、数据处理增强等技术,这样几乎所有的通信协议栈都能在32位CPU中轻松实现。使得C、C++、Java等高级语言得到了广泛的应用空间。另外多数的微处理器都包含有DMA控制器,这样就进一步提高了整个芯片的数据能力。

32位体系结构的性能优势 (3)操作系统的支持 如果某个系统需要有多任务的调度、图形化的人机界面、文件管理系统、网络协议等需求,那么就必须使用嵌入式操作系统。一般复杂的操作系统在多进程管理中还需要有硬件存储器保护单元(MPU)或管理单元(MMU)的支持。目前ARM9以上的微处理器均有这些支持,可运行Linux、Win CE和VxWorks等众多操作系统。

3.1.1 基于指令集体系结构的分类版本 ARM架构处理器定义了6种不同的版本: 3.1.1 基于指令集体系结构的分类版本 ARM架构处理器定义了6种不同的版本: V1 版架构: 基本的数据处理指令(无乘法);字节、半字和字的Load /Store 指令;转移指令,包括子程序调用及链接指令;软件中断指令;寻址空间64MB(226 )。 V2 版架构: 在V1版上进行了扩充,例如ARM2和ARM3架构,并增加了以下功能:乘法和乘加指令;支持协处理器操作指令;快速中断模式;SWP/SWPB的基本存储器与寄存器交换指令;寻址空间64MB。

3.1.1 基于指令集体系结构的分类版本 V3版架构: V3 架构对ARM体系结构作了较大的改动,把寻址空间增至32位,增加了当前程序状态寄存器CPSR和存储程序状态寄存器SPSR,以便增强对异常情况的处理。增加了中止和未定义二种处理模式。ARM6就是采用该版架构。 V4版架构: 它在V3版架构上作了进一步扩充,使ARM使用更加灵活。ARM7、ARM8、ARM9 都采用该版结构。增加功能有符号化和半符号化半字及符号化字节的存取指令;增加了16位的Thumb指令集;完善了软件中断SWI指令的功能;处理器系统模式引进特权方式时使用用户寄存器操作;把一些未使用的指令空间扑获为未定义指令。

3.1.1 基于指令集体系结构的分类版本 V5版架构:ARM10 和XScale都采用该版架构。新增指令有:带有连接和交换的转移BLX指令;计数前导零CLZ指令;BBK中断指令;增建了数字信号处理指令;为协处理器增加了更多可选择的指令。 V6版架构:是在低功耗的同时,还强化了图形处理性能,追加有效进行多媒体处理的SIMD功能。于2002年推出,ARM11 采用该架构,具体新增加了以下功能:THUMBTM -35% 代码压缩;DSP扩充-高性能定点DSP功能;JazelleTM- Jova性能优化,可提高8倍;Media扩充-音/视频性能优化,可提高4倍。另外还支持多微处理器内核。

3.1.2 ARM微处理器系列产品及性能简介 1 )系列产品分类 ARM处理器当前有5个产品系列:ARM7、ARM9、ARM9E、ARM10和ARM11。进一步的产品来自于合作伙伴,例如Intel Xscale微体系结构和产品。 ARM7、ARM9、ARM9E和ARM10是4个通用处理器系列。每个系列提供一套特定的性能来满足设计者对功耗、性能、和体积的需求。 ARM11是第5个产品系列,是专门为安全设备而设计的。性能高达1.2MIPS(Xscale微体系结构),功耗测量为μW/MHz,并且所有体系结构兼容。

2)ARM嵌入式微处理器性能简介 ARM公司是嵌入式RISC处理器的知识产权IP供应商,它为ARM架构处理器提供了ARM处理器内核和ARM处理器核。 处理器内核只保持了最基本的组织架构。 处理器核是在最基本的处理器内核基础上增加了Cache、存储器管理单元MMU、协处理器C15、先进微控制器总线架构AMBA接口以及EMT宏单元等部件,这样就构成了ARM处理器核。

MPU的生产厂家简介 由集成电路厂商在处理器内核和处理器核基础上设计,嵌入各种外围和处理部件,形成各种嵌入式微处理器MPU。例如: Intel公司:PXA25X、27X系列微处理器(采用XScale 核); TI公司:OMAP59XX微处理器,(采用ARM+DSP双核); Motorola公司:MX1微处理器MPU(ARM922T核); ATMEL公司:AT91系列MPU(采用ARM7TDMI内核、ARM920T核); Philips公司:IPC2XXX系列(ARM7TDMI内核)等等。

ARM微处理器后缀命名的含义 标志 含义 说明 T 支持Thumb指令集 Thumb指令集版本1:ARMv4T D 片上调试 Debug M 支持长乘法 32位乘32位得到64位,32位的乘加得到64位 I Embedded ICE 在线仿真 E DSP指令 增加了DSP算法处理器指令:16位乘加指令,带符号数的加减法,双字数据操作,cache预取指令 J Java加速器Jazelle 提高java代码的运行速度 S 可综合 提供VHDL或Verilog语言设计文件

说明1:Thumb指令集(T变种) 支持Thumb指令的ARM体系版本,一般加字符T来表示(如V4T)。 目前Thumb指令集有以下两个版本:Thumb 指令集版本1,此版本作为ARM体系版本4的T变种;Thumb指令集版本2,此版本作为ARM体系版本5的T变种。 Thumb指令集的版本2具有以下特点: 通过增加新的指令和对已有指令的修改,来提高ARM指令和Thumb指令混合使用时的效率。 增加了软件断点(BKPT)指令和更严格地定义了Thumb乘法指令对条件码标志位的影响。

其中一条指令完成32位整数乘以32位整数,生成64位整数的长乘操作; 说明2、长乘指令(M变种) M变种增加了两条这样的长乘指令: 其中一条指令完成32位整数乘以32位整数,生成64位整数的长乘操作; 另一条指令完成32位整数乘以32位整数,然后在加上一个32位整数,生成64位整数的长乘加操作。这种长乘的应用场合M变种很适合。

说明3、增强型DSP指令(E变种) 增加处理器对典型DSP算法处理能力的附加指令 : 几条新的完成16位数据乘法和乘加操作的指令; 实现饱和的带符号数的加减法操作的指令; Cache预取指令PLD。 在早期的一些E变种中,未包含双字读取指令LDRD,双字写入指令STRD,协处理器的寄存器传输指令MCRR/MRRC以及Cache预取指令PLD,这种E变种记作ExP,其中x表示缺少,P代表上述的几种指令。

说明4、Java加速器Jazelle(J变种) ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物。 Jazelle技术使得Java代码的运行速度比普通的Java虚拟机提高了8倍,这是因为Jazelle技术提供了Java加速功能,大幅的提高了机器的运行性能,而功耗反而降低了80%。 Jazelle技术使得在一个单独的处理器上同时运行Java应用程序、已经建立好的操作系统和中间件以及其他的应用程序成为可能。 Jazelle技术的诞生使得一些必须用到协处理器和双处理器的场合可以用单处理器代替,这样,既保证了机器的性能,又降低了功耗和成本。 ARM体系版本4TEJ是最早包含了J变种。用字符J表示J变种 。

说明5、ARM媒体功能扩展(SIMD变种) 使处理器的音频/视频处理的性能提高了2~4倍。 可同时进行两个16位操作数或4个8位操作数的运算。 用户可以自定义饱和运算的模式。 可进行两个16位操作数的乘加/乘减运算及32位乘以32位的小数乘加运算。 同时8位/16位选择操作。

3) ARM处理器内核/处理器核的分类 (1) ARM7T和ARM7E Family Unified Cache 内存管理 流水线级别 Thumb DSP Jazelle ARM7TDMI 无 3 有 ARM7TDMI-S ARM710T/720T 8k MMU ARM740T 8k或4k MPU ARM7EJ-S 无 3 有

ARM7TDMI内核 内核 地址 自增器 地址寄存器 寄存器 Bank 解码站 乘法器 读数据 寄存器 桶 移位器 写数据 寄存器 ABE A[31:0] 地址 自增器 地址寄存器 Incrementer P C BIGEND MCLK 寄存器 Bank nWAIT PC Update 指令 解码 nRW A L U B u s MAS[1:0] 解码站 A B u s B u s ISYNC 指令 解压缩 nIRQ 乘法器 nFIQ nRESET 及 ABORT nTRANS 读数据 寄存器 nMREQ 桶 移位器 SEQ 控制 逻辑 LOCK nM[4:0] 写数据 寄存器 nOPC nCPI 32 位 ALU CPA CPB DBE D[31:0] 内核

ARM7微处理器系列主要特点 ARM7微处理器系列为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。其具有如下特点: 具有嵌入式ICE-RT逻辑,调试方便。 极低的功耗(100mW左右),适合对功耗要求较高的应用,如便携式产品。 采用三级流水线。 采用ARM V4指令集。

ARM7微处理器系列主要特点 能够提供0.9MIPS/MHZ的三级流水线结构。 兼容16位Thumb指令集;对操作系统的支持广泛,包括Win CE、Linux等 ;指令系统与ARM9、ARM10E系列兼容,便于用户的产品升级换代;主频通常为20-100MHZ。速度为0.9MIPS/MHz 。 ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器内核。主要性能:工艺0.35um(新近0.25um)、电压3.3V(新近1.2v)、时钟20-133MHZ、功耗87mW。 注:MPU只支持实时操作系统。

ARM7TDMI 带Cache的ARM7TDMI ARM710T 8K 统一的 cache ARM720T JTAG 和非 AMBA 信号 CP15 控制 逻辑 ARM7TDMI 内核 地址 MMU 写 缓冲 AMBA 总线 接口 AMBA 接口 地址 数据 数据写 数据读 Cache ARM7xxT 带Cache的ARM7TDMI ARM710T 8K 统一的 cache 完整的内存管理单元(MMU),支持虚拟地址和存储器保护 写缓冲 ARM720T 同ARM710T,但支持 WinCE ARM740T 8K 统一的 cache 内存管理单元 写缓冲

(2) ARM9 Family Cache 内存管理 流水线级别 Thumb DSP Jazelle ARM9TDMI 无 5 有 16K/16k MMU ARM922T 8k/8k ARM940T 4k/4k MPU

ARM or Thumb Inst Decode ARM9TDMI ARM7TDMI ARM decode Instruction Fetch Thumb®ARM decompress Reg Read Reg Write Shift ALU Reg Select FETCH DECODE EXECUTE ARM9TDMI ARM or Thumb Inst Decode Instruction Fetch Memory Access Reg Write Shift + ALU Reg Decode Reg Read FETCH DECODE EXECUTE MEMORY WRITE 流水线

ARM9TDMI 带Cache的ARM9TDMI ARM9TDMI ARM9xxT ARM920T D Cache 外部 MMU 存储器 2x 16K caches MMU 支持虚拟地址和内存保护 写缓冲 D Cache GLUE 外部 存储器 ARM9TDMI MMU ARM940T 2x 4K caches MPU 写缓冲 I Cache ARM9xxT 带Cache的ARM9TDMI

ARM9TDMI体系结构框图 ARM9TDMI CPU 指令接口 数据地址接口 跟踪接口 数据接口 JTAG 接口 指令地址接口

ARM920T体系结构框图

ARM920T体系结构框图

ARM9微处理器系列主要特点 ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能,在相同的工艺下其性能是ARM7的2倍,具有以下特点: 5级整数流水线,工作频率一般为200MHz左右,提供1.1MIPS/MHZ的哈佛结构。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 采用哈佛体系结构。

ARM9微处理器系列主要特点 全性能的MMU,支持包括WinCE、Linux等操作系统,MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 ARM9是低价、低功耗、高性能系统处理器。 典型产品ARM9TDMI 主要性能:工艺0.25um(新近0.18um)、电压2.5V(新近1.2v)、时钟0-200MHZ、功耗150mW。 ARM9系列主要用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。

ARM9E Family Cache 内存管理 流水线级别 Thumb DSP Jazelle ARM9E-S 无 5 有 4k-1M/4k-1M MPU ARM966E-S ARM968E-S ARM9EJ-S 无 5/6 有 ARM926EJ-S 14k-128k/4k-128k MMU

ARM9E微处理器系列主要特点 ARM9E系列微处理器为综合型处理器,使用单一的处理器内核提供了微处理器、DSP、Java应用系统的解决方案,极大地减少了芯片的面积和系统的复杂程度。具有以下特点:

ARM9E微处理器系列主要特点 支持DSP指令集,应用高速数字信号处理的场合; 5级整数流水线;最高主频可达300MHZ; 支持32位ARM指令集和16位Thumb指令集; 支持32位的高速AMBA总线接口; 支持VFP9浮点处理协处理器; 全性能的MMU,支持包括Win CE、Linux等操作系统,MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 ARM9E系列主要用于下一代无线设备、成像设备、工业控制、存储设备、数字消费品和网用场合。

(3) ARM10E和ARM10T Family Cache 内存管理 流水线 级别 Thumb DSP Jazelle ARM10E 无 6 有 ARM1020E 32k/32k MMU ARM1022E 16k/16k ARM10EJ-S 无 6 有 ARM1026EJ-S 0,4-128k/0,4-128k MMU ARM10TDMI 无 6 有 ARM1020T 32k/32k MMU

ARM10E 系列概述 ARM1020E ARM1022E v5TE架构 CPI  1.3 6 级流水线 静态分支预测 支持新的 VFPv1 结构 ARM1020E 每周期64 位的 LDM / STM操作 EmbeddedICE逻辑 - RT-II 32kB 指令cache和32kB数据cache 支持“Hit under miss” 非阻塞的执行单元 同ARM1020E,除了cache大小为16kB ARM1022E 对SUDL(single user design license )有效

ARM10E微处理器系列主要特点 ARM10E系列微处理器由于采用了新的体系结构,与同等的ARM9处理器相比较,在同样的时钟频率下,性能提高了近50%,同时又大大减少了芯片的功耗,在相同的工艺下其性能是ARM9的2倍。具有以下特点:

ARM10E微处理器系列主要特点 支持DSP指令集,适合高速数字信号处理的场合; 6级整数流水线;工作频率一般为400/600MHz左右; 支持32位ARM指令集和16位Thumb指令集; 支持32位的高速AMBA总线接口; 支持VFP10浮点处理协处理器; 内嵌并行读/写操作部件; 全性能的MMU,支持包括Win CE、Linux等操作系统,MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 ARM10E系列主要用于下一代无线设备、成像设备、工业控制、存储设备、数字消费品和网用场合。

ARM9 vs ARM10 流水线的对比

(4) ARM11 Family Cache 内存管理 流水线级别 Thumb DSP Jazelle 浮点运算 ARM1136J-S 4-64k MMU 8 有 无 ARM1136JF-S ARM1156T2-S 可配置 9 Thumb-2 ARM1156T2F-S

ARM11微处理器系列主要特点 ARM11 是采用ARM V6结构,内部具有8级流水线处理、动态分支预测与返回堆栈。在0.13um工艺下, ARM11TM的运行频率高达1000Mhz。在1.2V电压的条件下其功耗可以低至0.4mW/Mz。 ARM11中另一个重要的结构改进,是静、动组合的跳转予判。 动态预测和静态预测的组合使ARM11处理器能达到85%的预测正确性。 ARM11包含一个64位端口、4种状态的跳转目标地址缓存。新的ARM11支持SIMD指令,可使某些算法的运算的速度提高2-3倍。

ARM11微处理器系列主要特点 ARM V6保持了100%的二进制向下兼容,使用户过去开发的程序可以进一步继承下去。 增加了多媒体处理指令单元扩展,单指令流多数据流(SIMD)。 增加了快速浮点运算和向量浮点运算。 目前ARM公布了三个新的ARM11系列微处理器内核系列,分别是ARM1136J内核、 ARM1156T2内核、 ARM1176JZ内核。

(5)XScale结构 Intel公司发展了新一代代微处理器体系结构就是XScale处理器。XScale处理器是基于ARM v5TE(第5版)体系结构所设计的,具有协处理器接口,可以直接扩展DSP处理器。目前已使用在数字移动电话、个人数字助理和网络产品等场合。 XScale处理器是目前主要推广的一款ARM处理器。

(5)XScale结构 基于XScale PXA250微处理器性能如下: 内核工作频率:100-400MHZ;I-Cache 32KB和D-Cache 32KB;I-MMU + D-MMU (各32路变换后备缓冲器TLB快表);7/8级流水线 系统存储器接口:100MHZ SDRAM;4-256MB SDRAM;支持16-256MB DRAM;4个SDRAM区,每个区支持64MB存储器;支持2个PCMCIA/CF卡插槽。 外围接口:具有16个通道的DMA控制器;LCD控制器(支持被动DSTN和主动TFT显示,最大分辨率800*600*16;系统集成模块(GPIO、中断控制器、PWM);USB,3个UART,红外(FIR)、I2C总线接口、多媒体通信口、动态电源管理技术。

(6)ARM和DSP双核微处理器简介 TI公司的OMAP5910处理器是一款具有DSP(TMS320C55X,175MHZ)+RISC ( ARM925核,175MHZ)的双核定点数字信号运算的微处理器。其具有高速度、低功耗,并提高了编程的灵活性,有利于对产品的软硬件升级,用于实现就有特殊功能的产品。主要特性如下: ARM925核是ARM RISC体系结构的先进代表,工作主频为175MHz。它包括存储器管理单元、16k字节的高速指令缓冲存储器、8k字节的数据高速缓冲存储器和17个字的写缓冲器。片内有192k字节的内部SRAM,可为液晶显示器等应用提供大量的数据和代码存储空间。ARM925核共有13个内部中断和19个外部中断,采用两级中断管理。此外,核内还有ARM CP15协处理器和保护模块。

(6)ARM和DSP双核微处理器简介   DSP子系统中的C55x DSP核具有极佳的功耗性能比,工作主频为150/175MHz。支持无线网络传输与语音数据处理等工作,能提供高效谐振数据处理能力。 C55x DSP核采用了增大的空闲省电区域、变长指令、扩大的并行机制。其结构针对多媒体应用做了高度优化,适合低功耗的实时语音图像处理。 还新增了图像位移预测、离散余弦变换/反变换和1/2像素插值的视频硬件加速器,提高数据处理速度,降低视频处理功耗。 核内还包括32k字的双存取SRAM、48k字的单存以SRAM、16k字的片内ROM和12k字的高速指令缓存。

(7)Power PC架构微处理器简介 Power PC架构的特点是可伸缩性好,方便灵活。Power PC处理器品种很多,既有通用的处理器,又有嵌入式控制器和内核,应用范围非常广泛,从高端的工作站、服务器到桌面计算机系统,从消费类电子产品到大型通信设备等各个方面。 目前Power PC独立微处理器与嵌入式微处理器的主频从25MHz-700MHz不等,它们的能量消耗、大小、整合程度、价格差异悬殊,主要产品模块有主频350MHz-700MHz Power PC 750CX和750CXe以及主频400MHz的Power PC440GP等。

PowerPC系列-MPC555特点: 带有浮点单元的PowerPC内核。 26K字节的快速RAM和6K字节的TPU微码RAM。 5V编程电压的448K字节的flash EEPROM。 5V的I/O系统。 串行系统:基于队列的串行多通道模块,两个CAN2.0B控制器模块。 双定时处理单元(TPU3),模块化I/O系统。 32个模拟量输入:两个基于队列的A/D转换器(QADC64)。 272引脚的PBGA封装。 工作频率40MHz,-40℃~+125℃,双电源供电。

(8)MIPS:简介 MIPS是世界上很流行的一种RISC处理器。 MIPS的意思是“无互锁流水级的微处理器” (Microprocessor without interlocked piped stages)。 其机制是尽量利用软件办法避免流水线中的数据相关问题。 MIPS处理器是由斯坦福(Stanford)大学John Hennery教授领导的研究小组研制出来的。 President of Stanford University, USA Computer architecture book use MIPS as foundation

MIPS:发展历程 1984年MIPS计算机公司成立。 1986年推出R2000处理器。 1988年推出R3000处理器。 1989年 IPO as MIPS Computer Systems, 专注于 workstations 1991年推出第一款64位商用微处理器R4000。 1992年,SGI收购了MIPS计算机公司之后,该公司又陆续推出R8000(于1994年)、R10000(于1996年)和R12000(于1997年)等型号的处理器。 1998年,MIPS脱离SGI成为MIPS Technologies之后IPO,其战略发生变化,把重点放在了嵌入式系统上。

(9)典型的嵌入式处理器(中国) ARM已经与中兴、华为、东南大学、上海集成电路设计中心、中芯国际和大唐电信签订了技术授权协议。国内的微处理器系列有方舟系列 : 方舟1号性能 166MHz,功耗1.2瓦@166MHz,0.25微米CMOS,1层多晶硅,5层金属,封装HS-BGA,272个管脚,27mm*27mm。 方舟2号:性能400MHz,功耗360mW@400MHz,0.18微米CMOS,1层多晶硅,6层金属 封装PBGA,304个管脚,23mm*23mm。 龙芯系列是神州龙芯公司推出的兼顾通用和嵌入式微处理器特点的新一代32微处理器。采用0.18微米CMOS工艺制造,平均功耗0.4W。

3.1.3 ARM微处理器体系结构 1)ARM微处理器结构特征 从编程的角度看,ARM微处理器的工作状态有两种,可在两种状态之间切换: 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。 (2)ARM体系结构的存储器格式 存储器格式是指字、半字、字节在存储器中存放的格式,也反映了它们之间的关系。具体包括有:

处理器工作状态 进入Thumb状态: 进入ARM状态: 执行BX指令,并设置操作数寄存器的状态(位[0])为1。 在Thumb状态进入异常(IRQ, FIQ, UNDEF, ABORT,SWI etc.),当异常处理返回时自动转换到Thumb状态 进入ARM状态: 执行BX指令,并设置操作数寄存器的状态(位[0])为0。 进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态

(2)ARM微处理器存储格式 ARM 的寻址空间是线性的地址空间,为232=4G Bytes 0 to 3 存储第一个word, bytes 4 to 7存储第二个word ARM支持大端(Big-endian)和小端(Little-endian)的内存数据方式,可以通过硬件的方式设置(没有提供软件的方式)端模式

(2)ARM体系结构的存储器格式 大端格式:被存放字数据的高字节存储在存储系统的低地址中,而被存放的字数据的低字节则存放在存储系统的高地址中。 小端格式:与大端存储格式相反,在小端存储格式中,存储系统的低地址中存放的是被放字数据中的低字节内容,存储系统的高地址存放的是被存字数据中的高字节内容。

大端格式(big-endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端格式(low-endian):与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。

举例: 大端的数据存放格式 word a=0x f6 73 4b cd 最高有效字节位于最低地址 最高有效字节的地址就是该word的地址 高地址

举例: 小端的数据格式 word a=0x f6 73 4b cd 最低有效字节的地址就是该word的地址 最低有效字节位于最低地址 低地址 高地址

实例 变量A:word A=0x f6 73 4b cd,在内存中的起始地址为0x b3 20 45 00 变量B:half word B=218,在内存中的起始地址为0x dd dd dd d0 0xb3204500 f6 0xb3204500 cd 73 4b 4b 73 大端: 小端: cd f6 0xddddddd0 0xddddddd0 da 00 00 da

存储单元概念说明: 字(Word):字的长度为32位,而在16位处理器体系结构中,字的长度为16位。 半字(Half-Word):半字的长度为16位,与16位处理器体系结构中字的长度一致。 字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。 ARM体系结构使用232个8位字节的单一、线性地址空间,字节地址为0—232-1;也可以将地址空间看作为由230个32位的字组成,字地址可被4整除,且按字对准。也可以看作成由231个16位半字组成。

字符的存储方式 在图形操作系统中,字符(包括:中文、英文)通常有2种存储方式。 一种方式存储的是字符的图形点阵 另一种方式是存储汉字的矢量图形 在嵌入式处理中,因为处理器的性能和嵌入式系统资源还不如PC机,而且,嵌入式只是针对专一控制而应用的系统。基本上,没有必要使用矢量字库。 为了进一步加快处理速度,在本系统中,保存有12x12、16x16和24x24三种分辨率的点阵字库。

(3)处理器运行模式 ARM微处理器支持7种运行模式,分别为: 用户模式(USR):ARM处理器正常程序执行的模式。 快速中断模式( FIQ ):用于高速数据传输或通道处理用于快速中断服务程序。当处理器的快速中断请求引脚有效,且CPSR(6位)中F位为0时(开中断),会产生FIQ异常。 外部中断模式( IRQ ):用于通用的中断处理,当处理器的外部中断请求引脚有效,且CPSR(7位)中I位为0时(开中断),会产生IRQ异常。系统的外设可通过该异常请求中断服务。 特权模式或管理员模式(SVE):操作系统使用的保护模式。当执行软件中断SWI指令和复位指令时,就进入管理模式,在对操作系统运行时工作在该模式下。

(3)处理器运行模式 数据访问中止模式(ABT):用于虚拟存储器和存储保护,当存储器数据访问无效时就进入该模式 。若处理器数据访问指令的地址不存在或该地址不允许当前指令访问时,也产生数据中止异常。 未定义指令中止模式(UND):用于支持硬件协处理器的软件仿真。当ARM处理器或协处理器遇到不能处理的指令时,就要产生未定义指令异常。用户可使用该异常机制进行软件仿真,即用软件来模拟硬件功能,比如浮点运算。 系统模式(SYS):运行具有特权的操作系统任务。与用户模式共用使用寄存器组,但是其使用权限要比在用户模式下高。

(3)处理器运行模式 除用户模式之外的其他6种处理器模式称为特权模式。在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除系统模式外,其他5种特权模式又称异常模式。 处理器模式可以通过软件进行切换,也可以通过外部中断或者异常处理过程进行切换。大多数用户工作在用户模式下。这时,应用程序不能够访问一些受操作系统保护的系统资源。应用程序也不能直接进行处理器模式的切换。

(3)处理器运行模式 当必须要进行处理器模式切换时,应用程序可以产生异常中断,在异常中断过程中进行模式切换。这种体系结构可以使操作系统控制整个系统的资源。 系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所以的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。

ARM微处理器:CPU模式 User模式 System模式 FIQ模式 IRQ模式 Supervisor模式 Abort模式 程序不能访问有些受保护的资源 User模式 只能通过异常的形式来改变CPU的当前运行模式 与User模式的运行环境一样, 但是它可以不受任何限制的访问任何资源 该模式主要用于运行系统中的一些特权任务。 System模式 特权模式可以存取系统中的任何资源 FIQ模式 IRQ模式 异常模式:主要是在外部中断或者程序执行非法操作时会触发。 Supervisor模式 Abort模式 Undefined模式

2) ARM处理器的寄存器 如ARM处理器共有37个寄存器被分为若干个组(BANK) :30个通用寄存器;6个状态寄存器(1个专用于记录当前状态,5个备用于记录状态切换前的状态);1个程序计数器PC。 ARM处理器有7种不同的处理器模式,在每一种模式下都有一组相应的寄存器与之对应。即在每一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0-R14)、1至2个状态寄存器和程序计数器。在使用的寄存器中,有些是公用的、有些是独立使用的。

ARM的寄存器组织Ⅰ CPSR SPSR-SVC SPSR-abt SPSR-und SPSR-irq SPSR-fiq

ARM的寄存器组织 Ⅱ (1)通用寄存器:包括R0~R15,以及程序计数器PC 。当C和汇编互相调用时,R0 - R3用来传递函数参数,可记为a0- a3。通用寄存器可以分为下面3类: ①无备份寄存器R0~R7,也称为不分组寄存器;即在所有处理器模式下,它们都是同一个物理寄存器,可被同样的访问,没有体系结构所隐含的特殊用途。但正因为如此,在工作在不同处理器模式下,容易造成寄存器中的数据被破坏。

ARM的寄存器组织 Ⅱ ② 备份寄存器R8~R14也被称为分组寄存器;意味着对它们的访问与当前处理器的模式有关。 例如:R8~R12有两组物理寄存器。一组属于快速模式(R8_fiq~R12_fiq),另一组属于其它模式(R8_usr-R12_usr) 。在这两种情况下使用的是不同的物理寄存器。 对于备份寄存器R13和R14,有6组不同的物理寄存器。其中只在用户模式和系统模式共用一组,在其他模式下都是专用的。另外5种对应其他5种处理器模式。采用下标—<mode>来区分各个物理寄存器。

ARM的寄存器组织 Ⅱ 寄存器R13通常作为堆栈指针(SP),每一种模式都拥有自己物理的R13。应用程序应当初始化该R13,使其指向该模式专用的栈地址,这样就使处理程序不会破坏被其中断的程序现场。 寄存器R14又被常称为程序连接寄存器(LR)。每种处理器模式自有的物理R14中,存放当前子程序的返回地址。在子程序中,把R14的值复制到程序计数器PC(R15)中时,子程序即返回。当然,R14也可作为通用寄存器使用。

ARM的寄存器组织 Ⅱ ③ 寄存器R15,又称为程序计数器PC 。它虽然可以作为一般的通用寄存器使用,但是有一些指令在使用R15时有一些特殊限制。如违反了,该指令执行的结果将不可预料。

(2)状态寄存器: 当前程序状态寄存器 CPSR,可以在任何工作模式下被访问; 备份程序状态寄存器SPSR,只有在异常模式下,才能被访问 。 M[4:0] 10000 10001 10010 10011 10111 11011 11111 模式 用户 快中断 中断 管理 中止 未定义 系统

条件标志位 标志位 含 义 N 当两个补码表示的带符号数运算时,N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零; Z 含 义 N 当两个补码表示的带符号数运算时,N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零; Z Z=1 表示运算的结果为零;Z=0表示运算的结果不为零; C 有3种情况会改变C的值: 加法运算(包括比较指令CMN):当运算结果产生了进位时(无符号数上溢出),C=1,否则C=0。 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数下溢出),C=0,否则C=1。 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。 V 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。 Q 在ARM v5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生了溢出。

控制位 标志位 含义 I I=1,表示禁止IRQ中断;否则,表示允许IRQ中断 F F=1,表示禁止FIQ中断;否则,表示允许FIQ中断 T 对于ARM v4以上版本的T系列处理器,T=0,表示执行ARM指令,否则,表示执行Thumb指令; 对于ARM v5以上版本的非T系列处理器,T=0,表示指令ARM指令,否则,表示强制下一条执行的指令产生未定义指令中断。 M[4:0] 处理器工作模式 可访问的寄存器 10000 用户模式 PC,R0~R14,CPSR 10001 快速中断模式 PC,R0~R7,R8_fiq~R14_fiq,CPSR,SPSR_fiq 10010 外部中断模式 PC,R0~R12,R13_irq~R14_irq,CPSR,SPSR_irq 10011 管理模式 PC,R0~R12,R13_svc~R14_svc,CPSR,SPSR_svc 10111 中止模式 PC,R0~R12,R13_abt~R14_abt,CPSR,SPSR_abt 11011 未定义指令模式 PC,R0~R12,R13_und~R14_und,CPSR,SPSR_und 11111 系统模式

ARM微处理器:程序状态寄存器 CPSR(当前程序状态寄存器)在所有的模式下都是可以读写的,它主要包含: 条件标志 中断使能标志 当前处理器的模式 其它的一些状态和控制标志

ARM微处理器:程序状态寄存器 条件标志 中断标志 模式控制位 ARM/Thumb控制标志 Overflow IRQ中断的响应: 置1:禁止响应 置0:允许响应 Carry Zero FIQ中断的响应: 置1:禁止响应 置0:允许响应 Negative 置0表示执行32bit的ARM指令 置1表示执行16bit的Thumb指令

3)ARM微处理器:异常 ARM CPU将引起异常的类型分为7种 异常类型 模式 低向量地址 高向量地址 复位 管理 0x00000000 0xFFFF0000 未定义指令 未定义 0x00000004 0xFFFF0004 软件中断(SWI) 0x00000008 0xFFFF0008 预取中止 (取指令存储器中止) 中止 0x0000000C 0xFFFF000C 数据中止 (访问数据存储器中止) 0x00000010 0xFFFF0010 IRQ(中断) IRQ 0x00000018 0xFFFF0018 FIQ(快速中断) FIQ 0x0000001C 0xFFFF001C

3) ARM处理器对异常的响应 (1)将下一条指令的地址存入相应连接寄存器LR(R14),以便程序在处理异常返回时能从正确的位置重新开始执行。 (2)将CPSR复制到相应的SPSR中,工作模式不同使用的SPSR也不同。 (3)根据异常类型,强制设置CPSR的运行模式位。 (4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

4)异常返回后的处理操作 (1)将连接寄存器LR(R14)的值送到PC中。 MOV PC , LR 或者 BX LR (2)将SPSR复制回CPSR中。

5)异常向量(Exception Vectors) 异常类型 异常向量地址 处理器模式 优先级 复位 0x0000,0000: 管理 1(最高) 未定义指令 0x0000,0004: 未定义 6 软件中断 0x0000,0008: 管理 6 预取中止 0x0000,000C: 中止 5 数据中止 0x0000,0010: 中止 2 保留 0x0000,0014: IRQ 0x0000,0018: 中断IRQ 4 FIQ 0x0000,001C: 中断FIQ 3 当异常出现,使用R14和SPSR用于保存当前断点和状态,以便在异常处理完成后,原来的程序能够重新执行。

3.2 ARM微处理器的指令系统 名词解释:机器指令、伪指令、宏指令 􀂾机器指令被处理器直接执行,伪指令和宏指令不能。机器指令包括ARM指令集和Thumb指令集; 伪指令是在源程序汇编期间,由汇编编译器处理。其作用是为汇编程序完成准备工作; �宏指令在程序中用于调用宏,宏是一段独立的程序代码;在程序汇编时,对宏调用进行展开,用宏体代替宏指令。

1) ARM指令系统概述 (1)指令系统概念 指令:是规定计算机进行某种操作的命令。 (2)ARM指令的特点 指令系统:计算机能够执行的各种指令的集合。 (2)ARM指令的特点 所有指令都是32位的。 大多数指令都在单周期内完成。 所有指令都可以条件执行。 ARM指令为load/store类型。 基本指令仅36条,分成五类。 有7种寻址方式。 指令集可以通过协处理器扩展。

ARM指令是加载/存储(Load/Store)型: 也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。 ARM指令可以分为五大类: 数据处理指令、存储器访问指令、分支指令、协处理器指令、杂项指令。 ARM指令有7种寻址方式: 立即寻址、寄存器寻址、寄存器间接寻址、基址寻址、堆栈寻址 、块拷贝寻址、相对寻址。

(3)ARM指令的格式 ARM指令基本的语法格式为: ARM指令典型的编码格式为: <Opcode> {<cond>}{s} <Rd>, <Rn> {, <Operand2>} Opcode:指令操作码。 cond:指令的条件码。 S:决定指令的操作是否影响cpsr的值。 Rd:目标寄存器编码。 Rn:包含第一个操作数的寄存器编码。 Operand2:第2操作数。 ARM指令典型的编码格式为: (数据处理指令类) 例: ADDS R2,R1,#1 SUBNES R2,R1,#0x20 LDR R0,[R1] Cond Opcode S Rn Rd Operand2 11 12 15 16 19 20 21 24 25 27 28 31 7 8

(4)指令的条件码 条件码的位数和位置:每条ARM指令包含4位条件码域<cond>,它占用指令编码的最高四位[31:28]。 条件码的表示:条件编码共 24 =16 种,其中,15种用于指令的条件码。每种条件码用2个英文缩写字符表示。(见P47 表2-6) 带条件指令的执行:ARM处理器根据指令的执行条件是否满足,决定当前指令是否执行。 只有在cpsr中的条件标志位满足指定的条件时,指令才会被执行。不符合条件的代码依然占用一个时钟周期(相当于一个NOP指令)。 条件码的书写方法:条件码的位置在指令助记符的后面(因此也称为条件后缀)。 例如: MOVEQ R0, R1

指令条件码表 条件码 助记符 含 义 标 志 0000 EQ 相等 Z=1 0001 NE 不相等 Z=0 0010 CS/HS 含 义 标 志 0000 EQ 相等 Z=1 0001 NE 不相等 Z=0 0010 CS/HS 无符号数大于或等于 C=1 0011 CC/LO 无符号数小于 C=0 0100 MI 负数 N=1 0101 PI 非负数 N=0 0110 VS 溢出 V=1 0111 VC 没有溢出 V=0 1000 HI 无符号数大于 C=1且Z=0 1001 LS 无符号数小于或等于 C=0或Z=1 1010 GE 有符号数大于或等于 N=V 1011 LT 有符号数小于 N!=V 1100 GT 有符号数大于 Z=0且N=V 1101 LE 有符号数小于或等于 Z=1或N!=V 1110 AL 无条件执行 任意 1111 保留 v5以下版本总执行,v5及以上版本有用

2)ARM 指令总体介绍 ARM体系结构支持ARM的汇编语言与C与C++的混合编程。一般的在一个完整的程序设计的中,除了初始化部分用汇编语言完成外,其大部分的编程任务一般都用C或C++完成。 寻址方式:立即数寻址、寄存器寻址、寄存器移位寻址、寄存器间接寻址、基址变址寻址、相对寻址、多寄存器寻址、块拷贝寻址、堆栈寻址。

3)ARM指令集 数据处理指令; 􀂾跳转指令; 􀂾Load/Store指令; 􀂾程序状态寄存器指令; 􀂾协处理器指令; 􀂾软件中断指令

3.2.1 ARM 指令的寻址方式 目前ARM指令集支持如下几种常见的寻址方式。 1、立即寻址(立即数寻址) 例如ADD R0,R0,#1 ;R0←R0+1 2、寄存器寻址 例如ADD R0,R1,R2 ;R0←R1+R2 3、寄存器间接寻址 例如ADD R0,R1,[R2] ;R0←R1+[R2] 4、基址变址寻址 例如LDR R0,[R1,#4] ;R0←[R1+4]

3.2.1 ARM 指令的寻址方式 5、多寄存器寻址 一次可以传送几个寄存器的值。允许一条指令传送16个寄存器的任何子集(或所有16个寄存器)。例如: LDMIA R1,{R0,R2,R5} ;R0 ←[R1] R2 ←[R1+4] R5 ←[R1+8] 32位字对准。 6、堆栈寻址 ARM 微处理器支持4种类型的堆栈工作方式。 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。

3.2.1 ARM 指令的寻址方式 7、相对寻址 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。 7、相对寻址 与基址变址寻址方式类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。

3.2.2 ARM微处理器的指令集概述 大量的寄存器,都可用于多种用途; Load-Store体系结构即加载/存储型,指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,对系统存储器的访问则需要通过专门的加载/存储指令来完成。 1)ARM体系结构的主要特征 三地址指令(两个源操作数寄存器和结果寄存器独立设定)。

1)ARM体系结构的主要特征 每条指令都条件执行包含非常强大的多寄存器Load和Store指令。能在单时钟周期执行的单条指令内,完成一项普通的移位操作和一项普通的ALU操作。 能过协处理器指令集来扩展ARM指令集,包括在编程模式下增加了新的寄存器和数据类型。 在Thumb体系结构中以高密度16位压缩形式表示指令集。

2)ARM指令集的分类 (1)数据处理指令:完成寄存器的数据的算术和逻辑操作,在执行中需要两个操作数,产生单个结果。这类指令只能使用和改变寄存器中的值,每一个操作数寄存器和结果寄存器都在指令中独立的指定,即使用3地址模式。 例:ADD R0,R1,R2 ; R0=R1+R2 数据处理指令简介: 算术操作:ADD、ADC、SUB、SBC、RSB(逆向减法)、RSC、MUL、MAL(32位乘加)、SMULL(有符号64位乘法)、SMLAL、UMULL、UMLAL。 如 RSB R0,R1,R2 ;R0=R2-R1 按位逻辑操作:AND、ORR、EOR、BIC(清除位操作)

(1)数据处理指令: 比较操作:CMP、CMN、TST(按位与)、TEQ(按位异或) 寄存器移位操作:LSL、LSR(逻辑右移)、ASL(算术左移)、ASR、ROR(循环右移)、RRX(带扩展循环右移)。 例: ADD R0,R2,R3,LSR #1 ; R0=R2+(R3〈〈1)将R3中的内容左移1位再与R2相加送入R0。

(2)数据传送指令: 这类指令把存储器中的值拷贝到寄存器中(Load)或把寄存器的值拷贝到存储器中(Store) 加载/存储指令:用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。常用的指令如下:LDR(字加载)、LDRB(字节加载)、LDRH(半字加载)、STR(字节存储)、STRH(半字存储)。 批量数据加载/存储指令:批量加载可以一次在一片连续的存储器中的数据传送到多个存储器,批量存储则完成相反的操作。常用的加载/存储指令如下: LDM(批量数据加载)、STM(批量数据存储)。

(3)数据交换指令 数据交换指令:在存储器和寄存器之间交换数据。 SWP(字数据交换)和SWPB(字节数据交换) 程序状态寄存器访问指令; MRS 程序状态寄存器到通用寄存器的数据传送; MSR 通用寄存器到程序状态寄存器的数据传送。

(4)移位指令 移位指令:ARM微处理器内嵌的桶型移位寄存器,支持数据的各种移位操作,一位操作在ARM指令集中部作为单独的指令使用,它只能作为指令格式中的一个字段,在汇编语言中表示为指令的选项。具体为6种类型。 LSL(逻辑左移)、ASL(算术左移)、LSR(逻辑右移)、ASR(算术右移)、ROR(循环右移)、RRX(带扩展的循环右移)。 例如:MOV R0,R1,LSL#2;将R1中的内容左移两位后传送到R0中 。

(5)控制流指令 控制流指令:一般指令在执行时使用存储于连续的存储器地址中的指令。控制流指令使执行切换到不同的地址。切换是永久的或保存返回地址以恢复原来的执行顺序,或者陷入系统代码。 如跳转指令 在ARM程序中有两种方法可以实现程序流程的跳转。使用专门的跳转指令和直接向程序计数器PC写入跳转地址。如 B Lable ;无条件转移到标号地址。

(5)控制流指令 协处理器指令 ARM微处理器可支持多个协处理器。主要用于ARM处理器初始化ARM协处理器的数据处理操作,以及在ARM处理器的寄存器和协处理器的寄存器之间传送数据,和在ARM协处理器的寄存器和寄存器之间传送数据。具体包括5种指令: CDP(操作)、LDC(数据加载)、STC:(数据存储)、MCR(处理器和协处理器寄存器的数据传送)、MRC(处理器和协处理器寄存器的数据传送)。 异常产生指令 ,BKPT(断点中断)。

3)Thumb指令及应用 Thumb是ARM体系结构的扩展。从标准32位ARM指令集抽出来的36条指令格式,重新编成16位的操作码。带来很高的代码密度。在运行时,这些16位的Thumb指令又由处理器解压成32位的ARM指令。 ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集。所有的Thumb指令都有对应的ARM指令,而且Thumb指令的编码模型也对应于ARM的编码模型,在应用程序的编写过程中,只要遵循一定调用的规则,Thumb子程序就可以相互调用。

3)Thumb指令及应用 当处理器执行ARM程序段时,具体存在有处于ARM工作状态和处于Thumb工作状态。 Thumb指令集中的数据处理指令的操作数仍然是32位,指令地址也为32位,但Thumb指令集为实现16位的指令长度,舍弃了ARM指令集的一些特性。如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件的。 由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。

3)Thumb指令及应用 显然若对系统的性能有较高要求时,应采用32位的存储系统和ARM指令集。若对系统的成本及功耗有较高的要求,则应使用16位的存储系统和Thumb指令集。当然若两者结合使用,充分发挥其各自的特点,会取得更好的效果。 Thumb指令集可以看作是ARM指令集的一个子集,Thumb指令长度为16位,但Thumb指令集中的数据处理指令的操作数仍然是32位的,指令寻址地址也是32位的。

Thumb指令集由四大类构成: 数据处理指令; 跳转指令; Load/Store指令; 和软件中断指令。

用ARM汇编语言编写的ARM程序或Thumb程序。 源程序文件 文件名 说 明 汇编程序文件 *.S 用ARM汇编语言编写的ARM程序或Thumb程序。 C程序文件 *.C 用C语言编写的程序代码。 头文件 *.H 为了简化源程序,把程序中常用到的常量命名、宏定义、数据结构定义等等单独放在一个文件中,一般称为头文件。

5)汇编语言上机过程 用ARM汇编语言编写的源程序,要使之运行必须经过以下几个步骤: 编辑汇编源程序,保存为文件名后缀是“.s”的文件; 调用汇编程序对源程序进行汇编,生成目标文件; 连接目标文件,生成可以放进ARM软件仿真器进行调试的映象文件或者可下载到ARM的目标板执行的二进制文件; 对生成的最终文件进行调试。

6)ARM的开发工具SDT2.5和ADS1.2 SDT的英文全称是ARM Software Development Kit ,是ARM公司为方便用户在ARM芯片上进行应用软件开发而推出的一整套集成开发工具包。目前的最新版本是2.5.2,但从版本2.5.1开始,ARM公司宣布推出一套新的集成开发工具ARM ADS ,取而代之。 ARM SDT支持最高到ARM9的所有ARM处理器芯片的开发,包括Strong ARM。

ADS1.2开发环境 ADS1.2 (ARM Developer Suite)提供了创建ARM架构应用系统的完整的软件开发方案,是ARM公司新近推出的一套集成开发环境。用户使用ADS编辑、编译和调试C、C++ 以及汇编程序。ADS开发环境包括: ①代码生成工具(Code Generation Tools) 代码生成工具包括ARM和Thumb指令集的C和嵌入式C++编译器、汇编器和链接器。这些编辑器是工业中针对ARM处理器开发的,能获得比其他开发环境更紧凑的代码密度,以及更小的映像文件。

ADS开发环境 ②Windows平台下的集成开发环境(Code Warrior IDE) ADS提供了强大的Code Warrior IDE 来整合ARM 开发工具,提供了图形接口的项目管理器,极大地方便了用户管理复杂的工程文件,并适合通过网络进行小组开发。同时,Code Warrior IDE 还提供了对第三方调试的接口支持。

ADS开发环境 ③强大的调试器(Debugger) ADS包括以下2个调试器: AXD(ARM eXtended Debugger)。AXD提供了一个专业调试软件所能提供的所有调试功能,包括简单和复杂的断点功能、观察点、支持软件和硬件目标以及便捷的图形界面接口等。 ARMSD(ARM Symbolic Debugger)。ARMSD是一个命令行方式调试器,提供了所有的基本调试功能,包括断点、观察点和软硬件目标的支持等。

ADS开发环境 ④指令集模拟器(Instruction Set Simulator) ADS中的指令集模拟器提供了对ARM和Thumb内核处理器的精确的模拟,允许用户在硬件条件满足前开发和测评(Benchmark)代码。 ⑤基于ROM的调试工具——ARM Firmware Suit ARM Firmware Suit 帮助用户在Integerator系统和其他ARM内核系统上快速建立应用程序和操作系统的整合。

ADS开发环境 ⑥ ARM应用库 ADS中的应用库已经针对ARM和Thumb内核处理器进行了优化,并且提供了不包含在标准C、C++库中的功能函数及代码,给用户的开发提供了方便。 支持各种ARM核和处理器:ARM9E、ARM10、Jazelle、StrongARM和Intel Xscale;完整的在线文档;支持实时调试和跟踪。 代码生成工具、Code Warrior IDE、调试器、指令集模拟器、ARM Firmware Suit和ARM应用库是构成ADS开发环境的主要独立模块,分别实现不同的调试开发功能。

7)汇编语言与C/C++的混合编程 通常有以下几种方式: 在C/C++代码中嵌入汇编指令; 在汇编程序和C/C++的程序之间进行变量的互访;

例子 AREA HelloW,CODE,READONLY ;声明代码区 SWI_WriteC EQU &0 ;输出r0中的字符 SWI_Exit EQU &11 ;程序结束 ENTRY ;代码入口 START ADR r1,TEXT ;r1-“Hello World” LOOP LDRB r0,[r1],#1 ;读取下一字节 CMP r0,#0 ;检查文本终点 SWINE SWI_WriteC ;若非终点,则打印 BNE LOOP ;并返回LOOP SWI SWI_Exit ;执行结束 TEXT = “Hello World”,&0a,&0d,0 END ;程序结束