ARM寄存器与处理器模式
ARM单片机简介
电子产业链全程电子商务平台|旗下网站华强电子网华强LED网华强手机制造网华强电子交易所华强电子检测中心外贸通English|繁体|帮助中心|产品服务会员套餐诚易通600条竞价排名ISCP现货认证BCP品牌认证中国制造委托交易洽洽酷管家旺铺推介竞标推广服务在线交易诚信保证服务手机华强电子网华强手机制造网超级买家|进入互联商务系统上传IC库存参与竞价排名发布求购信息查看客户评价修改企业网站发布元器件发布推介信息管理询报价查看客户留言修改注册信息[当前1041位会员在线]华强电子网购物车首页供应信息中国制造求购信息诚信交易技术资料求职招聘商情资讯商友社区客服热线:400-887-3118位置:首页技术资料电子维基arm单片机电子维基arm单片机[浏览次数:334次]arm单片机是以ARM处理器为核心的一种单片微型计算机,是近年来随着电子设备智能化和网络化程度不断提高而出现的新兴产物。
ARM是一家微处理器设计公司的名称,ARM既不生产爱心篇也不销售芯片,是专业从事技术研发和授权转让的公司,世界知名的半导体电子公司都与ARM简历了合作伙伴关系,包括国内许多公司也从ARM购买芯核技术用于设计专用芯片。
arm单片机以其低功耗和高性价比的优势逐渐步入高端市场,成为了时下的主流产品。
目录arm单片机的优势arm单片机的结构特性arm单片机的工作状态和模式arm单片机的寄存器结构arm单片机的常见异常arm单片机的应用arm单片机的发展趋势arm单片机的优势ARM单片机采用了新型的32位ARM核处理器,使其在指令系统,总线结构,调试技术,功耗以及性价比等方面都超过了传统的51系列单片机,同时arm 单片机在芯片内部集成了大量的片内外设,所以功能和可靠性都大大提高。
arm单片机的结构特性具有统一和固定长度的指令域,使指令集和指令译码都大大简化具有一个大而统一的寄存器文件,大多数数据操作都在寄存器中完成,使指令执行速度更快采用加载/存储结构,使数据处理时只对寄存器操作,而不直接对存储器操作寻址方式简单而灵活,所有加载/存储的地址都只由寄存器的内容和指令域决定,执行效率高每一条数据处理指令都对算术逻辑单元和移位寄存器进行控制,以最大限度的提高算术逻辑单元和移存器的利用率采用自动增减地址的寻址方式,有利于优化循环程序的执行引入多寄存器加载/存储指令,有利于实现数据吞吐量的最大化arm单片机的工作状态和模式从编程的角度看,ARM处理器的工作状态通常有以下两种:1、ARM状态,此时处理器执行32位的字对齐的ARM指令2、Thumb状态,此时处理器执行16位的,半字对齐的Thumb指令当ARM处理器执行32位ARM指令集中的指令时,工作在ARM状态,执行16位Thumb指令集中的指令时,工作在Thumb状态,通常在刚加点开始执行代码时处于ARM状态,然后在程序的执行过程中,只要满足一定条件,随时可以在两种工作状态间切换,并且这种切换并不影响处理器的工作模式和相应寄存器中的内容。
ARM处理器的工作模式
Thumb状态下的寄存器集是ARM状态下寄存器集的 子集。程序员可以直接访问8个通用的寄存器(R0~R7), 程序计数器PC、堆栈指针SP、链接寄存器LR和当前状态 寄存器CPSP。
第二十页,编辑于星期三:四点 二十九分。
1.3 ARM异常
本节主要内容
1、中断和异常的概念 2、ARM的异常中断介绍 3、ARM的异常中断响应过程 4、中断向量和中断优先级
第十页,编辑于星期三:四点 二十九分。
1.2 ARM9寄存器
1.2.1、ARM寄存器概述
ARM处理器v4及以上版本有37个32位的寄存器
其中31个为通用寄存器;6个为状态寄存器。
– 31个通用寄存器
R0~R15; R13_svc、R14_svc; R13_abt、R14_abt; R13_und、R14_und;
当执行BL子程序调用指令时,R14中得到R15(程序计数 器PC)的备份。其他情况下,R14用作通用寄存器。
与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、 R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。
第十五页,编辑于星期三:四点 二十九分。
1.2 ARM寄存器(7)
– I、F中断控制位——控制允许和禁止中断
• I=1 禁止IRQ中断
I=0 允许IRQ中断
• F=1 禁止FIQ中断
F=0 允许FIQ中断
– T控制(标志)位——反映处理器的运行状态
• T=1时,程序运行于Thumb状态
• T=0时,程序运行于ARM状态
– M控制位——决定了处理器的运行模式
• 当发生异常时这些位被改变。
ARM课后习题及答案_百度文库.
第一章思考与练习 1、举出3个书本中未提到的嵌入式系统的例子。
答:红绿灯控制,数字空调,机顶盒 2、什么叫嵌入式系统嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、什么叫嵌入式处理器?嵌入式处理器分为哪几类?嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。
嵌入式微处理器(Embedded Microprocessor Unit, EMPU 嵌入式微控制器(Microcontroller Unit, MCU 嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP 嵌入式片上系统(System On Chip 4、什么是嵌入式操作系统?为何要使用嵌入式操作系统?是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。
其次,提高了开发效率,缩短了开发周期。
再次,嵌入式实时操作系统充分发挥了 32 位 CPU 的多任务潜力。
第二章 1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么?项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4 个阶段。
识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。
提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。
执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展,分析项目偏差,采取必要措施以实现目标。
结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。
2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险?在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。
需求风险;时间风险;资金风险;项目管理风险 3、何谓系统规范?制定系统规范的目的是什么?规格制定阶段的目的在于将客户的需求,由模糊的描述,转换成有意义的量化数据。
ARM的37个寄存器详解
ARM的37个寄存器详解ARM寄存器ARM共有37个32位物理寄存器,7种⼯作模式下可访问的寄存器见下表,User和System使⽤完全相同的物理寄存器。
2.1 R0~R7所有⼯作模式下,R0-R7都分别指向同⼀个物理寄存器(共8个物理寄存器),它们未被系统⽤作特殊的⽤途。
在中断或异常处理进⾏⼯作模式转换时,由于不同⼯作模式均使⽤相同的物理寄存器,可能造成寄存器中数据的破坏。
2.2 R8~R12在User&System、IRQ、Svc、Abt和Und模式下访问的R8~R12都是同⼀个物理寄存器(共5个物理寄存器);在FIQ模式下,访问的R8_fiq~R12_fiq是另外独⽴的物理寄存器(共5个物理寄存器)。
2.3 R13和R14在User&System、IRQ、FIQ、Svc、Abt和Und访问的R13_~R14都是各⾃模式下独⽴的物理寄存器(共12个物理寄存器)。
R13在ARM指令中常⽤作堆栈指针(SP),但这只是⼀种习惯⽤法,⽤户也可使⽤其他的寄存器作为堆栈指针。
⽽在Thumb指令集中,某些指令强制性的要求使⽤R13作为堆栈指针。
由于处理器的每种⼯作模式均有⾃⼰独⽴的物理寄存器R13,在⽤户应⽤程序的初始化部分,⼀般都要初始化每种模式下的R13,使其指向该⼯作模式的栈空间。
这样,当程序进⼊异常模式时,可以将需要保护的寄存器放⼊R13所指向的堆栈,⽽当程序从异常模式返回时,则从对应的堆栈中恢复,采⽤这种⽅式可以保证异常发⽣后程序的正常执⾏。
R14称为链接寄存器(Link Register),当执⾏⼦程序调⽤指令(BL)时,R14可得到R15(程序计数器PC)的备份。
在每⼀种⼯作模式下,都可⽤R14保存⼦程序的返回地址,当⽤BL或BLX指令调⽤⼦程序时,将PC的当前值复制给R14,执⾏完⼦程序后,⼜将R14的值复制回PC,即可完成⼦程序的调⽤返回。
以上的描述可⽤指令完成。
执⾏以下任意⼀条指令:MOV PC, LRBX LR在⼦程序⼊⼝处使⽤以下指令将R14存⼊堆栈:STMFD SP!,{,LR}对应的,使⽤以下指令可以完成⼦程序返回:LDMFD SP!,{,PC}R14也可作为通⽤寄存器。
ARM七种运行模式
S3C2440中断体系结构:如何用中断?1 •屮斷发生:保存别人的状态如何中撕可以事先设置,对fijf始化,使能中斷。
中撕发生后,进人屮撕模氏2冲断处理分辦中断淵进行不同的处理淸理工作3 •恢夏别人的狀态U程:外界信号上廿沿、下降沿,高电平、低电平都可以设置成18号引脚设置,再逍人状态寄存器。
状态寄存器连按屏敲寄存器进人第二个狀态寄存器,昭存各种中斷,可以昭存多f屮斷进人优先级寄存器,判斷中Kitnsir再进人屏箴便能寄存器和模式寄存器进入优先级寄存器& A cpu ft 理cpu ft处理:进人人口地址b handlelRQit算返回地址,債中断处地址保存现场,即各寄存器状态调用处理函数函数运行完后恢复现场因数的处理:分掰搀端处理中断涓除数据,即清除中断1. 中断寄存器arm的七种模式1. usr用户模衣r0-r152. fiq快中断模氏r0-r7专用寄存!S r8-r15,3. svc管理模氏专用寄存器r13-r14,4. abt数据诉|可终止模式5. sys系竦模衣6. und未定义指令终止模式7.irq中斷模氏几种模式的区别:»AS的中斷:a・不同的寄存器b•不同的权限c・触发条件不一样阿时使用几种模式:usr用户模式:arm 器正常的程序执行状态fiq快中断模氏:高速数据传输和通道处理svc管理模貳:操作系筑便用的保护模氏abt数据前间终止模貳:数据或者指令终止时迪人,用干虛H1存储或者存储保护sys系统模式:运行具有特权的If作系轨任务und未定义指令终止未定义的指令执行时进人该模it,用于支持硕件业理器的软件仿真.irq中斷模衣:用干通用的中断处理后穴种是待权模式,用干处理中斷、异常和特殊权限处卑用户模式是最常见的模直2. 中断中的异常中撕是一种异常。
当发生中斷时,CPU进入中黏模式cpu a A异常人口,异常入口是哽件规定的一个地址运『模氏ARM920T支持7种运行模式:•用户(us「)):正常ARM样序执行狀态•快屮斷(fiq)):为支持数据传揄或通道处理设计•中斷(irq)):用于一般用途的中断处理•管理(svc)):操作系统保护模式•中止(abt ):数据或指令預取中止后进人•糸貌(sys)):操作系竦的轩权用户模式•未定义(und)):执fiT-t未定文指令时进人模貳的改变可由軟件控制,或者由外部中斷或迪人异常引起。
ARM 处理器工作状态与工作模式 ARM 体系结构所支持的异常
深入内核逻辑一个宇宙通用的事实是:结构决定功能!我们以典型的ARM嵌入式处理器内核的一般特征为例,,看看ARM设想的功能是如何被“构造”出来的。
主要说两个内容:•ARM处理器工作状态与工作模式•ARM体系结构所支持的异常基础概念字(Word):在ARM体系结构中,字的长度为32位(在8位/16位处理器体系结构中,字的长度一般为16位)。
•半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。
•字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。
问:计算机存储设备是按______ (A:字Word,B:半字Half-Word,C:字节Byte)编址的。
处理器工作状态ARM状态:正在执行ARM指令的处理器的状态。
Thumb状态:正在执行Thumb指令的处理器的状态。
不同的状态下,代码密集度不同,,ARM状态按字(32位)存储代码,Thumb状态按半字(16位)存储代码,这种特性有利于我们在必要的时候调整单位存储空间的代码容量,压缩代码占用空间。
这两个状态可以根据情况软件切换,,,后面我们还会再次提到这个话题,,,Note:对于ARM 32位处理器,两种状态下代码存储密集度不同,但在执行时仍是32位的!这就是说,代码可以压缩,但执行效率并不会下降,CPU仍是按字执行的啊!不过,Thumb状态下的指令的使用有某些限制,属于ARM状态下的指令的一个子集。
另外,调整代码密集度的优点在后来的ARM一些版本中可以自动切换,,,不需要程序员再过多费神,这就是所谓Thumb2状态:一种混合型指令集,降低功耗具有高代码压缩性处理器工作模式回顾,前面说过ARM内核采用了大量内部寄存器的特性,,以便有利于支持流水线技术,,,那么这些“大量内部寄存器”如何运作?工作模式本质上就是指内核中的这堆寄存器的功能分配和使用方法ARM处理器内部寄存器一起看,,这里一共有37个32位寄存器•其中,31个通用寄存器,包括程序寄存器(PC);•6个状态寄存器:。
ARM体系结构详解精
ARM嵌入式系统第2章ARM体系结构ARM微处理器的编程模型♦ARM徴处理器的工作状态♦ARM体系结构的存储器格式♦ARM体系结构的指令长度及数据宽度♦ARM微处理器的处理器模式♦ARM体系结构的寄存器组织♦ARM微处理器的异常状态字、半字、字节字(Word)在ARM体系结构中,字的长度为32位半字(Half-Word)在ARM体系结构中,半字的长度为16位字节(Byg)在ARM体系结构中,字节的长度为8位。
ARM微处理器的工作状态(1)字对齐:四字节对齐半字对齐:两字节对齐两种状态:♦ARM状态:处理器执行32位的字对齐的令♦Thumb状态:处理器执行16位的、半字对齐的Thumb指令处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
I ARM微处理器的工作状态(2 )状态切换:BX {<cond>} <Rm><cond>指令的条件码。
忽略时无条件执行。
<Rm>子存器中为跳转的目标地址,当<Rm><存器的bit[O]为0时, 目标地址处的指令为ARM指令;当<Rm>^存器的bit[O]为1时,目标地址处的指令为Thumb 指令。
伪代码:if ConditionPassed(cond) thenT Flag=Rm[O]PC=Rm AND OxFFFFFFFEARM微处理器在复位或上电时处于ARM状态,发生异常时处于ARM状态。
右ARM体系结构的存储器格式(1)ARM体系结构所支持的最大寻址空间为4GB (2^字节)♦大端格式(Big Endian)字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
♦小端格式(Little Endian)低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
字地址字地址右ARM 体系结构的存储器格式(2)(0H)=0123H (4H)=4567H (8H)=89ABHBig Endian(0H)=3210H (4H)=7654H (8H)=BA98HLittle Endian右ARM 体系结构的存储器格式(3)8 9 AB4 5 6 7 0123一 “A ・■ • rO= 0x11223344 I 11 I 22 33 : 44 ILittle endian Big endianR2 =异FI*右 ARM 体系结构的指令长度及数据宽度♦指令长度:32位(在ARM 状态下) 16位(在Thumb 状态下)♦数据宽度: 字节(8位) 半字(16位) 字(32位)三种数据宽度对存储器及外部设备的访问。
第2章 ARM微处理器概述
本章目标
ARM微处理器的应用与选型
ARM微处理器的数据类型和工作状态 ARM微处理器工作模式 ARM微处理器的寄存器
2.1 ARM微处理器概述
问题
ARM微处理器有哪些技术特点,其应用在哪些领
域?
重点
ARM微处理器的技术特点。
内容
ARM微处理器的技术特点和其应用领域。
ARM 以其高性能和低成本,在该领域的地位日益巩固。
网络系统:
随着宽带技术的推广,采用ARM 技术的ADSL 芯片正逐
步获得竞争优势。此外,ARM 在语音及视频处理上行了 优化,并获得广泛支持,也对DSP 的应用领域提出了挑 战。
消费类电子产品:
ARM 技术在目前流行的数字音频播放器、数字机顶盒和
2.2.2 ARM体系结构版本
任务:了解ARM体系结构的各个 版本及其特点
ARM指令集体系结构,从最初开发至今已有
了重大改进,而且将会不断完善和发展。为 了精确表达每个ARM实现中所使用的指令集, 到目前ARM体系结构共定义了6个版本,各 版本特点如下:
Version 1(v1)
基本数据处理指令(不包括乘法指令);
Version 3(v3)
该版本推出32位寻址能力,主要结构扩展变化为: 32 位地址总线,但除版本3G(版本3的一个变种)外其他版本是向前兼 容的,支持26 位地址总线; 当前程序状态信息从原来的R15移到一个新的寄存器CPSR(Current Program Status Register,当前程序状态寄存器)中; 增加了SPSR(Saved Program Status Register,备份程序状态寄存 器),用于在程序异常中断程序时,保存被中断程序的程序状态; 增加了两种处理器模式,使操作系统代码可以方便地使用数据访问中止 异常、指令预取中止异常和未定义指令异常; 增加了指令MSR和MRS,用于访问CPSR和SPSR; 增加了原来的从异常返回的指令。
ARM的七种工作模式
ARM的七种⼯作模式⼀、ARM处理器7种⼯作模式(特权模式特权模式异常模式)1. ⽤户模式(USR):正常程序执⾏模式,不能直接切换到其他模式2. 系统模式(SYS):运⾏操作系统的特权任务,与⽤户模式类似,但具有可以直接切换到其他模式等特权3. 快中断模式(FIQ):⽀持⾼速数据传输及通道处理,FIQ异常响应时进⼊此模式4. 中断模式(IRQ):⽤于通⽤中断处理,IRQ异常响应时进⼊此模式5. 管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进⼊此模式(由系统调⽤执⾏软中断SWI命令触发)6. 中⽌模式(ABT):⽤于⽀持虚拟内存和/或存储器保护,在ARM7TDMI没有⼤⽤处7. 未定义模式(UND):⽀持硬件协处理器的软件仿真,未定义指令异常响应时进⼊此模式8. 表3-1 ARM处理器⼯作模式处理器⼯作模式特权模式异常模式说明⽤户(user)模式⽤户程序运⾏模式系统(system)模式该组模式下可以任意访问系统资源运⾏特权级的操作系统任务⼀般中断(IRQ)模式通常由系统异常状态切换进该组模式普通中断模式快速中断(FIQ)模式快速中断模式管理(supervisor)模式提供操作系统使⽤的⼀种保护模式,swi命令状态中⽌(abort)模式虚拟内存管理和内存数据访问保护未定义指令终⽌(undefined)模式⽀持通过软件仿真硬件的协处理CPU的模式可以简单的理解为当前CPU的⼯作状态,⽐如:当前操作系统正在执⾏⽤户程序,那么当前CPU⼯作在⽤户模式,这时⽹卡上有数据到达,产⽣中断信号,CPU⾃动切换到⼀般中断模式下处理⽹卡数据(普通应⽤程序没有权限直接访问硬件),处理完⽹卡数据,返回到⽤户模式下继续执⾏⽤户程序。
特权模式除⽤户模式外,其它模式均为特权模式(Privileged Modes)。
ARM 内部寄存器和⼀些⽚内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。
此外,特权模式可以⾃由的切换处理器模式,⽽⽤户模式不能直接切换到别的模式。
Arm简答题
Arm简答题9.ARM920T体系结构支持哪两种方法存储字数据?答:大端模式和小端模式,大端模式高地址存的是数据的低位,低地址存存的是数据的高位。
小端模式高地址存的是数据的高位,6.哈佛体系结构和冯诺依曼体系结构有何不同。
答:哈佛体系结构有两套地址总线和数据总线是分开的,冯诺依曼体系结构是复用的。
2.ARM9采用了几级流水线工作方式,简要说明。
答:五级流水线工作方式,1.取指2.指令译码3.执行4.数据存储访问5.写寄存器1.什么是嵌入式系统?其特点有些什么?答:嵌入式系统是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
”特点:1)是专用的计算机系统,用于特定的任务;2)资源较少,可以裁减;3) 功耗低,体积小,集成度高,成本低; 4)使用实时操作系统;5) 可靠性要求更高,具有系统测试和可靠性评估体系;6)运行环境差异大7)大部分程序固化在ROM中;8) 较长的生命周期;9)嵌入式微处理器通常包含专用调试电路3、什么叫嵌入式处理器?嵌入式处理器分为哪几类?嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。
嵌入式微处理器(Embedded Microprocessor Unit, EMPU)嵌入式微控制器(Microcontroller Unit, MCU)嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP)嵌入式片上系统(System On Chip)4、什么是嵌入式操作系统?为何要使用嵌入式操作系统?是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。
其次,提高了开发效率,缩短了开发周期。
再次,嵌入式实时操作系统充分发挥了32 位CPU 的多任务潜力。
4、分别列举ARM的处理器模式和状态。
状态:ARM 状态32 位,这种状态下执行的是字方式的ARM 指令Thumb 状态16 位,这种状态下执行半字方式的Thumb 指令模式:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。
ARM7体系结构
2.1 ARM简介
ARM10E系列简介
该系列包括ARM1020E和ARM1020E处理器核, 其核心在于使用向量浮点(VFP)单元VFP10提供高性 能的浮点解决方案,从而极大提高了处理器的整型和 浮点运算性能。 可以用于视频游戏机和高性能打印机等场合。
ARM7体系结构
1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储 系统
2.1 ARM简介
2.1 ARM简介
ARM9系列简介
该系列包括ARM9TDMI、ARM920T和带有高速 缓存处理器宏单元的ARM940T。除了兼容ARM7系列, 而且能够更加灵活的设计。 ARM9系列主要应用于引擎管理、仪器仪表、安 全系统和机顶盒等领域。
2.1 ARM简介
ARM9E系列简介
该系列为含有DSP指令集的综合处理器,包括 ARM926EJ-S、带有高速缓存处理器宏单元的 ARM966E-S/ARM946E-S。其内核在ARM7处理器内核 的基础上使用了Jazelle增强技术,该技术支持一种新 的Java操作状态,允许在硬件中执行Java字节码。
2.1 ARM简介
CortexTM-A8处理器简介
该处理器是ARM公司所开发的基于ARMv7架构的 首款应用级处理器,其特色是运用了可增加代码密度 和加强性能的技术、可支持多媒体以及信号处理能力 的NEONTM技术、以及能够支持Java和其他文字代码语 言的提前和即时编译的Jazelle@RTC技术。 众多先进的技术使其适用于家电以及电子行业等各 种高端的应用领域。
ARM_Core的处理器模式与寄存器
0b11011UND模式,0b11SYS模式。
question:为什么会根据Rn的最低位来切换状态呢,最低位是1表示8位对齐
而不是16位啊。难道arm本身是16位地址对齐??
tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!
CPSR当前程序状态寄存器。SPSR备份程序状态寄存器。
31--28:NZCV(Negative ZeroCarryOverflow)
278:Reserve
7-5:IFT(IRQ disable FIQdisableState bit)
4-0:Mode bits
0b10用户模式,0b11FIQ模式,0b10010IRQ模式,0b10011SVC模式,
0x0_4未定义指令,进入UND模式。
0x0_8软件中断,进入SVC模式。
0x0_C中止指令,进入ABT模式。
0x0_0010中止数据,进入ABT模式。
0x0_0014保留
0x0_0018IRQ中断,进入IRQ模式。
0x0_001CFIQ中断,进入FIQ模式。
ARM处理器中一共有37个寄存器。分别有31个通用寄存器:R0-R15,
R13_svc, R14_svc, R13_abt,R14_abt,R13_und,
R14_und, R13_irq, R14_irq, R8_frq-R14_frq。
6个状态寄存器:CPSR,SPSR_svc,SPSR_abt,SPSR_und,SPSR_irq,
SPSR_fiq。
R13通常用作堆栈指针。R14通常用作子程序连接。
FIQ要比IRQ的响应快很多,首先FIQ的优先级比较高,再次ARM的FIQ
会有自己更多的寄存器,由ARM自动保存。
ARM(包括ARMv7工作模式介绍)寄存器、工作模式和指令集
ARM(包括ARMv7⼯作模式介绍)寄存器、⼯作模式和指令集(来源:IT165收集)转载于: /uid-30234312-id-5077078.html本章介绍ARM处理器的基础特性,包括寄存器、⼯作模式和指令集的细节。
我们也会涉及⼀些处理器实现细节,包括指令流⽔线和分⽀预测。
ARMv7架构是⼀个32位处理器架构。
它是⼀种load/store架构,意味着数据处理指令操作通⽤寄存器中的值。
只有加载(load)和存储(store)指令访问存储器。
通⽤存储器也是32位的。
本书中,字(word)代表32位,双字(doubleword)代表64位,半字(halfword)代表16位宽。
尽管ARMv7架构是⼀种32位架构,单独的处理器对所有模块和内部连接的实现不⼀定必须都是32位宽。
例如,对于指令获取和数据访问,具有64位或更宽的路径是可能的。
实现ARMv7-A架构的处理器不具有由架构固定的存储器映射。
处理器能访问4GB的虚拟地址空间,存储器和外设都可以在那个空间范围之内⾃由地映射。
我们将会在第9章和第10章中讲述存储器管理,那⾥我们会看到缓存和内存管理单元(MMU)。
4.1 指令集 ⼤多数ARM处理器⽀持超过⼀种指令集: >ARM--- ⼀种32位指令集 >Thumb--- ⼀种16位指令集,具有更好的代码密度(但是相⽐ARM代码,性能有所降低)在程序的控制之下,处理器可以在这两种指令集之间来回切换。
所有的Cortex-A系列处理器实现了Thumb-2技术,它扩展了Thumb指令集。
混合使⽤32位和16位指令,以Thumb指令集的代码密度和接近ARM指令集的性能。
⾃从所有的Cortex-A系列处理器⽀持这⼀扩展,针对它们的软件常被编译成Thumb指令集。
(本⽂作者注:按照⽂章《如何使⽤Thumb-2改善代码密度和性能》所述,Thumb-2代码⼤⼩约为ARM代码的74%,性能则为其98%)4.2 模式 ARM架构有9种处理器模式,在表4-1中所总结。
ARM体系结构——ARM简介
LPC2000系列CPU的核心是ARM7,由于其C语言编译器已经考虑到了许多复杂的因素,所以作为初学者无需成为一个专家就可以使用LPC2000。但是为了能够设计出可靠的应用系统和培养学习新技术的能力,作为初学者确实需要对CPU的运作机制及其独特的性能有更加深入的理解。
在连载的文章中,我们将着眼于ARM7内核,处理器状态与模式,内部寄存器,程序状态寄存器,异常、中断及其向量表和存储系统的学习,这是成为一个应用工程师必备的基础。
ARM1136JF-S就是为了进行快速浮点运算,而在ARM1136J-S增加了向量浮点单元。
9.Xscale
Xscale处理器将Intel处理器技术和ARM体系结构融为一体,致力于为手提式通信和消费电子类设备提供理想的解决方案。并提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令和集成数字信号处理(DSP)指令。
ARM926EJ-S发布于2000年,ARM9E系列为综合处理器,包括ARM926EJ-S和带有高速缓存处理器宏单元的ARM966E-S、ARM946E-S。该系列强化了数字信号处理(DSP)功能,可应用于需要DSP与微控制器结合使用的情况,将Thumb技术和DSP都扩展到ARM指令集中,并具有EmbeddedICE-RT逻辑(ARM的基于EmbeddedICE JTAG软件调试的增强版本),更好地适应了实时系统的开发需要。同时其内核在ARM9处理器内核的基础上使用了Jazelle增强技术,该技术支持一种新的Java操作状态,允许在硬件中执行Java字节码。
5.ARM7系列
ARM7TDMI是ARM公司1995年推出的第一个处理器内核,是目前用量最多的一个内核。ARM7系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和EmbeddedICE JTAG软件调试方式,适合应用于更大规模的SoC设计中。其中ARM720T高速缓存处理宏单元还提供8KB缓存、读缓冲和具有内存管理功能的高性能处理器,支持Linux和Windows CE 等操作系统。
第三节ARM体系结构
一般的通用寄存器
寄存器类别 寄存器在汇编中的名称
用户
系统
R0(a1)
R1(a2)
R2(a3)其中R0~R7为
R3(a4)
未R分4(v1) 组的寄存器,也
通用寄存器 和程序计数
器
就R是5(v2) 说对于任何处理 R6(v3)
器R模7(v4) 式,这些寄存器 都对应于相同的32位 R8(v5)
管理 (svc) 操作系下统保访护问代码用户模系统式复位的和寄软件存中器断响就应比时进较入方此模式
中止 (abt) 未定义 (und)
用或于存支储便 可持器虚 保,以拟护而使内存且用和操这/ 作个在A系模RM统式7TD的访MI一问没有些一大用特 些处权 受任 控务 的 支软持件硬仿资件真协源处。理器的 未定义指令异常响应时进入此模式
各模式下实际访问的寄存器
用户
系统
管理
中止
未定义
RR00
在汇编语言中寄存
R1
器R0~R13为保存数据
R2
或地址值的通用寄存器。
R3
它们是完全通用的寄存器, R4
不会被体系结构作为特殊
R5
用途,并且可用于任何使
R6
用通用寄存器的指令。
R7
R8
R9
R10
R11
R12
R13
RR1133__ssvc
R13_abt
SSPPSSRR__fifqiq
ARM状态各模式下可以访问的寄存器
寄存器类别 寄存器在汇编中的名称
通用寄存器和 程序计数器
状态寄存器
R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13(SP) R14(LR) R15(PC) CPSR SPSR
ARM处理器模式切换(含MRS,MSR指令)
ARM处理器模式切换(含MRS,MSR指令)1.1.1ARM 处理器模式切换(含MRS,MSR 指令)除了用户模式和系统模式,其余模式下都有一个私有SPSR 保存状态寄存器,用来保存切换到该模式之前的执行状态,之所以用户模式和系统模式没有SPSR 是因为,通常CPU 大部分时间执行在用户模式下,当产生异常或系统调用时会分别切换进入另外几种模式,保存用户模式下的状态,当切换回原先模式时,直接回复SPSR 的值到CPSR 就可以了,因此,用户模式和系统模式下不需要SPSR,其详细操作查看下节异常处理。
以上几种模式通过CPSR 里的M[4:0]位进行区分,如图3-1 所示:图3-1 CPSR 控制位通过向模式位M[4:0]里写入相应的数据切换到不同的模式,在对CPSR,SPSR 寄存器进行操作不能使用mov,ldr 等通用指令,只能使用特权指令msr 和mrs。
在ARM 处理器中,只有MRS(Move to Register from State register)指令可以对状态寄存器CPSR 和SPSR 进行读操作。
通过读CPSR 可以获得当前处理器的工作状态。
读SPSR 寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR 寄存器)。
例如:MRSR1,CPSR;将CPSR 状态寄存器读取,保存到R1 中MRSR2,SPSR;将SPSR 状态寄存器读取,保存到R2 中通过MRS 指令可以取得状态寄存器里的值,然后比较其模式位M[4:0]的值判断当前所处模式,当然也可以比较其它相应位了解当前CPU 的状态。
同样,在ARM 处理器中,只有MSR 指令可以对状态寄存器CPSR 和SPSR 进行写操作。
与MRS 配合使用,可以实现对CPSR或SPSR 寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ 中断等。
由于xPSR 寄存器代表了CPU 的状态,其每个位有特殊意义,在执行对xPSR 状态寄存器写入时(读取时不存在该用法),为了防止误操作和方便记忆,将xPSR 里32 位分成四个区域,每个区域用小写字母表示:c 控制。
ARM汇编之寄存器
ARM汇编之寄存器在ARM处理器内部共有37个⽤户可访问的寄存器,分别为31个通⽤的32位寄存器和6个状态寄存器。
⼀.通⽤寄存器:1.在汇编语⾔中,寄存器R0-R13为保存数据或地址值的通⽤寄存器。
2.其中寄存器R0-R7为未分组的寄存器。
对于任何处理器模式,它们都共享R0~R7的通⽤寄存器。
3.寄存器R8-R12为两个分组的物理寄存器。
a.FIQ拥有⾃⼰独⽴的R8~R12的通⽤寄存器。
b.其他六种处理器模式共享R8~R12的通⽤寄存器注:寄存器R8~R12在ARM体系结构中没有特定的⽤途。
给FIQ单独的R8~R12可实现快速的中断处理(在发⽣FIQ中断后,处理器不⽤为了保护寄存器⽽浪费时间,从⽽提⾼了FIQ的处理速度)4.寄存器R13和R14a.⽤户模式和系统模式公⽤R13和R14的寄存器内容。
b.其它五个模式拥有⾃⼰独⽴的R13和r14寄存器内容。
c.R13作为堆栈指针(SP),⽤于保存待使⽤的寄存器内容。
d.寄存器R14称为链接寄存器(LR),它的作⽤有两个:当使⽤BL指令调⽤⼦程序时,系统会⾃动将 BL指令的下⼀条指令的地址存⼊R14中。
程序A指令过程中调⽤程序B程序跳转⾄标号Lable处,执⾏程序B.系统将BL Lable指令的下⼀条指令所在地址存⼊R14中程序B执⾏最后,执⾏语句MOV PC,LR将R14寄存器的内容放⼊PC处,返回⾄NEXT处继续执⾏。
●当发⽣异常时,系统⾃动将异常的返回地址放⼊R14中(有些异常有⼀个⼩的固定的偏移量)⼆.重要的寄存器1.堆栈指针R13R13作为堆栈指针SP。
在ARM指令集中,由于没有以特殊⽅式使⽤R13的指令。
(在Thumb)指令集中存在使⽤R13的指令)每个异常模式都有其⾃⾝的R13分组版本,它通常指向由异常模式所专⽤的堆栈。
在⼊⼝处,异常处理程序通常将其他要使⽤的寄存器值保存到这个堆栈。
通过返回时将这些值重装到寄存器中。
异常处理程序可确保异常发⽣时的程序状态不会被破坏。
ARM+指令集(中文版)
除了允许 PC 使用完全的 32 位之外,还有进一步的变更,就是给 PSR 增加了额外的有特 权的模式。这些模式用于处理未定义指令和异常终止例外:
• 未定义指令、异常终止、和超级用户不再共享同一个模式。去掉了在早期 ARM 上存 在的对超级用户的那些限制。
• 在 ARM6 系列(和以后的其他兼容芯片)中通过设置片上某个控制寄存器来确定这些 特征的可获得性。可以选择三个处理器配置中的一个: o 26 位程序和数据空间,这个配置强制 ARM 在 26 位地址空间中进行操作。 在这个配置中只能获得四个 26 位模式(参照处理器模式描述);不可能选择 任何 32 位模式。在所有当前的 ARM6 和 7 系列上复位(reset)时被设置为 这个模式。 o 26 位程序空间和 32 位数据空间。除了禁止地址例外来允许数据传送操作 访问完整的 32 位地址空间之外,与 26 位程序和地址空间配置相同。 o 32 位程序和数据空间。这个配置把地址空间扩展成 32 位,并介入了对处 理器模型的重大变更。在这个配置中你可以选择任何 26 位和 32 位处理器 模式(参见下面的处理器模式)。
v1
R5 ------- R5 ------- R5 ------- R5
v2
R6 ------- R6 ------- R6 ------- R6
v3
R7 ------- R7 ------- R7 ------- R7
v4
R8 ------- R8 ------- R8
R8_fiq v5
R9 ------- R9 ------- R9
尽管这个汇编器站点的某些部分覆盖了 32 位模式(比如运行在 SVC32 下的一个简要的例 子!),但多数部分是关于 26 位模式操作的,这是为了与 RISC OS 的当前可获得的版本相 兼容(就是 RISC OS 2 到 RISC OS 4);我注意到部分例子不适用于 32 位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STOP MOV R0,#0x18
LDR R1,=0x20026
SWI 0x123456 END
;标记程序结束
实验结论
实验总结及心得体会
实验思考题
1. 在 ADS 中建立一个项目工程文件,并调试实验参考程序. 使 AXD 调试时注意打开寄存器窗口,内存窗口.观察运行结果. 写出 CPSR 寄存器当前的工作状态.
ARM 处理器共有RM 的 7 种不同处理器模式,每一种模式下都有一组相应的寄存器组。在任何时刻,可见 的寄存器包括 15 个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。寄 存器与处理器模式的对应关系如图 1 所示:
PC, R14_svc~R8_svc,R12~R0,CPSR,SPSR_svc PC, R14_abt~R8_abt,R12~R0,CPSR,SPSR_abt PC, R14_und~R8_und,R12~R0,CPSR,SPSR_und PC, R14~R0,CPSR
实验步骤
1. 打开 Codewarrior For ARM Developer Suite, 依次点击 File->New,新建一个 ARM Executable Image 工程,工程名取为 Example_1,点击 OK。
ARM 指令集是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较 为简单。RICS 指令集的一个显著特点为:访问存储器只能通过 Load/Store 两种指令完成。 其它指令只能对寄存器和立即数操作。ARM 提供了 LDR/STR 两条指令实现了访存操作, 同时,为了提高访存速度,还提供了 LDM/STM 用于批量访存。
实验
ARM 寄存器/处理器模式
实验目的
熟悉使用 ADS 开发环境,初步学会搭建嵌入式开发环境。
实验设备
硬件:PC 机。 软件:ADS 集成开发环境,Windows 2000/XP/2003。
实验内容
熟悉开发环境,并使用 LDR/STR 和 MOV 指令等访问寄存器或存储单元。
实验原理
以下的寄存器按功能可以分了两类:通用寄存器和状态寄存器。其中通用寄存器中的 R13、R14 和 R15 按管理分别被用作堆栈指针寄存器(SP)、返回地址寄存器(SP)和程序寄存 器(PC)。状态寄存器只有两种:CPSR 和 SPSR。
通用寄存器
图 1 ARM 处理器模式与寄存器的关系
通用寄存器包括 R0~R15,可以分为三类:
可自由地使用能在 ARM 和 Thumb 状态之间切换的指令。 模式位:M0, M1, M2, M3 和 M4 (M[4:0]) 是模式位。
这些位决定处理器的工作模式.如表 1 所示。
表 1 ARM 工作模式 M[4:0]
M[4:0]
模式
可存取的寄存器
0b10000 用户模式
PC, R14~R0,CPSR
3、向汇编源文件中添加程序代码,并保存。注意,ARM 汇编源程序格式要求指令代码不能 顶格写,需加 space 或 tab 键以识别指令信息,标号需顶格写。
4、点击 DebugRel Settings 按钮进行编译和调试设置。 5、点击 Make 按钮对源代码进行编译,生成 Source.o 目标文件。 6、点击 Debug 按钮进入 AXD 调试运行界面。 7、单步执行程序,实时地通过寄存器窗口、内存窗口来观察数据信息,通过底部的信息栏 来获取调试信息,透过实验加深理解 ARM 指令的使用。
1. 未分组寄存器 R0~R7,它们在每个模式下都对应同一个物理寄存器。 2. 分组寄存器 R8~R14,又称影子寄存器,不同模式下的寄存器对应的物理寄存器不同。
3. 程序计数器 PC(R15) 。 程序状态寄存器
CPSR 和 SPSR 的格式如下:
31 30 29 28 27
26 8
7 654321 0
2. 点击 File->New->File 新建一 ARM 汇编源文件,取名为 Source.s,放在工程目录中;点击 Add to project 单选框,选择加入的工程;选择生成目标(Debug、DebugRel、Release), 并保存。注意,一定要加文件后缀 .s 来标识为汇编源文件,也可以新建 .c 或 .cpp 来 分别创建 C 源文件和 C++源文件。
实验参考程序
AREA Example1,CODE,READONLY ; 声明代码段 Example1
ENTRY
; 标识程序入口
CODE32
; 声明 32 位 ARM 指令
START
MOV R0,#10
; R0 <= 10
MOV R1,#3 ADD R0,R0,R1
; R1 <3 ;即是 R0 =R0 + R1
NZ CVQ
保留
I F T MMMMM
条件码标志:N、Z、C、V。
大多数指令可以测试这些条件码标志以决定程序指令如何执行。
控制位:最低 8 位,I、F、T 和 M 位用做控制位。
当异常出现时改变控制位。
当处理器在特权模式下也可以由软件改变。
中断禁止位:I 置 1 则禁止 IRQ 中断。
F 置 1 则禁止 FIQ 中断。 T 位:T=0 指示 ARM 执行。T=1 指示 Thumb 执行。在这些架构系统中,
0b10001 FIQ 模式
PC, R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq
0b10010 IRQ 模式
PC, R14_irq~R8_fiq,R12~R0,CPSR,SPSR_irq
0b10011 0b10111 0b11011 0b11111
管理模式 中止 未定义 系统