武汉科技大学嵌入式复习要点文档格式.doc
《武汉科技大学嵌入式复习要点文档格式.doc》由会员分享,可在线阅读,更多相关《武汉科技大学嵌入式复习要点文档格式.doc(11页珍藏版)》请在冰豆网上搜索。
实时操作系统的特点
异步的事件响应
切换时间和中断延迟时间确定
优先级中断和调度
抢占式调度
内存锁定
连续文件
同步
实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。
它强调的是实时性、可靠性和灵活性。
5、实时操作系统的优缺点:
(1)优点:
在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。
通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;
而且对实时性要求苛刻的事件都得到了快速、可靠的处理。
通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。
(2)缺点:
但是,使用嵌入式实时操作系统还需要额外的ROM/RAM开销,2~5%的CPU额外负荷,以及内核的费用。
常见的嵌入式操作系统
1.uClinux
2.WindowsCE
3.VxWorks
4.μC/OS-II
RISC是精简指令集计算机的缩写,其目标是设计出在高时钟频率下单周期执行,简单而有效的指令集。
ARM内核采用RISC体系结构,因此具有RISC的结构特点:
(1)具有大量的通用存储器;
(2)独特的装载/保存(load-store)结构;
(3)简单的寻址模式;
(4)统一和固定长度的指令格式。
ARM7TDMI-S的含义
基于ARM体系结构V4版本的低端ARM核,由ARM6发展而来,并能够稳定的在低于5V的电源电压下工作
T:
支持高密度16位的Thumb指令集;
D:
支持片上调试;
M:
支持64位乘法;
I:
支持EmbededICE观察硬件;
S:
ARM7TDMI的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI一致;
常用的ARM处理器系列
1.Cortex-M3
2.Cortex-R4
3.Cortex-R4F
4.Cortex-A8
5.ARM7冯诺依曼结构
6.ARM9哈佛结构
7.ARM10
8.ARM11
9.XScaleARM公司Arm5TE版内核和指令集
字和半字:
从偶数地址开始的连续2个字节构成一个半字;
以能被4整除的地址开始的连续4个字节构成一个字;
ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字。
如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐;
如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。
流水线
RM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度
pc取指:
从寄存器装载一条指令
Pc-4译码:
识别将要被执行的指令
Pc-8执行:
处理指令并将结果写回寄存器
在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。
在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。
在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。
在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。
PC指向0x4008地址,执行ADD指令,所以指令执行的结果为:
PC=PC+4=0x4008+4=0x400C。
程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。
一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则:
ARM状态:
PC值=当前程序执行位置+8
Thumb状态:
PC值=当前程序执行位置+4
注:
ARM状态时,每条指令为4字节长
指令集
ARM指令集高效快速,具有较低密度,Thumb指令集小巧灵活,保持ARM的大多数性能上的有事,是ARM指令集的子集
32位,处理器执行字方式的ARM指令,处理器默认为此状态;
16位,处理器执行半字方式的Thumb指令。
Cpsr的控制位T=0,处理器处于ARM状态,执行ARM指令,T=1,处理器处于Thumb状态,执行Thumb指令。
使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态进行切换。
Thumb状态切换到ARM状态代码
CODE16
LDR R0,=Lable
BX R0
CODE32
Lable MOV R1,#10
LDR R0,=Lable+1
CODE16
Lable MOV R1,#12
注意:
两个状态之间的切换并不影响处理器模式或寄存器内容。
模式
七个模式,用户,系统,管理,中止,快中断,中断,未定义,
管理模式:
只有在系统复位和软件中断响应时,才进入此模式
何时进入异常模式,具体规定如下:
处理器复位之后进入管理模式,操作系统内核通常处于管理模式;
当处理器访问存储器失败时,进入数据访问中止模式;
当处理器遇到没有定义或不支持的指令时,进入未定义模式;
中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。
处理器模式
说明
备注
用户(usr)
正常程序运行的工作模式
不能直接从用户模式切换到其它模式
特权模式
系统(sys)
用于支持操作系统的特权任务等
与用户模式类似,但具有可以直接切换到其它模式等特权
异常模式
快中断(fiq)
快速中断请求处理
只有在FIQ异常响应时,才进入此模式
中断(irq)
中断请求处理
只有在IRQ异常响应时,才进入此模式
管理(svc)
供操作系统使用的一种保护模式
中止(abt)
用于虚拟内存和/或存储器保护
在ARM7内核中没有多大用处
未定义(und)
支持软件仿真的硬件协处理器
只有在未定义指令异常响应时,才进入此模式
在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。
Cpsr,SPSR_SVC,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq
ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。
R0和R7为未分组的通用寄存器,可以在任何处理器模式都对应与相同的32为物理寄存器
R8-R12有两个分组的物理寄存器,一个用于除FIQ模式之外的所有寄存器,另一个用于FIQ模式
R13堆栈指针SP,用于保存待使用的寄存器的内容
R14链接指针LR,在结构上有两个功能:
当使用BL指令调用子程序时,返回地址将自动存入R14中,子程序结束是,R14复制到PC中即可实现子程序返回
当发生异常是,保张异常处理程序不会破坏LR,LR保存异常程序,将异常模处理程序
的返回地址保存到LR对应的异常模式寄存器中
R15程序计数器,指向正在取值的指令
CPSR和SPSR之间的关系
当一个特定的异常发生中断时,将CSPR的当前值保存到相应异常模式下的SPSR,然后设置CPSR为相应的异常模式
从异常中断程序退出并且返回时候,可以通道保存在SPSR中的值来回复CPSR
ARM内核包含1个CPSR和5个仅供异常处理程序使用的SPSR。
CPSR反映当前处理器的状态,其包含:
4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V);
2个中断禁止位(IRQ禁止与FIQ禁止);
5个对当前处理器模式进行编码的位(M[4:
0]);
1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。
程序状态寄存器(CPSR)的格式
31负标志N:
运算结果的第31位值,记录标志设置操作的结果;
30零标志Z:
如果标志设置的操作为0,则置位;
29进位标志C:
记录无符号加法溢出,减法无借位,循环移位;
28溢出标志V:
记录标志设置操作的有符号溢出。
条件代码标志:
31---N:
负或小于
30---Z:
零
29---C:
进位、借位或扩展
28---V:
溢出
控制位:
7---控制位I置位时:
IRQ中断被禁止
6---控制位F置位时:
FIQ禁止
5---T:
状态位T置位时,在Thumb状态下运行,为0时在ARM状态下运行
4·
·
0---M4·
M0:
模式位
只要正常的程序流被暂时中止,处理器就进入异常模式。
进入异常:
1.将异常处理程序的返回地址保存到相应异常模式下的LR,异常处理程序完成后的返回可通过将LR的值减去偏移量后写入PC;
(LR)
2.将CPSR的当前值保存到相应异常模式下的SPSR,异常处理程序完成后的返回可通过保存在SPSR中的值来恢复CPSR;
(CPSR->
SPSR)
3.设置CPSR为相应的异常模式;
(设置为异常模式)
4.设置PC为相应异常处理程序的终端入口向量地址,跳转到相应的异常中断处理程序执行。
(异常入口)
退出异常:
1.返回到发生异常中断的指令的下一条指令处执行,将LR中的值减去偏移量后移入PC,偏移量根据异常的类型而有所不同;
(LR-s->
PC)
2.将SPSR的值复制回CPSR;
(SPSR->
CPSR)
3.在入口处置位的中断禁止控制位清零。
(入口处置位的中断禁止控制位清零)
地址
异常
进入时的模式
进入时I的状态
进入时F的状态
0x00000000
复位
管理
禁止
0x00000004
未定义指令
未定义
I
F
0x00000008
软件中断异常
0x0000000C
中止(预取)
中止
0x00000010
中止(数据)
0x00000014
保留
-
0x00000018
IRQ
中断
0x0000001C
FIQ
快速中断
注:
表中的I和F表示不对该位有影响,保留原来的值。
复位异常
当nRESET信号被拉低时,ARM处理器放弃正在执行的指令,等到nRESET信号再次变高时,处理器执行一下操作:
强制M[4:
0]变为b10011,系统进入管理模式;
将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止;
将CPSR中的标志位T清零,处理器处于ARM状态;
强制PC从地址0x00开始对下一条指令进行取指;
返回到ARM状态并恢复执行。
ARM存储结构