《嵌入式系统设计》教案.doc

上传人:最*** 文档编号:1259119 上传时间:2019-10-12 格式:DOC 页数:41 大小:1.78MB
返回 下载 相关 举报
《嵌入式系统设计》教案.doc_第1页
第1页 / 共41页
《嵌入式系统设计》教案.doc_第2页
第2页 / 共41页
《嵌入式系统设计》教案.doc_第3页
第3页 / 共41页
点击查看更多>>
资源描述
_嵌入式系统设计教案课程总学时:32讲课学时:24实验学时:8授 课 人:杨词慧南昌航空大学信息工程学院-可编辑修改-目 录1嵌入式系统概述11.1嵌入式系统的基本概念11.2嵌入式系统的发展历史21.3嵌入式系统的体系结构21.4嵌入式处理器31.5嵌入式操作系统41.6嵌入式系统的应用及发展趋势72ARM体系结构82.1ARM设计思想82.2ARM体系结构分析92.3ARM处理器系列112.4ARM处理器模式152.5ARM体系的异常处理162.6ARM内部寄存器182.7ARM体系的存储系统193ARM指令系统及程序设计基础213.1ARM寻址方式213.2ARM指令集243.3Thumb指令集333.4353.5353.6嵌入式系统设计与开发过程364STM32微控制器374.1STM32微控制器的性能指标371 嵌入式系统概述教学目的:使学生对嵌入式系统的基本概念和体系结构、嵌入式处理器、嵌入式操作系统、嵌入式系统的历史、应用及发展趋势有一定的了解。教学重点:嵌入式系统的基本概念、嵌入式处理器和嵌入式操作系统。教学难点:嵌入式系统的体系结构、嵌入式处理器。教学方法与教学手段:课堂讲授,多媒体教学。教学时间:2课时。教学内容1.1 嵌入式系统的基本概念(1) 嵌入式系统的定义先举例说明生活中的各种嵌入式系统设备,如iPhone、小米手机、洗衣机、电压力锅等。IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是用于控制、监视或者辅助操作机器和设备的装置(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。微机学会的定义:嵌入式系统是以嵌入式应用为目的的计算机系统,可分为系统级、板级和片级。a) 系统级:各种类型的工控机、PC104等模块。b) 板级:各种类型的带CPU的主板或OEM产品。c) 片级:各种以单片机、DSP、微处理器为核心的产品。一般定义:嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。(2) 嵌入式系统的特点a) 专用、软硬件可剪裁配置。b) 低功耗、高可靠性、高稳定性。c) 软件代码矮小精悍。d) 代码可固化。e) 实时性。f) 弱交互性。g) 软件开发通常需要专门的开发工具、环境和方法。h) 要求开发、设计人员具有较高的技能。i) 具有较长的生命周期。(3) 嵌入式系统的分类按嵌入式微处理器的位数可分为:4位、8位、16位、32位和64位。按实时性能可分为:非实时系统和实时系统。按软件结构可分为:嵌入式单线程系统和嵌入式事件驱动系统。按应用领域可分为:信息家电类、消费电子类、医疗电子类、移动终端类、通信类、汽车电子类、工业控制类、航空电子类、军事电子类等。1.2 嵌入式系统的发展历史(1) 以单芯片为核心的可编程控制器形成的系统1971年11月,Intel推出Intel 4004。随后出现Intel 8080/8085、8086、Motorola的6800、68000,Zilog的Z80、Z8000。以微处理器为核心构成的系统单板机:Intel的iSBC系列、Zilog的MCB等将计算机做在一个芯片上,大部分应用于专业性强的工业控制系统中,没有操作系统的支持,系统结构和功能相对单一,处理效率较低,存储容量较小。(2) 以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统CPU种类繁多,通用性较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。(3) 以嵌入式操作系统为标志的嵌入式系统嵌入式操作系统可运行于各种不同类型的微处理器上,兼容性好;操作系统内核小,效率高;具备文件和目录管理,支持多任务、网络应用,具备图形窗口和用户界面;有大量的应用程序接口API。(4) 以Internet为标志的嵌入式系统嵌入式设备与Internet的结合。1.3 嵌入式系统的体系结构(1) 体系结构(2) 硬件层l 嵌入式处理器:ARM、DSP、FPGAl 存储器系统:ROM、FLASH、SDRAMl 中断控制器、DMAC、定时器/计数器、UART、USB控制器、LCD控制器等l I/O接口:USB、I2C、SPI、CAN等(3) 中间层l 硬件抽象层(Hardware Abstraction Layer, HAL)。位于操作系统内核与硬件电路之间的接口层,隐藏硬件接口细节。l 板级支持包(Board Support Package, BSP)。为上层的驱动程序提供访问硬件设备寄存器的函数包。l 设备驱动程序1.4 嵌入式处理器(1) 嵌入式处理器的分类中高端的嵌入式微处理器(Embedded Micro-Processor Unit, EMPU)低端的微控制器(Microcontroller Unit, MCU)DSP处理器(Digital Signal Processor, DSP)高度集成的片上系统(System on Chip, SoC)(2) 嵌入式微处理器由通用计算机中的CPU演变而来,只保留与嵌入式应用紧密相关的功能硬件,在工作温度、抗电磁干扰、可靠性、功耗等方面做了各种增强。主要的嵌入式处理器类型:ARM、MIPS、PowerPC、68000系列等。特点a) 在设计中考虑低功耗。b) 采用可扩展的处理器结构。处理器内部留有很多扩展接口。c) 具有很强的存储区保护功能。d) 提供丰富的调试功能。e) 对实时任务具有很强的支持能力。(3) 微控制器俗称单片机,将整个计算机系统集成到一块芯片中。以一种微处理器为核心,芯片内部集成Flash、RAM、总线逻辑、定时器/计数器、I/O口、串行口、PWM、A/D、D/A等。最早的单片机: 1976年,Intel的8048,Motorola的68HC05、Zilog公司的Z80.(4) DSP处理器对系统结构和指令进行了特殊设计,使其适合DSP算法高效乘累加运算、超标量操作、指令流水线高效数据存取、硬件重复循环确定性操作(程序执行时间可预测)应用场合:音视频编解码、数字滤波、FFT等(5) 片上系统将整个系统做在一个芯片上优点a) 通过改变内部工作电压,降低芯片功耗b) 减少芯片对外的引脚数,简化制造过程c) 减少外围驱动接口单元及电路板之间的信号传递,加快微处理器数据处理的速度d) 内嵌线路可避免信号传递时所造成的系统杂讯联发科推出28nm双核处理器MT6572a) 代号武松,基于Cortex-A7架构b) 主频为1.2GHzc) 处理器上整合了Wi-Fi、FM收音机、GPS以及蓝牙四种功能d) 支持500万像素摄像头(6) 嵌入式处理器的发展趋势a) 内部结构SoC设计,与DSP、Flash、FPGA融合;性能更强,集成更多的功能部件;双核或多核结构b) 功耗更低c) 可靠性更高d) 支持ISP、ISD1.5 嵌入式操作系统(1) 操作系统的概念及功能操作系统。是一组计算机程序的集合,用来有效地控制和管理计算机的硬件和软件资源,并为用户提供方便的应用接口。功能:处理器管理;存储器管理;设备管理;文件管理;用户接口(2) 操作系统的分类按程序调度的方法分为l 顺序操作系统。只含一个运行程序,独占CPU时间,顺序执行。如DOS系统。l 分时操作系统。系统内同时有多道程序运行。如Unix系统。l 实时操作系统。从应用角度,嵌入式操作系统可分为l 面向低端信息家电l 面向高端信息家电l 面向个人通信终端l 面向通信设备l 面向汽车电子l 面向工业控制从实时性的角度,嵌入式操作系统可分为l 具有强实时特点的嵌入式操作系统l 具有弱实时特点的嵌入式操作系统l 没有实时特点的嵌入式操作系统(3) 实时操作系统(RTOS)是具有实时性且能支持实时控制系统工作的操作系统,首要任务是调度一切可利用的资源来完成控制任务。对现场不停监测,一旦有事件发生能立即处理。与通用OS的区别:实时性,代码尺寸小。一般包括以下几个重要组成部分:l 实时内核:任务管理、定时器管理、存储器管理、任务间通信与同步等。l 网络组件l 文件系统l 图形用户界面IEEE的Unix委员会规定了实时操作系统须具备以下几个特点:l 支持异步事件的响应。l 中断和调度任务的优先机制。l 支持指令性计划占式调度。l 支持同步。(4) 常见的嵌入式操作系统嵌入式Linuxl 实时的嵌入式Linux:如RT-Linux、KURT-Linux等。 RT-Linux将通常的Linux任务优先级设为最低。l 一般的嵌入式Linux:如CLinux。l 开源,内核小、效率高,可定制C/OS和C/OS-IIl C/OS-II (MicroController Operating System) 是由Jean J. Labrosse开发的实时操作系统内核。l 已被移植到Intel、ARM、Motorola等公司的81种不同的处理器上。l Labrosse用一年时间开发了C/OS实时操作系统; 1992年在Embedded System Programming上 发表介绍文章,并公布源代码;1993年写了C/OS, The Real-Time Kernel;书及源码推动了C/OS-II的发展。l C/OS-II只是一个实时操作系统的内核,全部核心代码只有8.3 KB。l 只包含进程调度、时钟管理、内存管理和进程间的通信与同步等基本功能。Windows CEl 多线程、完整优先权、多任务的32位嵌入式操作系统。l 基本内核大小至少为200KB。VxWorksl 美国WindRiver公司于1983年设计l 是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。l 拥有良好的持续发展能力和高性能的内核及友好的用户开发环境。l 支持多种处理器,如ARM、x86、i960、SunSparc、MIPS RX000、PowerPC、StrongARM等。l 以良好的可靠性和实时性,广泛应用在通信、军事、航空、航天等领域。l 应用案例:美国F-16、FA-18战斗机,B-2隐形轰炸机,“爱国者”导弹,1997年4月在火星登陆的火星探测器。Palm OSl 32位嵌入式操作系统,由3Com公司的Palm Computing部门开发。l 在掌上电脑和PDA市场上占有很大的市场份额,曾占据90%的PDA市场份额。l 2010年04月29日惠普12亿美元收购PalmQNXl 一个实时、可扩充的操作系统。l 部分遵循POSIX(可移植操作系统接口)相关标准。l 内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理。l 内核非常小巧(QNX4.X约为12KB),运行速度极快。iOSl 苹果推出,基于Darwinl 最新:iOS8Androidl Google开发的基于Linux平台的开源手机操作系统Delta OSl 是电子科技大学实时系统教研室和北京科银京成技术有限公司联合研制并开发的全中文嵌入式操作系统。l 绝大部分代码由C语言编写。l 已成功应用于通信、网络、信息家电等多个应用领域。pSOSISI公司研发的产品。模块化、高性能、完全可扩展。1.6 嵌入式系统的应用及发展趋势(1) 嵌入式系统的应用领域l 消费电子领域l 通信网络领域l 工业控制领域、机器人领域l 交通管理与汽车电子领域l 国防与航空航天领域l 医疗仪器领域(2) 嵌入式系统的发展趋势l 小型化、智能化、网络化、可视化l 多核技术的应用l 低功耗、绿色环保l 云计算、可重构、虚拟化等技术被进一步应用到嵌入式系统中l 嵌入式系统软件将逐渐PC化l 融合趋势n 微控制器MCU与SoC的结合n 微控制器MCU与DSP的结合n ARM与DSP的结合n 微控制器MCU与CPLD/FPGA的结合l 安全性2 ARM体系结构教学目的:使学生对ARM设计思想、ARM处理器系列、ARM体系结构、ARM处理器模式、ARM内部寄存器、ARM体系的存储系统有一定的了解。教学重点:ARM设计思想、ARM体系结构、ARM处理器模式、ARM内部寄存器。教学难点:ARM处理器模式、ARM内部寄存器。教学方法与教学手段:课堂讲授,多媒体教学。教学时间:4课时。教学内容2.1 ARM设计思想(1) RISC传统的CISC (Complex Instruction Set Computing)指令集中,约20%指令占整个程序代码的80%。RISC (Reduced Instruction Set Computing) 是一种设计思想,其目标是设计出一套能在高时钟频率下单周期执行、简单而有效的指令集。RISC设计重点在于降低硬件执行指令的复杂度,而传统的CISC更侧重于硬件执行指令的功能性,使CISC指令变得复杂。(2) RISC设计思想的实现l 指令集。减少了指令种类,指令只实现简单的功能,指令长度固定。l 流水线。指令的处理过程被拆分成几个更小的、能够被流水线并行执行的单元。l 寄存器。更多通用寄存器,可存数据和地址,可为所有数据操作提供快速的局部存储访问。l load-store结构。处理器只处理寄存器中数据,用load和store指令完成寄存器和外存间的数据传送(3) ARM的设计思想l 较小的核。降低功耗l 高的代码密度。考虑成本和物理尺寸限制l 较小的处理器内核管芯 (Die) 面积。留给外设电路的空间较大l 硬件调试技术(4) ARM微处理器的特点l 体积小,功耗低,成本低,性能高;l 支持Thumb/ARM指令集,兼容8/16位器件; l 大量使用寄存器,指令执行速度更快;l 大多数数据操作都在寄存器中完成;l 寻址方式灵活简单,执行效率高;l 指令长度固定。2.2 ARM体系结构分析(1) 包含典型 的RISC 体系结构特征l 统一寄存器文件加载/存储体系结构,数据处理操作只针对寄存器内容;l 简单寻址模式,所有加载/存储地址只通过寄存器内容和指令字段确定。l 指令长度固定,简化了指令译码。(2) 还提供l 可组合使用转换与算术或逻辑运算指令l 自动递增和自动递减寻址模式,可优化程序循环l 加载存储多个指令以最大化数据吞吐量l 几乎所有指令都采取条件执行的方式(3) 普林斯顿结构和哈佛结构普林斯顿结构:也称冯诺伊曼结构,它将程序指令存储器和数据存储器合并在一起的存储结构。ARM7系列基于普林斯顿结构。哈佛结构:将程序指令存储和数据存储分开的存储结构。ARM9系列之后都基于哈佛结构。(4) 流水线ARM7的三级流水线在执行单元完成了大量的工作,执行单元的工作往往占用多个时钟周期,从而成为系统性能的瓶颈。ARM9采用哈佛架构,避免了数据访问了取指的总路线冲突,采用五级流水线设计。五级流水线技术把三级流水线中的执行单元进一步细化,减少了在每个时钟周期内必须完成的工作量,进而允许使用较高的时钟频率。无论三级流水线还是五级流水线,在以下情况下都会发生阻塞:l 多周期指令、跳转分支指令l 中断发生l 相邻指令之间的寄存器冲突:如果当前指令(A)的目的操作数寄存器和下一条指令(B)的源操作数寄存器一致,B指令就需要等A回写之后才能译码。(5) ARM体系结构的版本2.3 ARM处理器系列(1) ARM处理器系列l 经典ARM处理器:ARM7、 ARM9、 ARM10、 ARM11l Cortex-A系列处理器:Cortex-A15、Cortex-A9、Cortex-A8、Cortex-A7、Cortex-A5l Cortex-R系列处理器:Cortex-R7、Cortex-R5、Cortex-R4l Cortex-M系列处理器:Cortex-M4、Cortex-M3、 Cortex-M1、 Cortex-M0+、 Cortex-M0、CMSDK、CMSISl SecurCore处理器(2) ARM内核版本命名规则(3) ARM7系列微处理器a) 主要特点l 最高主频:130MIPS(Million Instructions Per Second);l 功耗低;l 代码密度高,兼容16位的微处理器;l 可得到广泛的操作系统和实时操作系统支持;l 众多的开发工具,优秀的调试机制;l 采用3级流水线结构;l 提供0.25m、0.18m和0.13m的生产工艺。b) 冯诺伊曼结构:数据和指令使用同一条总线。c) 包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T四种类型,适用于不同的市场要求d) ARM7TDMIl ARM公司最早为业界普遍认可并广泛应用的处理器核。l T:Thumb;D:Debug;M:Multiplier;I:Embedded ICE logic。e) ARM7TDMI-Sl 是ARM7TDMI的可综合 (synthesizable) 版本(软核)。l ARM以“软”核的方式把ARM7TDMI核授权给处理器厂商,处理器厂商可进行修改和综合。这就是ARM7TDMI-S。l 综合出的整个核比“硬”核大50%,电源效率降低50%。f) ARM7EJ-Sl 是可综合的、带有增强型DSP(E变种)和Java加速功能(J变种)的32位RISC嵌入式处理器 。l 主要用于数字音频播放器、带Java功能的无线手持设备、喷墨打印机、数码相机和PDA等方面。g) ARM720Tl 专为使用Windows CE、Symbian OS操作系统平台设计。l 主要用于数字音频播放器、喷墨打印机和数码相机等。(4) ARM9系列微处理器a) 主要特点l 5级整数流水线;l 单一的32位AMBA (Advanced Microcontroller Bus Architecture) 总线接口;l MMU支持Windows CE、Symbian OS、Linux等;l 支持实时操作系统,包括VxWorks;l 统一的数据Cache和指令Cache;l 提供0.25m、0.18m和0.13m的生产工艺。b) 包括ARM9TDMI、ARM920T、ARM940T和ARM9E四种类型。后三种含有Cache。c) 采用Harvard体系结构l 指令与数据分开存储。l 采用指令快存 和数据快存。d) 在相同工艺条件下,ARM9TDMI的处理能力是ARM7TDMI的两倍。e) ARM920Tl Motorola MC9328MX1和Samsung S3C2410X处理器都采用ARM920T 核心。l 主要应用于通信终端、3G基带和应用处理器、基于OS的平台设备、数码相机、音频/视频解码和机顶盒等。f) ARM940Tl 与ARM920T相比,实现了一个更小的D-Cache、I-Cache和MPU。适于不需运行操作系统的平台。g) ARM9El 使用单一的处理器核,提供微控制器、DSP、Java应用系统的解决方案;l DSP指令集;l 在0.13m工艺下,主频可达300MIPS的性能;l 集成实时跟踪调试功能;l 可选的VFP9浮点处理协处理器;l 高性能的AHB (Advanced High performance Bus)。(5) ARM10系列微处理器a) 主要特点l 6级流水线;l 在典型的0.13m工艺下,主频可达400MIPS的性能;l 单一的32位AMBA 总线接口;l MMU支持Windows CE、Symbian OS、Linux等;l 统一的数据Cache和指令Cache;l 提供0.25m、0.18m和0.13m的生产工艺;l 并行读取/写入部件。b) 包括:ARM1020、ARM10200、ARM1020E、ARM1022E、ARM1026EJ-S。c) 使用ARM10TDMI处理器核,采用ARMv5T结构。d) ARM10TDMIl 在相同工艺条件下,处理能力是ARM9TDMI的两倍;l 采用提高时钟频率、6级流水线、转移预测逻辑、64位存储器和无阻塞的存/取逻辑等措施提升性能。e) ARM10E。新节能模式,64位Load/Store体系,与ARM10TDMI相比具有的特点l DSP指令集;l 可选的VFP10浮点处理协处理器;l 在实时控制和三维图像处理时,主频可达650MFLPS (百万次浮点运算每秒)。(6) ARM11系列微处理器l ARM1156T2-S内核、 ARM1156T2F-S内核、 ARM1176JZ-S内核和ARM11JZF-S内核l ARM1156T2-S内核和 ARM1156T2F-S内核l 基于ARM v6指令集体系结构;l 是首批含有ARM Thumb-2内核技术的产品。(7) Cortex-A系列微处理器l 适于高计算要求、运行丰富操作系统及提供交互媒体和图形体验的应用领域。l 支持传统 ARM、Thumb指令集和新的高性能紧凑型 Thumb-2 指令集。l 移动互联网的支持 n 低功率设计,支持 Adobe Flash 10.1n 高性能 NEON 引擎,广泛支持媒体编解码器l 高性能n Cortex-A15:为新一代移动基础结构应用和无线基础结构应用提供高性能的解决方案。n Cortex-A9。800 MHz - 2 GHz 的频率,作单核处理器或 1-4 核多核合成处理器,每内核可提供 5000 DMIPS 的性能。n Cortex-A8。单核解决方案,可提供经济有效的高性能,在 600 MHz - 1 GHz 的频率下,提供的性能超过 2000 DMIPS。n Cortex-A5 低成本实现,在 400- 800 MHz 的频率下,提供的性能超过 1200 DMIPS,是尺寸最小、功耗最低的 ARM 多核处理器。l 多核技术:Cortex-A15、Cortex-A5和Cortex-A9 处理器都支持 ARM 第二代多核技术。l 高级扩展n Thumb-2,提供最佳代码大小和性能。n TrustZone,安全扩展,提供可信计算。n Jazelle 技术,提高执行环境(如 Java、.Net、MSIL、Python 和 Perl)速度。(8) Cortex-R系列微处理器l 为具有严格的实时响应限制的深层嵌入式系统提供高性能计算解决方案。n 快速。以高时钟频率获得高处理性能。n 确定性。处理在所有场合都必须符合硬实时限制。n 安全。系统必须可靠且可信。n 成本效益。在处理器及其内存系统中都具有竞争力的成本和功耗。l 应用领域n 智能手机n 企业系统:硬盘驱动器、联网和打印n 消费电子:机顶盒、数字电视和播放器n 医疗行业、工业和汽车行业的可靠系统l 功能集(9) Cortex-M系列微处理器l 向上兼容的高能效、易于使用的处理器l 针对成本和功耗敏感的 MCU 和终端应用的混合信号设备进行过优化。l 更低的功耗,更长的电池寿命。l 高密度指令集,更小的代码,更低的硅成本。(10) SecurCore系列微处理器l 为安全要求较高应用设计。智能卡n SIM、ID、银行业、付费电视、公共交通、电子政务2.4 ARM处理器模式(1) 32位ARM处理器工作状态32位ARM处理器有三种工作状态l ARM状态。对应32位ARM指令集l Thumb状态。对应16位Thumb指令集l Jazelle状态。对应8位的Jazelle指令集用于在处理器指令层次对JAVA加速只有进入特定的状态,相应的指令集才有效。CPSR的J(Jazelle)和T(Thumb)位反映程序的状态。Thumb-2l 与现有 ARM 和 Thumb 解决方案向后兼容,同时扩展了 Thumb 指令集的可用功能;l 使用少于 31% 的内存以降低系统成本;l 提供比现有高密度代码高出 38% 的性能。(2) 64位ARM处理器工作状态ARMv8架构两种主要执行状态:AArch64, AArch32AArch64:引入了一套新的指令集“A64”专门用于64位处理AArch32:兼容现有的32位ARM指令集ARMv8架构支持三个主要指令集A32(或 ARM):32 位固定长度指令集T32 (Thumb):以 16 位固定长度指令集的形式引入,在引入 Thumb-2 技术时增强为 16 位和 32 位混合长度A64:提供与 ARM 和 Thumb 指令集类似功能的64位固定长度指令集(3) ARM处理器运行模式l 用户模式(usr):ARM处理器正常的程序执行状态。l 快速中断模式(fiq):用于高速数据传输或通道处理l 外部中断模式(irq):用于通用的中断处理。l 管理模式(svc):操作系统使用的保护模式。l 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。l 系统模式(sys):运行具有特权的操作系统任务。l 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。运行模式可通过软件改变,也可通过外部中断或异常处理改变。用户模式之外的模式称为非用户模式或特权模式。除用户模式和系统模式之外的5种称为异常模式,常用于处理中断和异常、访问受保护的系统资源等情况。2.5 ARM体系的异常处理(1) ARM体系中3种控制程序执行流程的方式:l 顺序执行l 跳转分支指令l 异常中断:处理器暂时中断当前数据流的现象。(2) 对异常的响应。 ARM处理器执行完当前指令后:l 进入与特定的异常相应的操作模式;l 将引起异常指令的下一条指令的地址保存到新模式的R14中;l 将CSPR原值保存到新模式的SPSR中;l 通过设置CSPR的第7位来禁止IRQ。如果为FIQ中断,则还要设置CSPR的第6位来禁止FIQ;l 给PC强制赋向量地址值。(3) 中断向量表指定了异常中断及其处理程序的对应关系,它通常存放在存储地址的低端。大小为32字节,其中每个异常中断占据4字节空间,用于存放一个跳转指令或者一个向PC寄存器中赋值的指令。(4) 异常优先级:当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断。(5) 从异常返回将连接寄存器LR的值减去相应偏移量后送到PC中;将SPSR复制回CPSR中;若在进入异常处理时设置了中断禁止位,则要清除。通过普通指令控制PC返回软件中断的返回指令MOVSR15, R14;将链接寄存器内容移入PC并转换模式IRQ,FIQ和预取异常终止中断的返回指令SUBSR15, R14, #4数据终止异常的返回指令SUBSR15, R14, #8; 异常在导致异常的指令的下一条指令后产生2.6 ARM内部寄存器(1) 寄存器结构32位ARM有31个32位通用寄存器,6个状态寄存器。通用寄存器可用来保存数据和地址信息,用R为前缀加寄存器序号表示15个通用寄存器(R0R14)、一个或两个状态寄存器及程序计数器可在任意时间和处理器模式下被访问,有些处理器模式拥有自身独立的寄存器(2) 通用寄存器分成三类:R0R7:未分组寄存器。每个未分组寄存器在所有的处理器模式下都表示同一个物理寄存器。R8R14:分组寄存器。每个分组寄存器与一个用户模式的寄存器对应。R15:程序计数器PC。分组寄存器R8R14可分为两组:R8R12:每个寄存器对应两组不同的物理寄存器,一组是FIQ模式下的,记为R8_fiqR12_fiq, 另一组是除FIQ模式外的:R8_usrR12_usr。R13R14:分别对应6个不同的物理寄存器。用户模式和系统模式共用一个寄存器,另外5个对应其余5种。R13 _ R14 _ 可以是以下几种模式之一:usr、svc、abt、und、irq和fiq。R13:被称为堆栈指针SP,但没有任何指令强制性使用R13作为堆栈指针R14又被称为链接寄存器LR(Link Register)。当调用子程序时,返回地址被自动保存到R14。由于ARM采用了多级流水线技术,所以当正常读取PC值时,该值为当前指令地址值加8,或是加12。2.7 ARM体系的存储系统(1) 地址空间将存储器看作是从零地址开始的字节的线性组合0-3字节:第1个存储的字数据4-7字节:第1个存储的字数据依次排列(2) 存储器格式大端格式小端格式(3) 存储器访问对准无论取指还是内存访问都以字、半字或字节对准访问a) 非对齐的指令预取操作ARM状态:将一个非对齐地址写入PC,数据的第0位和第1位被忽略,PC的bit1:0为0Thumb状态:数据的第0位被忽略,PC的bit0为0b) 非对齐地址内存的访问操作(LOAD/STORE操作)执行结果不可预知忽略字单元地址低两位的值,半字单元最低位的值(分别对应访问字和半字)在LDR和SWP指令中,对存储器访问忽略造成地址不对齐的低地址位,然后使用这些低地址位控制装载数据的循环3 ARM指令系统及程序设计基础教学目的:使学生对ARM指令系统及程序设计的基础知识有一定的了解。教学重点:ARM指令系统。教学难点:ARM程序设计的基础知识。教学方法与教学手段:课堂讲授,多媒体教学。教学时间:4课时。教学内容3.1 ARM寻址方式(1) 寻址方式处理器根据指令中给出的地址信息寻找物理地址的方式。寻找操作数或操作数地址的方式。(2) 立即寻址也叫立即数寻址,操作数本身在指令中给出,该操作数被称为立即数。例如:ADDR0, R0, #1; R0R0+1立即数须以“#”为前缀,对于十六进制表示的立即数,还需在“#”后加上“0x”或“&”。(3) 寄存器寻址操作数存在寄存器中。例如:ADDR0, R1, R2; R0R1+R2(4) 寄存器间接寻址以寄存器的值作为操作数地址。例如:ADDR0, R1, R2; R0 R1+R2(5) 基址变址寻址a) 基址加偏移的寻址方式将寄存器内容与指令中给出的地址偏移量相加,得到操作数的有效地址。如:LDRR0, R1, #4; R0 R1+4前变址:基址加变址作为操作数地址。后变址:基址作为操作数的地址,传送后自动更新基址寄存器的值。b) 基址加索引的寻址方式将基址寄存器的值与索引寄存器的值相加,形成操作数的有效地址。例如:LDRR0, R1, R2 ; R0 R1+R2c) 多寄存器寻址一条指令可完成多个(最多16个)寄存器值的传送。例如:LDMIA R0, R1, R2, R4; R1 R0; R2 R0+4; R4 R0+8(6) 寄存器移位寻址操作数为寄存器中数做相应的移位而得到例如:ARM中的移位或循环移位操作:l LSL:逻辑左移(Logical Shift Left)l LSR:逻辑右移(Logical Shift Right)ADDR0, R1, R2, LSL #3; R0R1+8R2l ASR:算术右移(Arithmetic Shift Right)。移位过程中保持符号位不变,若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。l ROR:循环右移(Rotate Right)。从字的最低端移出的位依次填入字的高端空出的位。l RRX:扩展的循环右移(Rotate Right Extended )。操作数向右移一位,左侧空位由状态寄存器C位填充。当移位的类型为RRX时,无需指定移位的位数,其它的则须指定移位的位数。(7) 相对寻址以PC当前值作为基地址,指令中的地址标号作为位移量,两者相加后得到操作数的有效地址。例如:BLNEXT ; 跳转至子程序 NEXTNEXTMOVPC, LR ; 从子程序返回(8) 堆栈寻址a) 堆栈:按先进后出(FILO)的方式工作,使用堆栈指针(Stack Pointer, SP) 指示当前操作位置。b) 根据栈指针的指向位置可将堆栈分为l 满堆栈:SP指向最后压入堆栈的数据。l 空堆栈:SP指向下个将放入数据空位置c) 根据堆栈的生成方式可将堆栈分为l 递增堆栈(Ascending Stack):堆栈由低地址向高地址生成。l 递减堆栈(Descending Stack) :由高地址向低地址生成。d) ARM支持四种类型堆栈工作方式满递增堆栈:SP指向最后压入的数据,且由低地址向高地址生成。满递减堆栈:SP指向最后压入的数据,且由高地址向低地址生产。空递增堆栈:SP指向下个将放入数据的空位置,且由低地址向高地址生成。空递减堆栈:SP指向下个将要放入数据的空位置,且由高地址向低地址生成。3.2 ARM指令集(1) ARM指令集分类加载/存储指令数据处理指令分支指令状态寄存器访问指令异常/中断指令协处理器指令(2) ARM指令的特点所有指令都是32bit;大多数指令都在单周期内完成;所有指令都可以条件执行;load/store体系结构;指令集可以通过协处理器扩展。(3) ARM指令的格式(4) ARM指令的条件执行所有ARM指令都可包含一个可选的条件码,只有当CPSR中条件标志位满足指定条件时,指令才会被执行。否则以NOP指令通过流水线。(5) 加载/存储指令Load:将内存中数据装载到寄存器Store:将寄存器中的数据存入内存a) 单寄存器传输指令 B Rd, addressing1 SB | H | SHRd, addressing2 B Rd, LABELLDR/STR指令:寄存器在前,地址在后LDM/STM指令:地址在前,寄存器在后LABEL:相对PC的寻址方式。编译器在汇编时,会将标号LABEL汇编成PC的偏移量存入该指令的立即数字段。B: Byte;S: Sign;H: HalfLDR/STR:读/写一个32bit字到/从一个32位寄存器,要求读/写地址字对齐。LDRB:内存8bit字节32bit寄存器;不要求地址对齐,寄存器高24位清零。STRB:寄存器低8位内存的某个地址;不要求地址对齐。LDRH:16bit半字 32bit寄存器;要求地址半字对齐,寄存器的高16bit清零。STRH:寄存器低16bit内存;要求地址半字对齐。LDRSH:有符号16bit半字32bit寄存器中;要求地址半字对齐,寄存器高16bit根据符号位扩展。LDRSB:有符号8bit字节32bit寄存器中;不要求地址对齐,寄存器高24bit根据符号位扩展。“数据”一列指的是这条指令所访问的存储单元“基址寄存器”一列的内容是指执行指令之后“基址寄存器”的内容b) 多寄存器传输指令 Rn!, LDM / STM:从由基址寄存器指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据。!:表示执行完操作后将变化之后的地址值写入基址寄存器:对于LDM操作,如恢复的寄存器中含有PC(R15)寄存器,则指令执行的同时CPU自动将SPSR拷贝到CPSR中,例如:LDMFDR0-R12, LR, PC数据的传送发生在User用户模式下的寄存器,而非当前模式寄存器,例如:LDMDBSP, R0 - LR例如:STMIA R0!, R1-R5;以R0为地址指针,将R1-R5保存到内存,指针向上移动c) 交换指令SWP B Rd, Rm, RnSWP:字交换;SWPB:字节交换Rd Rn, Rn Rm例如:SWP R1, R2, R3; R1R3 ,R3 R2SWP R1, R1, R2; R1与R2内容互换(6) 数据处理指令a) 数据传送指令MOV cond SRd, Operand例如:MOVR1, R0MOVEQ PC, R14 ; 将R14值传到PCb) 数据取反传送指令MVN cond SRd, Operand例如:MVN R1, #2; 将立即数2取反送至R1c) 算术运算指令ADD、ADCADD|ADC cond S Rd, Oper1, Oper2例如:ADDSR0, R4, R8; 加低端的字ADCSR1, R5, R9; 带进位加第二字ADCSR2, R6, R10; 带进位加第三字ADCR3, R7, R11; 带进位加第四字可实现 128位加法SUB:减法指令SUB cond SRd, Oper1, Oper2SBC:带借位减法指令SBC cond SRd, Oper1, Oper2例:SBCS R0, R1, R2 ; R0=R1R2CRSB:反向减法指令RSB cond SRd, Oper1, Oper2操作数2减去操作数1,例如:RSBR0, R1, R2; R0 = R2 R1RSC:带借位的逆向减法指令RSC cond SRd, Oper1, Oper2d) 逻辑运算指令AND:与AND cond SRd, Oper1, Oper2ORR:或ORR cond SRd, Oper1, Oper2EOR:异或EOR cond SRd, Oper1, Oper2e) 比较指令CMPCMP condOperand1, Operand2CMN:反值比较CMN condOperand1, Operand2将第一个数与第二个数的反值进行比较,相当于完成两个数相加。例如:CMNR1, R0 ; R1+R0,并设置CPSRf) 测试指令TSTTST condOperand1, Operand2 把两个操作数按位进行与运算,根据结果更新CPSR。TEQTEQ condOperand1, Operand2把两个操作数按位进行异或运算,根据结果更新CPSRg) 乘法指令MULMUL cond SRd, Oper1, Oper2RdOperand1Operand2。例如:MUL R0, R1, R2; R0 =R1R2MLAMLA cond S Rd,Oper1,Oper2,Oper3 RdOperand1Operand2+Operand3例如:MLA R0, R1, R2, R3; R0 = R1R2+R3UMULL:64位无符号数乘法指令UMULL cond SRd_L, Rd_H, Operand1, Operand2Rd_H:Rd_L Operand1Operand2例如:UMULLR0, R1, R2, R3; R0 = (R2R3) 的低32位; R1 = (R2R3) 的高32位UMLAL: 64位无符号数乘加指令UMLAL cond SRd_L, Rd_H, Operand1, Operand2Rd_H:Rd_L+= Operand1Operand2例如:UMLAL R0, R1, R2, R3; R0 = (R2R3)的低32位+R0; R1 = (R2R3)的高32位+R1SMULL:64位有符号数乘法指令SMULL cond SRn_L, Rn_H, Operand1, Operand2Rd_H:Rd_L Operand1Operand2SMLAL: 64位有符号数乘加指令SMLAL cond SRn_L, Rn_H, Operand1, Operand2Rd_H:Rd_L+= Operand1Operand2(7) 分支指令a) B (分支指令)和 BL (带链接分支指令)B cond LABELBL cond LABEL允许向前或向后跳转最高32MB。BL:带返回的分支指令,用于调用一个将其返回地址存入链接寄存器的函数。例如:BLSUBPRGSUBPRG; MOVPC, LR; 返回b) BX (分支并可选地交换指令集)和BLX(带链接分支并可选地交换指令集)BX cond RmBLX cond LABEL | RmRm:转移地址,bit0为0时,目标地址处为ARM指令,否则为Thumb指令。BX 和 BLX是唯一可使用的切换指令集的方法。BX 和 BLX指令执行与B和BL指令相同的分支操作,并可从ARM指令集切换到THUMB指令集。c) 长跳转通过向PC寄存器中写目标地址值,可实现在4GB地址空间中进行任意跳转。例如:MOVLR, PC; 保存返回地址MOVR15, #0x00110000 ; 无条件转向0x110000(8) 状态寄存器访问指令a) MRSMRS Rd, 将状态寄存器的内容传送到通用寄存器中。例如:MRSR3, CPSR; CPSRR3b) MSRMSR _, RmMSR _,#表示下列情况之一:c:控制域,即PSR7:0x:扩展域,即PSR15:8 s:状态域,即PSR23:16 f:标志域,即PSR32:24CPSR|SPSR 通用寄存器。例如:MSR CPSR_F, #&F00000000;设置所有标志位(9) 异常/中断指令(续)a) SWISWI 产生SWI异常中断,以实现在用户模式下调用操作系统的监控功能程序 。它将处理器置于管理 (SVC) 模式。例如:SWI 0x01 ;调用编号为01的系统例程b) BKPTBKPT 产生软件断点中断,可用于程序调试。例如BKPT0xF010(10) 协处理器指令a) CDPCDP , , CRd, CRn, CRm ,编号为CP#的协处理器接受指令并执行。具体操作由Cop1和Cop2定义,CRn和CRm为源操作数,结果CRd。例如:CDP P6, 2, C5, C10, C3, 16 ; 激活协处理器P6的操作,操作码1和操作码2值分别为2和16,目标寄存器为C5,源操作数寄存器为C10和C3b) MRC和MRCMRC | MCR , , CRd, CRn, CRm ,在ARM与协处理器寄存器间传送数据。MRC:ARM寄存器协处理器寄存器MCR:协处理器寄存器ARM寄存器例如:MCRP3, 3, R0, C4, C5, 6; ARM处理器R0协处理器P3的寄存器C4和C5c) LDC和STC在协处理器寄存器与存储器间传送数据LDC:协处理器寄存器存储器 STC:存储器协处理器寄存器前变址格式LDC | STC L , CRd, Rn, !后变址格式LDC | STC L , CRd, Rn, 3.3 Thumb指令集(1) Thumb指令集的特点l 是ARM指令集压缩形式的子集,所有Thumb指令均有对应的ARM指令。l 采用16位二进制编码,代码密度小。l 执行Thumb指令时,先动态解压缩,然后作为标准的ARM指令执行。l 如何区分指令流取决于CPSR的位T。l 大多Thumb数据处理指令采用2地址格式。l 移位操作变成单独指令。l 没有协处理器指令、单寄存器交换指令、乘加指令、64位乘法指令及程序寄存器处理指令。l 仅分支指令B有条件执行功能。(2) Thumb状态切换a) ARM状态进入Thumb状态执行带
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!