第四章ARM存储与异常中断处理[1]
嵌入式系统课后答案
嵌⼊式系统课后答案嵌⼊式系统2011作业(⾮标准答案,仅供参考)第1章嵌⼊式系统概述 1、什么是嵌⼊式系统?答:嵌⼊式系统指的是以应⽤为中⼼和以计算机技术为基础的,并且软硬件是可裁剪的,能满⾜应⽤系统对功能、可靠性、成本、体积、功耗等指标严格要求的专⽤计算机系统。
3、根据嵌⼊式系统的复杂程度,嵌⼊式系统可分为哪4类?答:1:单个微处理器;2:嵌⼊式处理器可扩展的系统; 3:复杂的嵌⼊式系统; 4:在制造或过程控制中使⽤的计算机系统。
5、从硬件系统来看,嵌⼊式系统由哪⼏部份组成?画出简图。
答:P11图1-42.2 回答下列关于ARM 编程模式的问题(1)在该模式下有多少通⽤寄存器(2)CPSR 的作⽤是什么(3)Z 位的作⽤是什么(4)程序计数器保存在何处答(1)31个通⽤寄存器(2)为状态寄存器,保存当前的状态,可以在任何模式下访问(3)Z=1 运算结果为0 Z=0 运算结果不为0 (4)R15(PC)2.3 下列的arm 条件码的含义是什么(1)EQ (2)NE (3)MI (4)VS (5)GE (6)LT 答(1)z 置位相等 (2)z 清零不相等 (3)n 置位负数 31个通⽤寄存pc ,6个状~R7不分组,R8~R14按模式分组,R15为程序计数器,CPSR 为状态寄存器,SPSR 为保存程序状态寄存器。
R13为堆栈指针寄存器,R14为链接寄存器。
CPSR 在各种模式下多可以访问,⽽在⽤户模式及系统模式下SPSR 不可以被访问。
2.6若寄存器R1=0x01020304,分别按照⼤端模式和⼩端模式存储在0x30000字单元中,试分别写出两种模式下内存存储内容,并标出内存地址答⼤端模式 0x30000 01 0x30001 02 0x30002 03 0x30003 04 ⼩端模式 0x30000 04 0x30001 030x30002 02 0x30003 012.7 ARM 存储器的存储周期有⼏种类型?对应于Cache 访问和存储器访问是何存储周期?答:ARM 存储器有4种存储周期:空闲周期,⾮顺序周期,顺序周期,协处理器寄存器传送周期。
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控制位——决定了处理器的运行模式
• 当发生异常时这些位被改变。
第4章 LPC2000系列ARM硬件结构(14~18)(1)
• 中断源说明
CTI中断:当接收FIFO中的有效数据少于预定的触发点数量(至少有一个字 节)时,如果在一定时间内仍然没有接收到新的数据,那将触发该中断。这个 时间为:3.5~4.5个字节所需要的时间。注:对接收FIFO的任何操作都会清零 该中断标志。 RxDn
UnRSR 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
4.14 UART(0、1)
• 中断接口
UART0和UART1的中断接口包含中断使能寄存器 (UnIER)和中断标识寄存器(UnIIR)。
UART0中断源
UART0接收单元
UART1中断源
中断
UART1接收单元 UART1发送单元 Modem模块
中断使能寄存器 UnIER 中断标志寄存器 UnIIR
4.14 UART(0、1)
• 回写模式
在Modem回写模式下,发 送器输出的串行数据在内部连接 到接收器的串行输入端。输入脚 RxD1对回写模式无影响,输出脚 TxD1保持总为1的状态。4个 Modem输入(CTS, DSR, RI和 DCD)与外部断开。此时, U1MSR的高4位分别由U1MCR的 低4位驱动。
LPC2000系列ARM硬件结构
1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器 (EMC) 7.引脚连接模块 8. GPIO 9. 向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12. SPI接口 2 13. I C接口 14. UART(0、1) 15. A/D转换器 16. 看门狗 17. 脉宽调制器(PWM) 18. 实时时钟
ARM的异常处理学习笔记转贴
ARM 的异常处理学习笔记转贴ARM的异常处理这部分比较不好理解。
当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。
当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执行。
在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。
1、引起异常的原因(1)、指令执行引起的异常软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。
(2)、外部产生的中断复位、FIQ、IRQ。
2、ARM中异常中断的种类(1)、复位(RESET)a、当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行,包括系统加电和系统复位。
b、通过设置PC跳转到复位中断向量处执行称为软复位。
(2)、未定义的指令当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。
(3)、软件中断这是一个由用户定义的中断指令(SWI)。
可用于用户模式下的程序调用特权操作指令。
在实时操作系统中可以通过该机制实现系统功能调用。
(4)、指令与取终止(Prefech Abort)如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。
(5)、数据访问终止(DATAABORT)如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断。
(6)、外部中断请求(IRQ)当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。
系统中个外设通过该异常中断请求处7)、快速中断请求(FIQ) 理服务。
(当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断。
3.15.嵌套中断,咬尾中断,晚到异常与中断延迟(1)
CM3中断的嵌套、尾链、晚到与延迟
用户程序
优先级3 中断1
优先级2 中断2
继续压栈
中断1
压栈
中 断
中断2
1的
入
迟来
出栈
口 地
出
址
栈
CM3中断的嵌套、尾链、晚到与延迟
中断延迟 从检测到某中断请求,到执行了其服务例程的第一条指令时,所经
➢ 对于除法指令和双字传送指令( LDRD/STRD ),CM3将为了保证中断及时 响应而取消它们的执行,待返回后重新开始;
➢ 对于多寄存器传送指令(LDM/STM) ,为了加速中断的响应,CM3支持指令 执行的中止和继续。
感谢
谢谢,精品课件
资料搜集
ARM Cortex-M3 的STM32系列 嵌套中断,咬尾中断,晚到异常与中断延迟(1)
CM3中断的嵌套、尾链、晚到与延迟
中断嵌套 在Cortex-M3内核以及NVIC,已经内建了对中断嵌套的支持:➢ NVIC会排出优先级解码的顺序; ➢ 自动的硬件入栈和出栈。
注意:使用中断嵌套时,必须仔细计算主堆栈容量,避免堆栈溢出。
过的时间。 在CM3中,若存储器系统够快,且总线系统允许入栈与取指同时进行,
同时该中断可以立即响应,则中断延迟是固定的12周期。 处理尾链中断时,省去了堆栈操作,因此切入新异常服务例程的延迟可
以缩短至6周期。
CM3中断的嵌套、尾链、晚到与延迟
为了不影响中断延迟,对于需要较多的周期才能完成的指令,CM3采用了 以下两种处理方法:
CM3中断的嵌套、尾链、晚到与延迟
尾链中断
当上一个异常处理返回, Cortex-M3响应挂起的异常时,为了 避免浪费CPU时间,继续使用上一个异常已经入栈好的寄存器数据。两 个异常只执行了一次入栈/出栈操作。
ARM存储系统MMU
编码 0b00 0b01
访问类型 没有访问权限 客户类型
0b10 保留 0b11 管理者权限
含义 这时访问域将产生访问失效
根据页表中地址变换条目的访问权限控制位决定是否 允许特定的存储访问。 将产生不可预知的结果 不会产生访问失效
23
关于快表的操作
1. 使无效快表的内容(由CP15中的C8控制)
指令 MCR p15,0,Rd,c8,c7,0 MCR p15,0,Rd,c8,c7,1 MCR p15,0,Rd,c8,c5,0 MCR p15,0,Rd,c8,c5,1 MCR p15,0,Rd,c8,c6,0 MCR p15,0,Rd,c8,c6,1
不能访问
0b00 0 1 只读
只读
0b00 1 1 不可预测 不可预测
0b01 X X 读/写 不能访问
0b10 X X 读/写 只读
0b11 X X 读/写 读/写
22
MMU中的域
域是段、大页和小页的集合。ARM 结构支持16 个域。
对域的访问由域访问控制寄存器( CP15的寄存器C3 )的两 个位字段控制。即,C3中的每2位控制一个域的访问控制特 性。其编码及含义如下表:
Rd 0 虚拟地址 0 虚拟地址 0 虚拟地址
含义 使无效指令和数据Cache 使无效整个Cache中的单个地址变换条目 使无效指令Cache 使无效指令Cache中的单个地址变换条目 使无效数据Cache 使无效数据Cache中的单个地址变换条目
2. 锁定快表的内容(由CP15中的C10控制)
24
CP15中的寄存器C1
F(bit[10]): 由生产商定义。 Z(bit[11]): 使能跳转预测, 0 = 禁止, 1 = 使能。 I(bit[12]): 当数据和指令cache分开时,使能指令cache。 0 = 禁
ARM异常处理机制
关键词: ARM;异常处理;异常中断;VIC;SWI
中图分类 号:TP311. 11
文献标识码:A
作为嵌入式系统处理器,为了保证系统的实时 性和程序执行的稳定性,ARM 处理器建立了一套 完整的异常处理机制。ARM 处理器共有 7 种异常
NOP LDR LDR
;保留向量 PC, IRQ_Addr PC, FIQ_Add r
3)将返回地址修正为 PC 4,并保存到相应 的 LR 寄存器中;
4)异常向量地址入 PC,跳转并执行中断服务 程序。
1.2 用户程序中需要关心的问题
1)异常向量的重新定位
收稿日期:2006-01-07
作者简介:李 莉(1974 - ),女,山东青岛人。硕士,讲师。主要研究方向为单片机及嵌入式系统。
快速中断请求 FIQ
FIQ 模式
各异常都有固定的优先级,依次为:复位、数
据中止、FIQ、IRQ、预取指中止、未定义指令和
SWI。由表 1 可知,各异常向量之间只有 4 个字节
的空间,因此通常在向量表中放置跳转指令,程序
如下:
Vectors
LDR LDR LDR LDR LDR
PC , R eset_Addr PC , Undef_Addr PC , SWI_Ad dr PC , PAbt_Addr PC , DAbt_Addr
未定义指令
未定义模式
0x00000 008
软件中断 (SWI)
特权模式
0x00000 00C 预取指中止(从存储器取指出错) 中止模式
0x00000 010 数据中止(数据访问存储器出错) 中止模式
0x00000 014
保留
保留
0x00000 018
ARM中断向量表与响应流程
一首先中断向量表定义在哪里?如何加载?二中断向量表与中断服务程序三处理流程/////////////////////////////////////////////////////////////////// /////////////////////////////////一首先中断向量表定义在哪里?__vectors_start首先中断向量表定义的是什么?定义的就是中断服务程序的跳转指令,因为每个中断向量在向量表中只有一个字节的存储空间,只能存放一条指令,所以通常存放跳转指令,使程序跳转到存储器的其他地方,再执行中断处理。
这里cpu就可以找中断服务程序,跳转指令如例如:LDR PC, =ISR_HANDLER;或者指令与不同的cpu平台有关系。
1.1 vector表定义的方式:往往是变量地址:如 ..globl __vectors_start 定义__vectors_start符号,这样外部程序可以访问到。
entry-armv.S__vectors_start:swi SYS_ERROR0b vector_und + stubs_offsetldr pc, .LCvswi + stubs_offsetb vector_pabt + stubs_offsetb vector_dabt + stubs_offsetb vector_addrexcptn + stubs_offsetb vector_irq + stubs_offsetb vector_fiq + stubs_offsetARM的异常处理向量表在entry-armv.S文件中:1.2 中断向量表类型From ARM.globl __vectors_start 定义__vectors_start符号,这样外部程序可以访问到。
__vectors_start:定义异常(地址逻辑自上而下0x00----0x1c) 跟具体的cpu 特性有关ARM( swi SYS_ERROR0 )向量0:reset,但是这里被修改了,如果是cpu跑到了0地址,用软件中断SYS_ERROR0来处理.THUMB( svc #0)向量1THUMB( nop)向量2W(b) vector_und + stubs_offset 向量3 #未定义指令异常W(ldr) pc, .LCvswi + stubs_offset 向量4#软中断W(b) vector_pabt + stubs_offset #向量5指令预取异常中断(Prefetch Abort )W(b) vector_dabt + stubs_offset #向量6数据中止W(b) vector_addrexcptn + stubs_offset #向量7地址异常These aren't too critical.W(b) vector_irq + stubs_offset #向量8.IRQ(一般中断)W(b) vector_fiq + stubs_offset #向量9 FIQ(快速中断)/*关于.globl指令:.global/.globl 命令.global symbol.global 使得连接程序(ld)能够识别 symbl声明symbol是全局可见的。
ARM的指令集
堆栈寻址
SP 增长
堆栈存 储区
向下 增长 栈区
栈底
0x12345678
栈顶SP 堆栈压栈
堆栈寻址
堆栈指针指向最后压入的堆栈的有效数据项,称 为满堆栈;堆栈指针指向下一个待压入数据的空 位置,称为空堆栈。
压栈
SP栈顶 0x12345678 SP栈顶
满堆栈 栈底
; 读 取 R3+0x0C 地 址 上 的 存 储 ;单元的内容,放入R2
; 先 R0=R0-4 , 然 后 把 R1 的 值 寄 ;存到保存到R0指定的存储单元
基址变址寻址
0x4000000C 0xAA
将R3+0x0C作 为地址装载数
R3 0x40000000
据
R2 00xxA5A5
LDR R2,[R3,#0x0C]
寄存器间接寻址指令举例如下:
LDR
R1,[R2]
;将R2指向的存储单元的数据读 ;出保存在R1中
SWP
R1,R1,[R2] ;将寄存器R1的值和R2指定的存 ;储单元的内容交换
寄存器间接寻址
0x40000000 0xAA R2 0x40000000 R0 0x55
LDR R0,[R2]
寄存器偏移寻址
;到R1 。
MVN R0 ,# 0 ;将立即数 0 取反传送到寄存器 R0 中,完成后
;R0=-1。
MOVS R2,#0x10 ;R2= #0x10,并影响标志位。
MVNS R2,#0xFF ;R2=0Xffff00,并影响标志位。
37
数据处理指令
比较指令
助记符
说明
CMP Rn, operand2 比较指令
寄存器移位寻址是ARM指令集特有的寻址方式。当第2 个操作数是寄存器移位方式时,第2个寄存器操作数 在与第1个操作数结合之前,选择进行移位操作。
中断异常处理流程
计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。
异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。
而中断则带有向处理器主动申请的意味。
但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。
若无特别说明,对“异常”和“中断”都不作严格的区分。
本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。
1.异常中断响应和返回系统运行时,异常可能会随时发生。
当一个异常出现以后,ARM微处理器会执行以下几步操作:1) 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
2) 将CPSR复制到相应的SPSR中。
3) 根据异常类型,强制设置CPSR的运行模式位。
4) 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
这些工作是由ARM 内核完成的,不需要用户程序参与。
异常处理完毕之后,ARM 微处理器会执行以下几步操作从异常返回:1) 将连接寄存器LR的值减去相应的偏移量后送到PC中。
2) 将SPSR复制回CPSR中。
3) 若在进入异常处理时设置了中断禁止位,要在此清除。
这些工作必须由用户在中断处理函数中实现。
为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。
采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。
当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序。
当异常处理完成以后,返回到主程序继续执行。
可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。
2.异常处理程序设计2.1 异常响应流程由于向量表的限制,只能有一条指令B完成32MBX围内的跳转,并不能保证所有的异常处理函数都位于32MBX围内。
ARM异常中断以及对ARM异常返回地址的分析
返回地址:SUBS PC,R14,#8 返回地址分析: 当进入异常时,R14_abt = address of the aborted instruction + 8
所以要返回到有问题的指令处重新执行,所以返回的地址为 R14-8 IRQ 中断异常:
产生原因: 当处理器的外部中断请求引脚有效,且 CPSR 寄存器的 I 控制位被清除 时,处理器产生外部中断 IRQ 异常。
是因为当前指令即引起软件异常中断的指令执行后所引起的,说明当前指令已近执行,当从
中断返回时,执行的指令应该是当前指令的下一条指令,即待执行指令的地址应该是 0x3004, 而 R14 中存放的即为 0x3004,所以返回时使用将 R14 的值直接赋给 PC 即可。
指令预期中止异常: 发生原因:若在指令预取阶段遇到无效指令时,系统存储器将该预取的指令标记为无
效指令,当处理器试图去执行这一条被标记为预取无效的指令时,将产生指令预取中止异常, 注意若处理器没有执行无效指令时将不会产生异常中断(在流水线中存在一条分支指令,导 致该非法指令没有执行,将不会产生该异常)。
处理器动作: R14_abt = address of the aborted instruction + 4 SPSR_abt = CPSR ….. …..
2、各异常分析
举个小例子,下面是一段 ARM 汇编代码: (后面的返回地址分析中将会用到此图)
B53-2.4.2.ARM7中断与异常
LDR
PC, =ResetInit
LDR
PC, =Undef_Handler
LDR
PC, =SWI_Handler
LDR
PC, =Prefetch_Handler
LDR
PC, =DataAbort_Handler
DCD
0xb9205f80
LDR
PC, =IRQ_Handler
LDR
PC, =FIRQ_Handler
管理
未定义
管理 中止 中止 保留 中断 快中断
禁止
I 禁止 I I — 禁止 禁止
禁止
F
F F F — F 禁止
注:表中的I和F, 表示该位不受影响,保留原来的状态
(4) 其他异常源返见回地址计算汇总表
异常或入口 (中断源)
返回指令
BL
MOV PC,R14
SWI
MOVS PC,R14_svc
未定义的指令 MOVS PC,R14_und
▪将下一条指令的地址存入 IRQ模式的LR寄存器
▪将跳转地址存入PC,实现 跳转
LR LR_sys
BLacRk_Airdqdr
寄 存
PC
JumpAddr
N Z C V . . . I F T MOD
器 CPSR ? ? ? ? . . . 01 ? 10 ISRYQS
组
SPSR
? ?S?P?.S. R.0?_1iSrqYS
SUBS PC,R14_irq,#4
(3)异常进入退出CPSR状态
地址
异常类型
进入时的模式 进入时I的状态 进入时F的状态
0x0000 0000 复位
0x0000 0004 未定义指令
ARM寄存器介绍
ARM寄存器介绍ARM处理器共有37个寄存器。
其中包括:31个通用寄存器,包括程序计数器(PC)在内。
这些寄存器都是32位寄存器。
以及6个32位状态寄存器。
但目前只使用了其中12位。
ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。
任意时刻(也就是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0~R14)、一个或两个状态寄存器及程序计数器(PC)。
在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有一些寄存器是各模式自己拥有的独立的物理寄存器。
表1列出了各处理器模式下可见的寄存器情况。
表1 各种处理器模式下的寄存器通用寄存器通用寄存器可以分为下面3类:未备份寄存器(The unbanked registers),包括R0~R7。
备份寄存器(The banked registers),包括R8~R14。
程序计数器PC,即R15。
未备份寄存器未备份寄存器包括R0~R7。
对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器。
在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中数据被破坏。
未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未备份寄存器。
备份寄存器对于备份寄存器R8~R12来说,每个寄存器对应两个不同的物理寄存器。
例如,当使用快速中断模式下的寄存器时,寄存器R8和寄存器R9分别记作R8_fiq、R9_fiq;当使用用户模式下的寄存器时,寄存器R8和寄存器R9分别记作R8_usr、R9_usr等。
在这两种情况下使用的是不同的物理寄存器。
系统没有将这几个寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理过程非常迅速。
对于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式和系统模式共用的;另外的5个对应于其他5种处理器模式。
嵌入式系统课后习题部分答案1
第一章1-1.简述嵌入式系统的定义。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
1-2.简述嵌入式系统的组成。
从体系结构上看,嵌入式系统主要由嵌入式处理器、支撑硬件和嵌入式软件组成。
其中嵌入式处理器通常是单片机或微控制器,支撑硬件主要包括存储介质、通信部件和显示部件等,嵌入式软件则包括支撑硬件的驱动程序、操作系统、支撑软件及应用中间件等。
嵌入式系统的组成部分是嵌入式系统硬件平台、嵌入式操作系统和嵌入式系统应用。
嵌入式系统硬件平台为各种嵌入式器件、设备(如ARM 、PowerPC、Xscale、MIPS等);嵌入式操作系统是指在嵌入式Linux、uCLinux、WinCE等。
1-3.ARM7处理器使用的是(ARMv4)指令集。
ARM7内核采用冯·诺依曼体系结构,数据和指令使用同一条总线。
内核有一条3级流水线,执行ARMv4指令集。
1.4.Cortex-M3主要应用在哪些方向?主要用在平衡ARM的产品的性能和功耗,提高ARM的性能,降低其功耗1.5.简述StrongARM处理器和ARM处理器的关系StrongARM是第一个包含5级流水线的高性能ARM处理器,但它不支持Thumb指令集1-6.ARM9采用的是(5)级流水线设计。
存储器系统根据哈佛体系结构(程序和数据空间独立的体系结构)重新设计,区分数据总线和指令总线。
1.7.简述ARM9和ARM9E的不同点硬件处理器不一样指令集不一样1.8.ARM11采用的是什么架构的指令ARMv6嵌入式操作系统的特点(1)体积小(2)实时性(3)特殊的开发调试环境SecureCore处理器系列的特点(1)支持ARM指令集和Thumb指令集,以提高代码密度和系统性能(2)采用软内核技术一提供最大限度的灵活性,可以防止外部对其进行扫描探测(3)提供了安全特性,可以抵制攻击(4)提供面向智能卡和低成本的存储保护单元MPU(5)可以集成用户自己的安全特性和其它的协处理器第二章2-1.简述ARM可以工作在几种模式。
arm处理器异常中断响应过程
arm处理器异常中断响应过程ARM处理器是一种广泛应用于移动设备、嵌入式系统和服务器等领域的处理器架构。
在运行过程中,处理器可能会遇到各种异常情况,如访问非法内存、除零错误等。
当这些异常发生时,ARM处理器需要做出相应的中断响应,以保证系统的稳定性和安全性。
ARM处理器异常中断响应的过程可以分为异常触发、异常处理和恢复执行三个阶段。
首先是异常触发阶段。
当处理器在执行指令时,发生了某种异常情况,例如访问了非法的内存地址,处理器会立即检测到异常,并将当前指令的状态保存起来。
同时,处理器会根据异常类型,确定异常向量的地址,将控制转移到异常向量所指向的地址处。
接下来是异常处理阶段。
当处理器进入异常向量所指向的地址时,会执行相应的异常处理程序。
这个程序通常是由操作系统或应用程序提供的,用于处理不同类型的异常。
在异常处理程序中,可以进行一系列的操作,例如保存现场、记录异常信息、处理异常原因等。
处理程序还可以根据需要选择继续执行或终止当前指令。
最后是恢复执行阶段。
在异常处理程序执行完毕后,处理器会根据异常返回地址,将控制权返回到引发异常的指令处,继续执行后续指令。
在返回之前,处理器可能会进行一些必要的恢复操作,如恢复现场、清除异常状态等。
这样,系统就可以继续正常运行,不受异常的影响。
需要注意的是,ARM处理器还提供了一些特殊的异常处理方式,如中断(Interrupt)和陷阱(Trap)。
中断是外部设备触发的异常,用于异步事件的处理,例如外部设备的输入输出请求。
陷阱是由程序主动触发的异常,用于实现系统调用和调试功能。
这些异常的触发和处理方式与一般异常略有不同,但整体的处理过程仍然符合前述的异常中断响应流程。
在ARM处理器中,异常中断响应是保证系统正常运行和异常处理的关键环节。
通过合理的异常处理程序和恢复机制,可以有效地应对各种异常情况,提高系统的可靠性和稳定性。
同时,开发人员也需要根据具体应用场景和需求,灵活地配置和调整异常处理方式,以满足不同的需求。
ARM嵌入式系统结构与编程(第2版)_第1-4章_习题答案
思考与练习题答案
1. 在指令编码中,条件码占有几位,最多有多少个条件,各个条件是如何形成的? 答:见教材 3.1 节的描述。
2. 指令条件码中,V 标志位在什么情况下才能等于 1? 答:当指令的算术运算发生异常时,V 标志位置 1。例如,两个正数相加,其
结果为一负数;或者是两个负数相加,其结果为一正数,都会置 V 标志位。
《ARM 嵌入式系统结构与编程》第 2 版,邱铁 编著. 清华大学出版社. 2013 年 8 月第 2 版,2015 年 8 月第 4 次印刷
称为异常模式
4. 分析程序状态寄存器(PSR)各位的功能描述,并说明 C、Z、N、V 在什 么情况下进行置位和清零。
答:PSR 的具体格式为
V—溢出标志位 对于加/减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,
4. 分析逻辑右移、算术右移、循环右移、带扩展的循环右移它们间的差别。 答:见教材 3.2 节的图 3-1 移位操作功能描述。
5. ARM 数据处理指令具体的寻址方式有哪些,如果程序计数器 PC 作为目标寄存 器,会产生什么结果?
答:ARM 数据处理指令具体的寻址方式有 5 种,见教材 3.2 节的具体说明。 如果程序计数器 PC 作为目标寄存器,会产生程序发生跳转。
0x1FE80000
答:每个立即数由一个 8 位的常数进行 32 位循环右移偶数位得到,其中循环右
移的位数由一个 4 位二进制的两倍表示。即:
<immediate>=immed_8 进行 32 位循环右移(2*rotate_4)位
符合这一条件的都为合法的立即数。
1) 0x5430 0B 0101 0100 0011 0000
3. 在 ARM 指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合
关于Thumb 指令集的介绍[1_1]
第四章 Thumb 指令集4.1 Thumb 指令集概述 4.2 Thumb 指令详细介绍4.1 Thumb指令集概述ARM 开发工具完全支持 Thumb 指令,应用程序可以 灵活的将ARM和Thumb子程序混合编程以便在例程的基 础上提高性能或代码密度。
在编写 Thumb 指令时,先要 用伪指令 CODE16 声明( ADS 的编译环境下),而且在 ARM指令中要使用BX指令跳转到Thumb指令,以切换处 理器状态。
本节可以分为以下几个部分:4.1.1 4.1.2 4.1.3 4.1.4Thumb指令集编码 Thumb状态切换 编程模型 Thumb指令集特性4.1.1Thumb指令集编码Thumb指令集编码如下:4.1.2Thumb状态切换在任何时刻,CPSR的第5位(位T)决定了ARM微处理器执 行的是ARM指令流还是Thumb指令流。
当T置1,则认为是 16位的Thumb指令流;当T置0,则认为是32位的ARM指令 流。
进入Thumb模式 进入 Thumb 指令模式有两种方法:一种是执行一条交换 转移指令 BX,另一种方法是利用异常返回,也可以把微 处理器从ARM模式转换为Thumb模式。
退出Thumb模式 退出 Thumb 指令模式也有两种方法:一种是执行 Thumb 指令中的交换转移BX指令可以显式的返回到ARM指令流。
另一种是利用异常进入ARM指令流 。
4.1.3编程模型Thumb 指令集是 ARM 指令集的一个子集,并只能对限定的 ARM寄存器进行操作。
其编程模型如下图所示:r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 SP(r13) LR(r14) PC(r15) CPSRLo寄存器有阴影的寄存器 访问时受到限制Hi寄存器注意: z Thumb指令集对低8个通用寄存器R0~R7具有全部 访问权限。
R13~R15具有特殊应用。
z CPSR的条件标志位由算术和逻辑操作设置并控制转 移。
《ARM嵌入式系统结构与编程》习题答案 邱铁编著
《ARM嵌入式系统结构与编程》邱铁编著. 清华大学出版社.年月第版 年月第二次印刷20093120108 《ARM嵌入式系统结构与编程》第1~4章思考与练习题答案 此答案仅供教师教学用 第1章绪论思考与练习题答案 1. 国内嵌入式系统行业对“嵌入式系统”的定义是什么 如何理解答 见教材1.1节。
2. 嵌入式系统是从何时产生的 简述其发展历程。
答 见教材1.1节。
3. 当前最常见的源码开放的嵌入式操作系统有哪些 请举出两例 并分析其特点。
答 见教材1.2.1节的嵌入式Linux和嵌入式实时操作内核μC /OS-II。
4. 举例说明嵌入式设备在工控设备中的应用。
答 见教材1.3节的“工业控制领域”。
5. 未来嵌入式技术的发展趋势有哪些 答 见教材1.4节的嵌入式技术的发展趋势。
第2章 ARM技术与ARM体系结构思考与练习题答案 1 简述ARM处理器内核调试结构原理。
答 对教材1.2节的图2-1进行描述。
2 分析ARM7TDMI-S各字母所代表的含义。
答 参考教材2 1 2 ARM核版本命名规则说明。
课后答案网《ARM嵌入式系统结构与编程》邱铁编著. 清华大学出版社. 年月第版 年月第二次印刷200931201083 ARM处理器的工作模式有哪几种 其中哪些为特权模式 哪些为异常模式并指出处理器在什么情况下进入相应的模式。
答 ARM处理器共有7种工作模式用户模式 非特权模式 也就是正常程序执行的模式 大部分任务在这种模式下执行。
在用户模式下 如果没异常发生 不允许应用程序自行改变处理器的工作模式 如果有异常发生 处理器会自动切换工作模式FIQ模式 也称为快速中断模式 支持高速数据传输和通道处理 当一个高优先级(fast)中断产生时将会进入这种模式。
IRQ模式 也称为普通中断模式 :当一个低优先级中断产生时将会进入这种模式。
在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。
通常的中断处理都在IRQ模式下进行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
权限无关 – 当区域重叠时,具有最高优先权的区域的属性可以覆
盖其他区域的属性,优先权仅作用于重叠部分的地址 。
– 区域的起始地址必须是其大小的倍数。 – 区域的大小是2的乘幂,2的12次方到32次方。
2008年6月21日
第四章ARM存储与异常中断处理[1]
访问受保护区域时产生的异常
• 访问所定义区域外的存储器将产生异常。 • 如果是内核预取指令,则PU产生一个预取指令中
止异常。 • 如果是存储器数据请求,则PU产生数据中止异常
。
2008年6月21日
第四章ARM存储与异常中断处理[1]
带PU的ARM核概要
• 以下给出了四种带PU的ARM核概要属性
ARM核
• 如果请求符合区域访问标准,则PU允许内核读/ 写主存;如果存储器请求导致存储器访问违例, 则PU产生一个异常信号。
• 异常信号被传到处理器核,处理器核判断是出异 常是预取指令中止还是数据中止,然后跳转到对 应的异常处理例程。
2008年6月21日
第四章ARM存储与异常中断处理[1]
区域属性
• 有关区域的属性如下:
2008年6月21日
第四章ARM存储与异常中断处理[1]
Cortex-R4F方框图—含TCM接 口
• 注意图的右 侧含有一个 TCM仲裁和 接口模块
2008年6月21日
第四章ARM存储与异常中断处理[1]
ARM1136的TCM支持DMA传 输
• 参看ARM1136的方框图
2008年6月21日
第四章ARM存储与异常中断处理[1]
• 参看下图,抽象成一个呈金字塔型的存储结构 • 注重研究第2层
2008年6月21日
第四章ARM存储与异常中断处理[1]
4.6.3 片上存储器的用法
• 多数ARM处理器芯片内部集成了存储器
– 它们统称为片上存储器
– 用途有:片上Cache、片上SRAM、紧耦合存 储器(TCM) 、写缓存
• 片上存储器的存储空间可以通过指令进行配置, 定义成片上Cache,或者片上SRAM,或者一部 分片上Cache加一部分片上SRAM。
◇ software visibility and programmability of TCM size and enable
◇ boot control for ITCM
◇ data access to the ITCM for literal pool accesses in code
◇ simple SRAM-style interface supporting both reads and writes
第四章ARM存储与异常中断处理[1]
4.6.6 保护单元
• 保护单元
– PU,Protection Unit • 也称为:MPU,Memory Protection Unit • 为了消除术语的二义性,我们统一使用术语PU
– 保护单元提供了一个相当简单的替代MMU的方法来 管理存储器。
– 对于不需要PU的嵌入式系统而言,PU简化了硬件和 软件,主要表现在不使用转换表,这样免去了硬件遍 历转换表和软件建立与维护转换表。
– 基于处理器模式的权限 • 管理模式、用户模式等
– Cache写策略 • 写直达Cache操作、无Cache操作、无写缓存器操 作。
2008年6月21日
第四章ARM存储与异常中断处理[1]
含PU的ARM处理器主存访问过 程
• 当处理器访问主存的一个区域时,PU比较该区域 的访问权限属性和当时的处理器模式。
core.
The TCMs are located in the TCM address space.
2008年6月21日
第四章ARM存储与异常中断处理[1]
AT91SAM9261处理器的TCM
• AT91SAM9261的独立指令和数据缓存能支持 WinCE 和 Linux操作系统。
• 而其基于TCM 构架的SRAM区块则是“确定过程 式”实时操作系统的理想安排。
• 区域的存储边界通过两个属性进行配置:起始地 址和大小。
• 区域的大小可以是4KB~4MB的任何2的乘幂。
2008年6月21日
第四章ARM存储与异常中断处理[1]
受保护区域的属性
• 操作系统可以为受保护区域分配更多的属 性,包括:
– 访问权限、Cache和写缓存器策略 • 访问权限可以是:读/写、只读和不可访问
ARM740T
区域 指令区域和数据区 数目 域是否分离
8
否
指令和数据区域配 置是否分离
否
ARM940T
16
是
是
ARM946E-S 8
2008年6月21日
第四章ARM存储与异常中断处理[1]
ARM920T的片内存储器
• 注意:ARM920T核的内部没有TCM
2008年6月21日
第四章ARM存储与异常中断处理[1]
ARM720T的片内存储器
• 8 KByte unified cache • Memory Management
Unit (MMU) • write buffer • Unified 32-bit AHB bus
The ARM966E-S processor contains a TCM controller that:
◇ schedules requests to the TCM interface ◇ handshakes with the ARM966E-S memory
system controller to acknowledge when requests have been serviced ◇ returns TCM read data back to the ARM9E-S
2008年6月21日
第四章ARM存储与异常中断处理[1]
S3C44B0X和S3C4510B的三 种片上存储器的配置用法
• S3C44B0X和S3C4510B都有8KB的片上存储器 – 它们有三种配置用法 • 8KB的SRAM • 8KB的Cache • 4KB的SRAM加上4KB的Cache
• 较多采用片内RAM配置而非片内Cache配置。
、紧耦合处理器、写缓存配置之类的存储系统管理工 作由协处理器CP15完成。
• CP15可以包含16个32位寄存器
– 编号为CP0~CP15。 – 实际运用中写为C0~C15。
2008年6月21日
第四章ARM存储与异常中断处理[1]
CP15寄存器的访问
• 用户只能够在特权模式下使用MRC和MCR指令来 访问CP15寄存器。
第四章ARM存储与异常中断处理[1]
4.6.1 数据类型和存储格式
• ARM存储器中的数据类型有6种
– 有符号数
• 8位(字节)、16位(半字)、32位(字)
– 无符号数
• 8位(字节)、16位(半字)、32位(字)
– 缺省端序设置为小端序
第四章ARM存储与异常中断处理[1]
4.6.2 ARM的存储体系
interface carries both instructions and data • Embedded Trace Macrocell (ETM) interface
2008年6月21日
第四章ARM存储与异常中断处理[1]
4.6.4 协处理器CP15
• CP15即所谓的系统控制协处理器
– System Control Coprocessor – 在基于ARM的嵌入式系统中,诸如MMU、Cache配置
ARM966E-S核的TCM地址映 射
2008年6月21日
第四章ARM存储与异常中断处理[1]
ARM966E-S的TCM别名地址 空间
• 物理存储块可以 通过TCM接口映 射在片内的TCM 存储区
2008年6月21日
第四章ARM存储与异常中断处理[1]
ARM966E-S的TCM特点
• The ARM966E-S processor supports both instruction and data TCMs. You can use the DTCM and ITCM to store real-time and performance-critical code. The TCMs are instantiated externally to the ARM966E-S macrocell providing for flexibility in the design of the memory subsystem. The system designer can select memory type and optimize the memory subsystem for power or speed.
2008年6月21日
第四章ARM存储与异常中断处理[1]
ARM966E-S的TCM接口特点(
续1) The features of the TCM interface include:
◇ independent ITCM and DTCM sizes of 0KB or 1KB-64MB in power-of-two increments
• 除了片上紧耦合存储器外,还有紧耦合存储器接 口,它能够提供低延时的外存储器访问。
• 有的处理器含有分立的指令TCM和数据TCM。 TCM包含在存储器地址映射空间中,可以作为快 速存储器来访问。除了不得包含读敏感地址之外 ,对TCM接口上连接的存储器类型没有其他限制 。TCM使用物理地址,对TCM的写访问受到 MMU内部保护信息的控制。
2008年6月21日
第四章ARM存储与异常中断处理[1]