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

上传人:小飞机 文档编号:5099504 上传时间:2023-06-04 格式:PPT 页数:255 大小:5.33MB
返回 下载 相关 举报
嵌入式系统原理及接口技术.ppt_第1页
第1页 / 共255页
嵌入式系统原理及接口技术.ppt_第2页
第2页 / 共255页
嵌入式系统原理及接口技术.ppt_第3页
第3页 / 共255页
嵌入式系统原理及接口技术.ppt_第4页
第4页 / 共255页
嵌入式系统原理及接口技术.ppt_第5页
第5页 / 共255页
点击查看更多>>
资源描述

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

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

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

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

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

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

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

7、Am186/88、386EX、Power PC、68000、MIPS、ARM系列等。,返,返,返,FFT(Fast Fourier Transform)快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。一般用来计算信号的频谱、功率谱等。,嵌入式微控制器又称单片机,嵌入式微控制器一般以某种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、WatcgDig、I/O、串行口、脉宽调制(PWM)输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。微控制器的最大特点是单

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

9、,过度到采用嵌入式DSP处理器。DSP处理器比较有代表的产品是TMS320系列和Motorola的DSP5600系列。TMS320系列处理器包括用于控制的C2000系列,移动通信的C5000系列,以及性能更高的C6000和C8000系列。DSP5600目前已经发展成为DSP5600,DSP56100,DSP56200和DSP56300等几个不同系列的处理器。,返,随着EDI的推广和VLSI设计的普及化及半导体工艺的迅速发展,在一个硅片上实现一个更复杂的系统的时代已来临,这就是System On Chip(SOC)。各种通用处理器内核将作为SOC设计公司的标准库,和许多其它嵌入式系统外设一样,成

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

11、A,它将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微处理器系列具有如下特点:具有嵌入式ICERT逻辑,调试开发方便。极低的功耗,适合对功耗要求较高的应用,如便携式产品。能

14、够提供0.9MIPS/MHz的三级流水线结构。代码密度高并兼容16位的Thumb指令集。对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用 户的产品升级换代。主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂 应用。ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网 络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。,返,ICE-RT应该是In Circuit Emulator-Rral Time缩写,返,ARM9(V5/V5E)ARM9系列微处理器在高性能

15、和低功耗特性方面提供最佳的性能。具有以下特点:5级整数流水线,指令执行效率更高。提供1.1MIPS/MHz的哈佛结构。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操 作系统。MPU支持实时操作系统。支持数据Cache和指令Cache,具有更高的指令和数据处理能力。ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端 打印机、数字照相机和数字摄像机等。,返,ARM10E(V5/V5E)ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构

16、,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。ARM10E系列微处理器的主要特点如下:支持DSP指令集,适合于需要高速数字信号处理的场合。6级整数流水线,指令执行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。支持VFP10浮点处理协处理器。全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操 作系统。支持数据Cache和指令Cache,具有更高的指令和数据处理能力 主频最高可达400MIPS。内嵌并行读/写操作部件。ARM1

17、0E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。,返,ARM11(V6)ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构ARMv6的第一代设计实现。发展目的是为了达到低功耗、低成本的高速传输性。该系列主要有ARM1136J,ARM1156T2和ARM1176JZ三个内核型号,分别针对不同应用领域。ARMv6架构是根据下一代的消费类电子、无线设备、网络应用和汽车电子产品等需求而制定的。ARM11的媒体处理能力和低功耗特点,特别适用于无线和消费类电子产品;其高数据吞吐量和高性能的结合非常适合网络处理应用;另外,也

18、在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。可以预言,基于AMRv6体系结构的ARM11系列处理器将在上述领域发挥巨大的作用。,返,ARM(V7)ARMv7架构是在ARMv6架构的基础上诞生的。该架构采用了Thumb-2技能,它是在ARM的Thumb代码压缩技能 的基础上发展起来的,并且保持了对现存ARM处理 方案的完整的代码兼容性。Thumb-2技能 比纯32位代码少运用 31的内存,减小了系统开销,同时能够提供比已有的基于Thumb技能 的处理 方案高出38的性能。ARMv7架构还采用丁NEON技能,将DSP和媒体处理能力提高了近4倍。并支持改良的浮点运算,满足下一代3

19、D图形、游戏处理使用,以及传统嵌入式控制使用的需求。在命名方式上,基于ARMv7架构的ARM处理器已经不再延用过去的数字命名方式,而是冠以Cortex的代呼。基于v7A的称为“Cortex-A系列”,基于v7R的称为“Cortex-R系列”,基于v7M的称为“Cortex-M3”。,返,ARM 高级单指令多数据(SIMD)扩展亦称NEON 技术,它是一种由ARM 开发的64/128 位混合SIMD 体系结构,可以提升多媒体和信号处理应用程序的性能。,返,(Single Instruction Multiple Data,单指令多数据流)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集,

20、以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。,返,ARMTDMI内核(42页)5级流水线 具有指令缓存与数据缓存,返,1、ARM9的结构特点2、ARM9指令集特点3、ARM9工作模式及工作状态,返,七种模式(除了用户模式都是特权模式除了系统模式都是异常模式)用户(Usr):正常执行程序 系统(Sys):运行特权操作系统任务。(特权

21、级任务)管理(Svc):操作系统的保护模式。(系统上电后首先进入的模式)中止(Abt):指令或数据预取中止 未定义(Und):执行未定义指令 IRQ(Irq):响应普通中断(硬件中断)IRQ中断模式用于键盘、定时器、显示。FIQ(Fiq):响应快速中断(硬件中断)FIQ用于软盘驱动器、串口通信。工作状态:ARM态 Thumb态,返,ARM的存储组织结构 ARM体系使用单一的平板地址空间,该地址空间的大小为232个8位字节。地址范围0-FFFFFFFFH(4G)。当然,也可以看成232/22=230个字,地址范围为0-3FFFFFFFH。大端存储和小端存储 I/O端口的访问方式 ARM9内部寄存

22、器,返,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,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=

23、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 Umdefined 1 1 1 1 1 System,0,31,返,状态位 N:符号位 N=0 正 N=1 负 Z:零标志 Z=0 结果非零 Z=1 结果为零 C:进位标志 控制位 V:溢出标志 I:IRQ中断允许 0:允许

24、 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 Umdefined 1 1 1 1 1 System,0,31,返,CodeWarrior for ARM集成开发环境是ADS1.2(ARM Developer Suite)开发工具中的重要组成部分。配套的程序调试器采用AXD,返,返,Windows CE就是基于掌上型电脑类的电子设备操作系统。其中

25、CE中的C代表袖珍(Compact)、消费(Consumer)、通讯能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。(基本内核至少需200KB的ROM),返,VxWorks操作系统是美国溫瑞尔(WindRiver)公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机

26、导航等。在美国的F-16、F/A-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年7月在火星表面登陆的火星探测器,2008年5月在火星表面上登陆的凤凰号火星探测器上也都使用到了VxWorks,返,Linux 操作系统是UNIX 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。Linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX 操作系统、MINIX 操作系统

27、、GNU 计划、POSIX 标准和Internet 网络。,返,GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份GNU宣言等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。,返,uC/OS-II的前身是C/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在嵌入式系统编程杂志的5 月和6 月刊上刊登的文章连载,并把C/OS 的源码发布在该杂志的B

28、B S 上,返,POSIX 表示可移植操作系统接口(Portable Operating System Interface,缩写为 POSIX 是为了读音更像 UNIX)。电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。然而,POSIX 并不局限于 UNIX。,返,Minix原来是荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S.Tanenbaum教授所开发的一个类Unix操作系统。全部的程序码共约12,000行,并置于他的

29、著作Operating Systems:Design and Implementation(ISBN 0-13-637331-3)的附录里作为范例。Minix的系统要求在当时来说非常简单,只要三片磁片就可以启动。,返,数据传送与数据处理指令的后缀 S、!、B、H 条件后缀(见P59页)字节传送与半字传送,返,单一数据 加载 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-

30、R7 STMFD R13,R1-R5 STMIA R0!,R1-R7 STMFD R13!,R1-R5,LR说明:1)只能在32位字传送使用2)寄存器列表不能空3)当加载R15时,将立即引起程序转移4)基址在指令执行后自然增4或减46)必选两类后缀(FD、FA、ED、EA、IA、IB、DA、DB),返,SWPNE R5,R0,R6 SWP R5,R5,R7说明:1)寄存器位置不能空,必须满足3个寄存器 2)不能使用R15 3)源与目的寄存器可以使用同一个寄存器。,返,LDR R0,SVARLDR R0,R1LDR R0,R1,#4LDR R0,R1,#-4LDR R0,R1,R2LDR R0,

31、R1,R2,LSL#2LDR R0,R1,#4!LDR R0,R1,R2!LDR R0,R1,R2,LSL#2!LDR R0,R1,#4LDR R0,R1,R2LDR R0,R1,R2,LSL#2,返,STR R0,R1,#4 STR R0,R1,R2 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

32、ED FA EA注:数据块传送使用的后缀(61页),返,算数运算 ADD、ADC、SUB、SBC、RSB、RSC、MUL、MLA 逻辑运算 AND、ORR、EOR、BIC 数据传送 MOV、MVN 数据比较 CMP、CMN、TST、TEQ 程序状态寄存器传送指令 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 MR

33、S 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,R4 注意:乘法指令只能使用寄存器寻址,但不包括R15。,返,例:01H 00000001H 左循环4位 00000010H08H 00000008H 左循环16位 00080000H1FH 0000001FH 右循环24位 00001F00HFFH 000000FFH 循环0位 000000FFHFDH 000000FDH 左循环10位 0003F400H0FH 000000

34、0FH 右循环4位 F0000000H下列是不符合要求的第三操作数:0X101、0X201、0XFF1、0XFF000001、0X10100001,返,立即数为表达式ADD R1,R2,#2+2*2ADD R1,R2,#2_11010010ADD R1,R2,#0XFF:MOD:08ADD R1,R2,#0X80:ROL:04ADD R1,R2,#0XFF0000:AND:660000,返,分支指令 B 带链接的分支指令 BL,返,SWI SWI 0 SWI 7例:用SWI指令能否实现8086中INT 21H指令的功能?通过寄存器传递功能号 用SWI指令传递功能号,Vectors LDR PC

35、,ResetAddr LDR PC,UndefinedAddr LDR PC,SWI_Addr LDR PC,PrefetchAddr LDR PC,DataAbortAddr DCD 0 LDR PC,IRQ_Addr LDR PC,FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD IRQ_Exception

36、FIQ_Addr DCD FIQ_Handler ResetInit MOV R0,功能号 SWI 0,SoftwareInterrupt MOV R0,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_AddrResetAddr DCD ResetInitUn

37、definedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD IRQ_ExceptionFIQ_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

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

39、从某个固态存储媒质中,则复制BOOTLOADER的第二阶段代码到RAM设置堆栈跳转到第二阶段的C程序入口点 第二阶段通常是由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$B

40、ase|Image$RW$Limit|Image$ZI$Base|Image$ZI$Limit|,返,返,C程序中嵌入汇编程序 C程序调用汇编程序 汇编程序调用C程序,返,EXPORT ADD AREA Code1,CODE,READONLY CODE32 ENTRYADD 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 ENTRYS BL Add MOV R1,R0 BL Ma

41、in ENDint 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,#0 x80 MSR CPSR_c,tem,返,常量的定义 关于ATPCS规则,返,ATPCS(ARM-Thumb Procedure Call Standard)ARM和Thumb程序子程序调用的基本规则。该规则包括以下三个方面:各寄存器的使用规则及其名称(教材P80页)数据栈的使用规则 参数传递的规则,返,当参数不超过4个时通过R0-R3来传递参数。返回值小于32位

42、时用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,READONLYNUM EQU 20 ENTRY CODE32START LDR R0,=SRC LDR R1,=DST MOV R2,#NUM MOV SP,#0X400 MOVS R3,R2,LSR#3 BEQ

43、KK1 STMFD SP!,R4-R11KK2 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,READWRITESRC 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,0,0,0,0,0,0,

44、0,0,0,0 END,例2:冒泡排序N EQU 10 AREA Code1,CODE,READONLY CODE32 ENTRYS MOV R0,#N SUB R0,R0,#1K1 MOV R1,R0 ADR R2,STR1K 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 NOPSTR1 DCD 1,4,6,7,5,2,3,8,10,9 END,例3:程序散转 AREA JUMP,CODE,RE

45、ADONLYNUM EQU 2 ENTRY CODE32 START MOV R0,#0 MOV R1,#3 MOV R2,#2 BL KK1 NOPKK2 B KK2,KK1 CMP R0,#NUM MOVHS PC,LR ADR R3,JTAB LDR PC,R3,R0,LSL#2JTAB DCD DOADD DCD DOSUBDOADD ADD R0,R1,R2 MOV PC,LRDOSUB SUB R0,R1,R2 MOV PC,LR END,例4 堆栈初始化USR_STACK_LEGTH EQU 64SVC_STACK_LEGTH EQU 16FIQ_STACK_LEGTH EQU

46、16IRQ_STACK_LEGTH EQU 64ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0 Mode_USR EQU 0 x10Mode_FIQ EQU 0 x11Mode_IRQ EQU 0 x12Mode_SVC EQU 0 x13Mode_ABT EQU 0 x17Mode_UND EQU 0 x1BMode_SYS EQU 0 x1F I_BIT EQU 0 x80 F_BIT EQU 0 x40,StackUsr DCD UsrStackSpace+(USR_STACK_LEGTH-1)*4StackSvc DCD SvcStackSpace

47、+(SVC_STACK_LEGTH-1)*4StackIrq DCD IrqStackSpace+(IRQ_STACK_LEGTH-1)*4StackFiq DCD FiqStackSpace+(FIQ_STACK_LEGTH-1)*4StackAbt DCD AbtStackSpace+(ABT_STACK_LEGTH-1)*4StackUnd DCD UndtStackSpace+(UND_STACK_LEGTH-1)*4 AREA Myheap,DATA,NOINIT,ALIGN=2bottom_of_heap SPACE 256 AREA MyStacks,DATA,NOINIT,AL

48、IGN=2UsrStackSpace SPACE USR_STACK_LEGTH*4 SvcStackSpace SPACE SVC_STACK_LEGTH*4IrqStackSpace SPACE IRQ_STACK_LEGTH*4 FiqStackSpace SPACE FIQ_STACK_LEGTH*4AbtStackSpace SPACE ABT_STACK_LEGTH*4UndtStackSpace SPACE UND_STACK_LEGTH*4,返,ResetInit BL InitStack InitStack MOV R0,LR MSR CPSR_c,#(Mode_SVC|I_

49、BIT|F_BIT)LDR SP,StackSvc MSR CPSR_c,#(Mode_IRQ|I_BIT|F_BIT)LDR SP,StackIrq MSR CPSR_c,#(Mode_FIQ|I_BIT|F_BIT)LDR SP,StackFiq MSR CPSR_c,#(Mode_ABT|I_BIT|F_BIT)LDR SP,StackAbt MSR CPSR_c,#(Mode_UND|I_BIT|F_BIT)LDR SP,StackUnd MSR CPSR_c,#(Mode_SYS|I_BIT|F_BIT)LDR SP,StackUsr MOV PC,R0,返,_user_initia

50、l_stackheap LDR r0,=bottom_of_heap MOV pc,lr,返,IMPORT _main IMPORT FIQ_Exception IMPORT IRQ_Exception EXPORT Vectors EXPORT ResetInit EXPORT DisableMMU EXPORT EnableICache CODE32 AREA Startup,CODE,READONLY ENTRY,返,ARM映像文件的入口点有两种:初始入口点:由编译器确定(只有一个)初始入口点必须满足下面两个条件:必须位于映像文件的运行时域 包含初始入口点的运行时域不能覆盖,它的加载时

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号