嵌入式系统原理及接口技术1.ppt

上传人:本田雅阁 文档编号:3206741 上传时间:2019-07-31 格式:PPT 页数:255 大小:6.54MB
返回 下载 相关 举报
嵌入式系统原理及接口技术1.ppt_第1页
第1页 / 共255页
嵌入式系统原理及接口技术1.ppt_第2页
第2页 / 共255页
嵌入式系统原理及接口技术1.ppt_第3页
第3页 / 共255页
嵌入式系统原理及接口技术1.ppt_第4页
第4页 / 共255页
嵌入式系统原理及接口技术1.ppt_第5页
第5页 / 共255页
点击查看更多>>
资源描述

《嵌入式系统原理及接口技术1.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统原理及接口技术1.ppt(255页珍藏版)》请在三一文库上搜索。

1、嵌入式系统原理及接口技术 第一章 绪论,一、概述 1、什么是嵌入式系统 传统定义: 嵌入在其他设备中,起智能控制作用的专用计算机系统。 嵌入到对象体系中的专用计算机应用系统。 现在流行的定义:(新定义) 以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适应于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统 。 2、嵌入式系统的组成 硬件 一般描述:嵌入式处理器、存储器、I/O接口、LCD控制器等。 实际应用:开发板、用户的目标板。 软件 操作系统:Windows CE、Linux、VxWorks、uc/os等。 用户程序(简单系统只有用户程序)。 3. 嵌入式系统的特点

2、(5页), 嵌入性、专用性、计算机。 嵌入式系统的相关技术 嵌入式系统的技术前沿 4、嵌入式系统的要求(6页) 5、嵌入式系统的未来 早在1990年之前,嵌入式系统通常是很简单的且有很长的产品生命周期 的自主设备。近年来,嵌入式工业经历了巨大的变革。 产品市场窗口现在预计翻番的周期狂热到6-9个月; 全球重新定义市场的机会和膨胀的应用空间; 互联网现在是一个需求而不是辅助性的,有线和刚刚显露头角的无线; 基于电子的产品更复杂化; 互联嵌入式系统产生新的依赖网络基础设施的应用(物联网); 微处理器的处理能力按莫尔定律预计的速度在增加。 二、嵌入式处理器(2页),嵌入式系统大多工作在为特定用户群设

3、计的系统中,它通常都具有低功耗、 体积小、集成度高等特点,能够把通用台式计算机中许多由板卡完成的任务 集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强。,返,摩尔定律是由英特尔(Intel)创始人之一戈登摩尔 (Gordon Moore)提出的。其内容为:集成电路上可容纳的晶体 管数目,约每隔18个月便会增加一倍,性能也将提升一倍,当价 格不变时;或者说,每一美元所能买到的电脑性能,将每隔18个 月翻两倍以上。这一定律揭示了信息技术进步的速度。,返,嵌入式系统是以嵌入式微处理器为内核,以微电子技术、计算机技术、电子技术、对象技术为基础,软硬件可根据对象需要所设置,并且嵌入到

4、对象器件内,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用智能的控制系统。,返,1、实时性 2、多速率 3、功耗 4、低成本 5、环境相关性,返,嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、高度分散(留给各个行业高新技术公司的创新余地很大)、可以不断创新的知识集成系统。,返,目前,无论是嵌入式系统基础器件、开发手段,还是应用对象,都有了很大变化。无论是未来从事8位、16位、32位的嵌入式系统应用,都应该了解嵌入式系统的技术前沿。这些技术前沿体现了嵌入式系统应用的一些基本观念,它们是: 基于集成开发环

5、境的应用开发、应用系统的用户SoC设计、操作系统的普遍应用、普遍的网络接入、先进的电源技术以及多处理器SoC技术。,返,嵌入式处理器关注的要点:性能、尺寸、能耗及价格 一类嵌入式处理器注重尺寸、能耗、和价格。例如个人数字助 理(PDA)因为应用的主要特性是交互和显示密集性的,而不是 计算密集性的。这类嵌入式处理器很小,因为整个PDA装置的尺 寸很小能放在手掌上。 另一类嵌入式处理器更关注性能。这些处理器功能 很强,这些 处理器设计满足那些通用目的处理器难以达到的密集性计算的应 用需求。如为网络设备和电信工业开发的网络处理器。 还有一类嵌入式处理器关注全部4个需求。例如,移动电话中嵌 入式数字处

6、理器(DSP)。在同样的时钟频率下,DSP执行数字 信号处理要比通用目的处理器速度快若干倍,这就是在移动电话 的设计上用DSP而不用通用目的处理器的原因。,返,嵌入式微处理器的基础是通用计算机中CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。 嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可

7、靠性,技术保密性也较差。 (如:STD-BUS 、PC104) 嵌入式处理器目前主要由Am186/88、386EX、Power PC、68000、MIPS、ARM系列等。,返,返,返,FFT(Fast Fourier Transform)快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的 。 一般用来计算信号的频谱、功率谱等。,嵌入式微控制器又称单片机,嵌入式微控制器一般以某种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、WatcgDig、I/O、串行口、脉宽调制(PWM)输出、A

8、/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。 微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。 嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300、数目众多ARM芯片等。,返,DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也高。在数字滤波、FFT、频谱分

9、析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过度到采用嵌入式DSP处理器。 DSP处理器比较有代表的产品是TMS320系列和Motorola的DSP5600系列。TMS320系列处理器包括用于控制的C2000系列,移动通信的C5000系列,以及性能更高的C6000和C8000系列。DSP5600目前已经发展成为DSP5600,DSP56100,DSP56200和DSP56300等几个不同系列的处理器。,返,随着EDI的推广和VLSI设计的普及化及半导体工艺的迅速发展,在一个硅片上实现一个更复杂的系统的时代已来临,这就是System On Ch

10、ip(SOC)。各种通用处理器内核将作为SOC设计公司的标准库,和许多其它嵌入式系统外设一样,成为VLSI设计中一种标准的器件,用标准的VHDL等语言描述,存储在器件库中。用户只需要定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除了个别无法集成的器件外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。 SOC可以分为通用和专用两类。通用系列包括Infineon的TriCore,Motorola的M-Core,某些ARM系列器件,Echelon和Motorola联合研制的Neuron芯片等。专用SO

11、C一般专用于某个或某类系统中,不为一般用户所知。一个有代表性的产品是Philips的Smart XA,它将XA单片机内核和支持超过2048位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可加在JAVA或C语言的专用的SOC,可用于公众互联网如Intermet安全方面。,返,使用操作系统的基本思想是隐藏底层不同硬件的差异,向在其上运行的应用程序提供一个统一的调用接口。应用程序通过这一接口实现对硬件的使用和控制,不必考虑不同硬件操作方式的差异。这样软件设计人员就不必关心具体硬件的操作细节,能够专注于擅长领域的开发。 但是,由于编写一个操作系统来隐藏不同硬件,并提供统一的编程接口,是一件很困难

12、的事情。所以很多产品厂商选择购买操作系统,在此基础上开发自己的应用程序,形成产品。事实上,因为嵌入式系统是将所有程序,包括系统程序、驱动程序、应用程序的程序代码全部烧写进ROM里执行,所以操作系统在这里的角色更像是一套函数库。 操作系统主要完成三项任务:内存管理、多任务管理和外围设备管理。这三项机制提供给应用程序设计者许多良好的特性。但是在嵌入式系统中并非必备,小型系统可能并不需要操作系统,但复杂的大型嵌入式系统通常会使用操作系统来进行有效管理。,返,大多数情况下,使用计算机来解决问题时,主要关注的是计算机的计算结果是否正确,至于计算机为了获得这个结果花费了多长的计算时间并不十分在意。但是,在

13、相当一部分实际应用中,计算机系统得到结果所花费时间的长短与结果的正确性同等重要,甚至有时更为重要。 为了提高系统的实时性,实时操作系统的设计应尽量满足5个条件: 1)必须是多任务系统 2)内核应是可剥夺型 3)任务的切换时间应与系统中的任务数无关并可预知 4)系统提供所有服务所需时间应尽可能短并且可预知 5)中断延迟的时间可预知并尽可能短,返,返,ARM处理器系列 ARM7(V4) ARM9(V5) ARM10 ARM11(V6) Cortex(V7),返,ARM7 (V4/V4T) ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和 功耗要求较高的消费类应用。ARM7微处

14、理器系列具有如下特点: 具有嵌入式ICERT逻辑,调试开发方便。 极低的功耗,适合对功耗要求较高的应用,如便携式产品。 能够提供0.9MIPS/MHz的三级流水线结构。 代码密度高并兼容16位的Thumb指令集。 对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。 指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用 户的产品升级换代。 主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂 应用。 ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网 络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。,返,ICE

15、-RT应该是In Circuit Emulator-Rral Time 缩写,返,ARM9 (V5/V5E) ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点: 5级整数流水线,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操 作系统。 MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、

16、机顶盒、高端 打印机、数字照相机和数字摄像机等。,返,ARM10E(V5/V5E) ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。 ARM10E系列微处理器的主要特点如下: 支持DSP指令集,适合于需要高速数字信号处理的场合。 6级整数流水线,指令执行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 支持VFP10浮点处理协处理器。 全性能的MMU,支持Windows CE、Linux

17、、Palm OS等多种主流嵌入式操 作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力 主频最高可达400MIPS。 内嵌并行读/写操作部件。 ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。,返,ARM11(V6) ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指 令架构ARMv6的第一代设计实现。发展目的是为了达到低功耗、低成本的高速传输性。 该系列主要有ARM1136J,ARM1156T2和ARM1176JZ三个内核型号,分别针对不同应用领域。 ARMv6架构是根据下一代的消费

18、类电子、无线设备、网络应用和汽车电子产品等需求而制定的。ARM11的媒体处理能力和低功耗特点,特别适用于无线和消费类电子产品;其高数据吞吐量和高性能的结合非常适合网络处理应用;另外,也在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。可以预言,基于AMRv6体系结构的ARM11系列处理器将在上述领域发挥巨大的作用。,返,ARM(V7) ARMv7架构是在ARMv6架构的基础上诞生的。该架构采用了Thumb-2技 能 ,它是在ARM的Thumb代码压缩技能 的基础上发展起来的,并且保持了 对现存ARM处理 方案的完整的代码兼容性。Thumb-2技能 比纯32位代码少 运用 31的内

19、存,减小了系统开销,同时能够提供比已有的基于Thumb技 能 的处理 方案高出38的性能。ARMv7架构还采用丁NEON技能 ,将DSP 和媒体处理能力提高了近4倍。并支持改良的浮点运算,满足下一代3D图形、 游戏处理使用, 以及传统嵌入式控制使用的需求。 在命名方式上,基于ARMv7架构的ARM处理器已经不再延用过去的数字命 名方式,而是冠以Cortex的代呼。基于v7A的称为“Cortex-A系列”,基于 v7R的称为“Cortex-R系列”,基于v7M的称为“Cortex-M3”。,返,ARM 高级单指令多数据(SIMD) 扩展亦称NEON 技术,它是一种由ARM 开发的 64/128

20、位混合SIMD 体系结构,可以提升多媒体和信号处理应用程序的性能。,返,(Single Instruction Multiple Data,单指令多数据流)能够复制多个操作 数,并把它们打包在大型寄存器的一组指令集, 以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行 部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操 作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部 件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适 合于多媒体应用等数据密集型运算。,返, ARMTDMI内核(42页) 5级流水线 具有指令缓存

21、与数据缓存,返,1、ARM9的结构特点 2、ARM9指令集特点 3、ARM9工作模式及工作状态,返, 七种模式(除了用户模式都是特权模式除了系统模式都是异常模式) 用户(Usr):正常执行程序 系统(Sys):运行特权操作系统任务。(特权级任务) 管理 (Svc): 操作系统的保护模式。(系统上电后首先进入的模式) 中止 (Abt): 指令或数据预取中止 未定义(Und):执行未定义指令 IRQ (Irq): 响应普通中断(硬件中断) IRQ中断模式用于键盘、定时器、显示。 FIQ (Fiq): 响应快速中断(硬件中断) FIQ用于软盘驱动器、串口通信。 工作状态 : ARM态 Thumb态,

22、返,ARM的存储组织结构 ARM体系使用单一的平板地址空间,该地址空间的大小为232个8位字节。地址 范围0-FFFFFFFFH (4G)。当然,也可以看成232/22=230个字,地址范围为 0-3FFFFFFFH。 大端存储和小端存储 I/O端口的访问方式 ARM9内部寄存器,返,ARM内部寄存器(31个通用,6个状态),返,SPSR_fiq,SPSR_irq,SPSR_abt,SPSR_svc,CPSR,CPSR,CPSR,CPSR,CPSR,CPSR,CPSR,R15(PC),R15(PC),R15(PC),R15(PC),R15(PC),R15(PC),R15(PC),R14_fiq

23、,R14_irq,R14_und,R14_abt,R14_svc,R14,R14,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,R13,SPSR_und,返,状态位 N:符号位 N=0 正 N=1 负 Z:零标志 Z=0 结果非零 Z=1 结果为零 C:进位标志 V:溢出标志 控制位 I:IRQ中断允许 0:允许 1:禁止 F:FIQ中断允许 0:允许 1:禁止 T:状态 0:ARM 1:Thumb,控制处理器模式 M4 M3 M2 M1 M0 1 0 0 0 0 User 1 0 0 0 1 FIQ 1 0 0 1 0 IRQ 1 0 0 1 1 S

24、VC 1 0 1 1 1 Abort 1 1 0 1 1 Umdefined 1 1 1 1 1 System,0,31,返,状态位 N:符号位 N=0 正 N=1 负 Z:零标志 Z=0 结果非零 Z=1 结果为零 C:进位标志 控制位 V:溢出标志 I:IRQ中断允许 0:允许 1:禁止 F:FIQ中断允许 0:允许 1:禁止 T:状态 0:ARM 1:Thumb,控制处理器模式 M4 M3 M2 M1 M0 1 0 0 0 0 User 1 0 0 0 1 FIQ 1 0 0 1 0 IRQ 1 0 0 1 1 SVC 1 0 1 1 1 Abort 1 1 0 1 1 Umdefine

25、d 1 1 1 1 1 System,0,31,返,CodeWarrior for ARM集成开发环境是ADS1.2(ARM Developer Suite)开发工具中的重要组成部分。配套的程序调试器采用AXD,返,返,Windows CE就是基于掌上型电脑类的电子设备操作系统。其中CE中的C代表袖珍(Compact)、消费(Consumer)、通讯能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。 (基本内核至少需200KB的ROM),返,VxWorks操作系统是美国溫瑞尔(WindRiver)公司于1983年设计开发的一种嵌入式实时操作

26、系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、F/A-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年7月在火星表面登陆的火星探测器,2008年5月在火星表面上登陆的凤凰号火星探测器上也都使用到了VxWorks,返,Linux 操作系统是UNIX 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正

27、式向外公布的时间)。以后借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。 Linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。,返,GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份GNU宣言等

28、解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。,返,uC/OS-II的前身是C/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在嵌入式系统编程杂志的5 月和6 月刊上刊登的文章连载,并把C/OS 的源码发布在该杂志的B B S 上,返,POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX 是为了读音更像 UNIX)。电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)最初开

29、发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。然而,POSIX 并不局限于 UNIX。,返,Minix原来是荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum教授所开发的一个类Unix操作系统。全部的程序码共约12,000行,并置于他的著作Operating Systems: Design and Implementation(ISBN 0-13-637331-3)的附录里作为范例。Minix的系统要求在当时来说非常简单,只要三片磁片就可以启动。 。,返,数据传送与数据处理 指令的后缀 S、!、B、H 条件后缀(见P59页) 字节传送与半

30、字传送,返,单一数据 加载 LDR 存储 STR 数据块 加载 LDM 存储 STM 数据交换 SWP,返,LDMIA R0,R1-R7 LDMFD R13,R1-R5 LDMIA R0!,R1-R7 LDMFD R13!,R1-R5 LDMFD R13!,R1-R8,PC,返,STMIA R0,R1-R7 STMFD R13,R1-R5 STMIA R0!,R1-R7 STMFD R13!,R1-R5,LR 说明: 1)只能在32位字传送使用 2)寄存器列表不能空 3)当加载R15时,将立即引起程序转移 4)基址在指令执行后自然增4或减4 6)必选两类后缀(FD、FA、ED、EA、IA、IB

31、、DA、DB),返,SWPNE R5,R0,R6 SWP R5,R5,R7 说明: 1)寄存器位置不能空,必须满足3个寄存器 2)不能使用R15 3)源与目的寄存器可以使用同一个寄存器。,返,LDR R0,SVAR LDR R0,R1 LDR R0,R1,#4 LDR R0,R1,#-4 LDR R0,R1,R2 LDR R0,R1,R2,LSL #2 LDR R0,R1,#4! LDR R0,R1,R2! LDR R0,R1,R2,LSL #2! LDR R0,R1,#4 LDR R0,R1,R2 LDR R0,R1,R2,LSL #2,返,STR R0,R1,#4 STR R0,R1,R2

32、 STR R0,R1,R2,LSL #2 STR R0,R1,#-4 STR R0,R1,R2 STR R0,R1,R2,LSL #2 说明: 1)关于R15 R15若为基址,不可使用!后缀。 R15不能作为偏移寄存器使用 加载R15时不能使用后缀B或T 2)立即数偏移使用12位立即数。,返, 存储器 IA 数据传送后地址增加 IB DA DB 堆栈 FD ED FA EA 注:数据块传送使用的后缀(61页),返, 算数运算 ADD、ADC、SUB、SBC、RSB、RSC、MUL、MLA 逻辑运算 AND、ORR、EOR、BIC 数据传送 MOV、MVN 数据比较 CMP、CMN、TST、TE

33、Q 程序状态寄存器传送指令 MRS、MSR,返,指令格式 ADD ADC SUB SBC RSB RSC 关于第三操作数的要求: 1个8位的无符号数值常量,用0填充到32位后,循 环移位偶次后得到的32位数值。,返,指令格式 AND ORR EOR BIC,返,指令格式 MOV MVN,返,例: CMP CMN TST TEQ,返,指令格式 MRS R1,CPSR MRS R1,SPSR MSR CPSR_cxsf,R1 MSR CPSR_cxsf,# 4 位域: c 7:0、x8:15、s23:16、f31:24 注意:不能使用S后缀,返,MUL R1,R2,R3 MLA R1,R2,R3,

34、R4 注意:乘法指令只能使用寄存器寻址,但不包括R15。,返,例: 01H 00000001H 左循环4位 00000010H 08H 00000008H 左循环16位 00080000H 1FH 0000001FH 右循环24位 00001F00H FFH 000000FFH 循环0位 000000FFH FDH 000000FDH 左循环10位 0003F400H 0FH 0000000FH 右循环4位 F0000000H 下列是不符合要求的第三操作数: 0X101、0X201、0XFF1、0XFF000001、0X10100001,返,立即数为表达式 ADD R1,R2,#2+2*2 A

35、DD R1,R2,#2_11010010 ADD R1,R2,#0XFF:MOD:08 ADD R1,R2,#0X80:ROL:04 ADD R1,R2,#0XFF0000:AND:660000,返, 分支指令 B 带链接的分支指令 BL,返, SWI SWI 0 SWI 7 例:用SWI指令能否实现8086中INT 21H指令的功能? 通过寄存器传递功能号 用SWI指令传递功能号,Vectors LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr

36、 DCD 0 LDR PC, IRQ_Addr LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ_Addr DCD IRQ_Exception FIQ_Addr DCD FIQ_Handler ResetInit MOV R0,功能号 SWI 0 ,SoftwareInterrupt MOV R0,

37、R0,LSL # 2 ADD PC,PC,R0 NOP B P0 B P1 B P2 P2 MOV PC,LR,返,返,Vectors LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0 LDR PC, IRQ_Addr LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterrupt PrefetchA

38、ddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ_Addr DCD IRQ_Exception FIQ_Addr DCD FIQ_Handler ResetInit SWI 功能号 ,SoftwareInterrupt LDR R0,LR,#-4 BIC R0,R0,#0XFF000000 MOV R0,R0,LSL #2 ADD PC,PC,R0 NOP B P0 B P1 B P2 P2 MOV PC,LR,返,与ARM指令相关的伪指令 ADR ADRL LDR LDR 指令与LDR、ADR、ADRL伪指令的

39、区别 通用伪指令 DCB、DCW、DCD SPACE AREA、ENTRY、CODE32、IMPORT、EXPORT,返, 汇编程序规则 格式 表达式 关于常量与预定义变量 关于混合语言编程 ARM连接器生成的符号 汇编程序设计举例 关于BOOTLOADER,返,大多数分为两个阶段,第一个阶段主要是包含依赖于CPU的体系结构的硬件初始化代码,通常都是用汇编语言来实现的。这个阶段的任务有: 基本的硬件设备初始化(屏蔽所有中断、关闭处理器内部指令/数据CACHE等) 为第二阶段准备RAM空间 如果是从某个固态存储媒质中,则复制BOOTLOADER的第二阶段代码到RAM 设置堆栈 跳转到第二阶段的C

40、程序入口点 第二阶段通常是由C语言实现的,这个阶段的主要任务有: 初始化本阶段所要用到的硬件设备 检测系统的内存映射 将内核映像和根文件系统映像从FLASH读到RAM 为内核设置启动参数 调用OS内核,返,与域有关的有关的符号 |Ioad$region_name$ Base | |Image$ region_name $Base| |Image$ region_name $Length| |Image$ region_name $Limit| 与输出段有关的符号 |Image$RO$Base| |Image$RO$Limit| |Image$RW$Base| |Image$RW$Limit|

41、|Image$ZI$Base| |Image$ZI$Limit|,返,返, C程序中嵌入汇编程序 C程序调用汇编程序 汇编程序调用C程序,返,EXPORT ADD AREA Code1,CODE,READONLY CODE32 ENTRY ADD ADD R0,R0,R1 LDR PC,LR END void Main(void) int i=200,j=300,sum; sum = ADD(I,j); ,返,IMPORT Main IMPORT Add AREA Code1,CODE,READONLY CODE32 ENTRY S BL Add MOV R1,R0 BL Main END i

42、nt Add(void) int i=200,j=300,sum; sum = i+j; return(sum) ,返,void Main(void) int tem; _asm MRS tem,CPSR ORR tem,tem,#0x80 MSR CPSR_c,tem ,返, 常量的定义 关于ATPCS规则,返,ATPCS(ARM-Thumb Procedure Call Standard)ARM和Thumb程序子程序调用的基本规则。该规则包括以下三个方面: 各寄存器的使用规则及其名称(教材P80页) 数据栈的使用规则 参数传递的规则,返, 当参数不超过4个时通过R0-R3来传递参数。 返回

43、值小于32位时用R0,若大于32位用R0和R1。,返,返,返,返,1)算数:+、-、*、/、MOD 2)移位:SHL、SHR、ROL、ROR 3)逻辑:AND、OR、EOR 例: MOV R0,#R1+1*3 SUB R1,R2,#0X2:SHL:2 ADD R2,R3,#0X08:EOR:0X08 MOV R0,#0X1|0X2|0X3,例1:数据块拷贝 AREA Example2,CODE,READONLY NUM EQU 20 ENTRY CODE32 START LDR R0,=SRC LDR R1,=DST MOV R2,#NUM MOV SP,#0X400 MOVS R3,R2,L

44、SR #3 BEQ KK1 STMFD SP!,R4-R11 KK2 LDMIA R0!,R4-R11 STMIA R1!,R4-R11 SUBS R3,R3,#1 BNE KK2 LDMFD SP!,R4-R11,KK1 ANDS R2,R2,#7 BEQ STOP KK3 LDR R3,R0,#4 STR R3,R1,#4 SUBS R2,R2,#1 BNE KK3 STOP NOP AREA BLOCKDATA,DATA,READWRITE SRC DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4 DST DCD 0,0,0,0,0,0,0,0,0,

45、0,0,0,0,0,0,0,0,0,0 END,例2:冒泡排序 N EQU 10 AREA Code1,CODE,READONLY CODE32 ENTRY S MOV R0,#N SUB R0,R0,#1 K1 MOV R1,R0 ADR R2,STR1 K LDR R3,R2,#4 LDR R4,R2 CMP R3,R4 SWPHS R3,R3,R2,STRHS R4,R2,#-4 SUB R1,R1,#1 CMP R1,#0 BNE K SUB R0,R0,#1 CMP R0,#0 BNE K1 NOP STR1 DCD 1,4,6,7,5,2,3,8,10,9 END,例3:程序散转

46、AREA JUMP,CODE,READONLY NUM EQU 2 ENTRY CODE32 START MOV R0,#0 MOV R1,#3 MOV R2,#2 BL KK1 NOP KK2 B KK2,KK1 CMP R0,#NUM MOVHS PC,LR ADR R3,JTAB LDR PC,R3,R0,LSL #2 JTAB DCD DOADD DCD DOSUB DOADD ADD R0,R1,R2 MOV PC,LR DOSUB SUB R0,R1,R2 MOV PC,LR END,例4 堆栈初始化 USR_STACK_LEGTH EQU 64 SVC_STACK_LEGTH EQU 16 FIQ_STACK_LEGTH EQU 16 IRQ_STACK_LEGTH EQU 64 ABT_STACK_LEGTH EQU 0 UND_STACK_LEGTH EQU 0 Mode_USR EQU 0x10 Mode_FIQ EQU 0x11 Mode_IRQ EQU 0x12 Mode_SVC EQU 0x13 Mode_ABT EQU 0x17 Mode_UND EQU 0x1B Mode_SYS EQU 0x1F I_B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1