武汉科技大学嵌入式复习要点.doc

上传人:wj 文档编号:4887358 上传时间:2023-05-07 格式:DOC 页数:11 大小:99KB
下载 相关 举报
武汉科技大学嵌入式复习要点.doc_第1页
第1页 / 共11页
武汉科技大学嵌入式复习要点.doc_第2页
第2页 / 共11页
武汉科技大学嵌入式复习要点.doc_第3页
第3页 / 共11页
武汉科技大学嵌入式复习要点.doc_第4页
第4页 / 共11页
武汉科技大学嵌入式复习要点.doc_第5页
第5页 / 共11页
武汉科技大学嵌入式复习要点.doc_第6页
第6页 / 共11页
武汉科技大学嵌入式复习要点.doc_第7页
第7页 / 共11页
武汉科技大学嵌入式复习要点.doc_第8页
第8页 / 共11页
武汉科技大学嵌入式复习要点.doc_第9页
第9页 / 共11页
武汉科技大学嵌入式复习要点.doc_第10页
第10页 / 共11页
武汉科技大学嵌入式复习要点.doc_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

武汉科技大学嵌入式复习要点.doc

《武汉科技大学嵌入式复习要点.doc》由会员分享,可在线阅读,更多相关《武汉科技大学嵌入式复习要点.doc(11页珍藏版)》请在冰点文库上搜索。

武汉科技大学嵌入式复习要点.doc

嵌入式系统的概念

从技术的角度定义:

以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

从系统的角度定义:

嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。

术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。

嵌入的系统中可以共存多个嵌入式系统。

n嵌入式系统的一般由以下几部分组成

n嵌入式微处理器

n外围硬件设备

n嵌入式操作系统

n应用程序

n嵌入式系统的设计可以分成三个阶段:

分析、设计和实现

 U盘;MP3播放器;手机蓝牙耳机(2分);GPS导航仪(2

特点:

嵌入性,专用性,内含计算机

嵌入式处理器可以分为以下几大类:

嵌入式微处理器(EMPU);

嵌入式微控制器(MCU);

嵌入式DSP处理器(DSP);

嵌入式片上系统(SOC)。

实时操作系统的特点

异步的事件响应

切换时间和中断延迟时间确定

优先级中断和调度

抢占式调度

内存锁定

连续文件

同步

实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。

它强调的是实时性、可靠性和灵活性。

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指令集的子集

ARM状态:

32位,处理器执行字方式的ARM指令,处理器默认为此状态;

Thumb状态:

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

CODE32

LDR R0,=Lable+1

BX R0

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

软件中断异常

管理

禁止

F

0x0000000C

中止(预取)

中止

I

F

0x00000010

中止(数据)

中止

I

F

0x00000014

保留

保留

0x00000018

IRQ

中断

禁止

F

0x0000001C

FIQ

快速中断

禁止

禁止

注:

表中的I和F表示不对该位有影响,保留原来的值。

复位异常

当nRESET信号被拉低时,ARM处理器放弃正在执行的指令,等到nRESET信号再次变高时,处理器执行一下操作:

强制M[4:

0]变为b10011,系统进入管理模式;

将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止;

将CPSR中的标志位T清零,处理器处于ARM状态;

强制PC从地址0x00开始对下一条指令进行取指;

返回到ARM状态并恢复执行。

ARM存储结构

ARM结构使用单个平面的232个8位字节地址空间。

地址空间可以看作是包含230个32位字,或231个16位半字。

如果地址向上或向下溢出地址空间,通常会发生翻转。

地址空间的规则要求字地址A:

位于地址A的字包含的字节位于地址A,A+1,A+2和A+3;

位于地址A的半字包含的字节位于地址A和A+1;

位于地址A+2的半字包含的字节位于地址A+2和A+3;

位于地址A的字包含的半字位于地址A和A+2;

存储器系统有两种映射机制:

小端存储器系统:

在小端格式中,数据的高字节存放在高地址中。

大端存储器系统:

在大端格式中,数据的高字节存放在低地址中。

寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。

ARM处理器具有8种基本寻址方式。

1.寄存器寻址; 2.立即寻址;

3.寄存器移位寻址; 4.寄存器间接寻址;

5.基址寻址; 6.多寄存器寻址;

7.堆栈寻址; 8.相对寻址。

操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。

寄存器寻址指令举例如下:

MOVR1,R2 ;将R2的值存入R1

SUBR0,R1,R2;将R1的值减去R2的值,结果保存到R0

立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。

立即寻址指令举例如下:

SUBS R0,R0,#1;R0减1,结果放入R0,并且影响标志位

MOV R0,#0xFF000;将立即数0xFF000装入R0寄存器

寄存器移位寻址是ARM指令集特有的寻址方式。

当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。

寄存器移位寻址指令举例如下:

MOV R0,R2,LSL#3 ;R2的值左移3位,结果放入R0, ;即是R0=R2×8

ANDS R1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相与”操作,结果放入R1

寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。

寄存器间接寻址指令举例如下:

LDR R1,[R2] ;将R2指向的存储单元的数据读出;保存在R1中

SWP R1,R1,[R2] ;将寄存器R1的值和R2指定的存储单元的内容交换

基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。

基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。

基址寻址指令举例如下:

LDR R2,[R3,#0x0C] ;读取R3+0x0C地址上的存储单元的内容,放入R2

STR R1,[R0,#-4]!

;先R0=R0-4,然后把R1的值寄存到保存到R0指定的存储单元

多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。

多寄存器寻址指令举例如下:

LDMIA R1!

{R2-R7,R12};将R1指向的单元中的数据读出到R2~R7、R12中(R1自动加1)

STMIA R0!

{R2-R7,R12};将寄存器R2~R7、R12的值保存到R0指向的存储;单元中(R0自动加1)

堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出”。

堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。

存储器堆栈可分为两种:

向上生长:

向高地址方向生长,称为递增堆栈

向下生长:

向低地址方向生长,称为递减堆栈

堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈;堆栈指针指向下一个待压入数据的空位置,称为空堆栈。

所以可以组合出四种类型的堆栈方式:

满递增:

堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。

指令如LDMFA、STMFA等;

空递增:

堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。

指令如LDMEA、STMEA等;

满递减:

堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。

指令如LDMFD、STMFD等;

空递减:

堆栈向下增长,堆栈指针向堆栈下的第一个空位置。

指令如LDMED、STMED等。

3、ARM指令格式:

{}{S},{,}

其中,opcode:

指令助记符; cond:

执行条件;S:

是否影响CPSR寄存器的值;

Rd:

目标寄存器;Rn:

第1个操作数的寄存器;operand2:

第2个操作数;

灵活的使用第2个操作数“operand2”能够提高代码效率。

它有如下的形式:

#immed_8r——常数表达式;

Rm——寄存器方式;

Rm,shift——寄存器移位方式;

4、ARM指令种类:

(1)存储器访问指令

(2)数据处理指令(3)乘法指令(4)ARM分支指令(5)协处理器指令(6)杂项指令(7)伪指令。

5、杂项指令:

在ARM指令集中杂项指令共有3条,它们非常重要,特别是与操作系统的使用息息相关:

1.软件中断产生指令:

SWI

2.程序状态寄存器读指令:

MRS

3.程序状态寄存器写指令:

MSR

6、软中断:

SWI指令用于产生软中断,主要用于用户程序调用操作系统的系统服务。

执行该指令后,处理器将完成以下动作:

(1)切换到管理模式

(2)将CPSR备份到管理模式下的SPSR寄存器(3.)程序跳转到软件中断入口。

7、软中断作用:

(1)使用操作系统后,为了防止出错的任务影响其它任务的执行,通常将任务放在用户模式执行,以限制其权限;

(2)对于一些重要的操作,如中断的开关,必须由操作系统完成。

使用软件中断指令即可完成系统功能调用;

8、软中断参数的传递:

SWI指令传递参数有以下两种方法,

(1)指令中的24位立即数指定了用户请求的服务类型,参数通过通用寄存器传递。

MOVR0,#34 ;设置子功能号为34

SWI12 ;调用12号软中断

(2)指令中的24位立即数被忽略,用户请求的服务类型由寄存器R0的值决定,参数通过其它的通用寄存器传递。

MOVR0,#12 ;调用12号软中断

MOVR1,#34 ;设置子功能号为34

SWI0

9、软中断的处理:

在SWI异常中断处理程序中,取出SWI指令中立即数的步骤为:

(1)首先确定引起软中断的SWI指令是ARM指令还是Thumb指令,这可通过对SPSR访问得到;

(2)然后取得该SWI指令的地址,这可通过访问LR寄存器得到;

(3)接着读出该SWI指令,分解出立即数。

10、Thumb指令:

Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出的,具有16位的代码密度。

Thumb指令体系不完整,只支持通用功能。

必要时仍需要使用ARM指令,如进入异常时。

11、Thumb指令集与ARM指令集的相似处:

Thumb指令的格式与使用方式与ARM指令集类似,它也具有以下种类的指令:

存储器访问指令、数据处理指令、分支指令、杂项指令、伪指令。

12、Thumb指令集与ARM指令集的区别:

Thumb指令集较ARM指令集有如下限制:

(1)只有B指令可以条件执行,其它指令都不能条件执行;

(2)分支指令的跳转范围有更多限制;

(3)数据处理指令的操作结果必须放入其中一个;

(4)单寄存器访问指令,只能操作R0~R7;

(5)LDM和STM指令可以对R0~R7的任何子集进行操作。

ARM的指令种类

1.存储器访问指令

2.数据处理指令

3.乘法指令

4.ARM分支指令

B分支指令

BL带链接的分支指令

BX带状态切换的分支指令

5.协处理器指令

6.杂项指令

SWI软件中断指令

MRS读状态寄存器指令

MSR写状态寄存器指令

7.伪指令

.用R1寄存器的最低字节替换掉R2寄存器的最低字节,并不影响条件标志位?

ANDR1,R1,#0x000000FF

ANDR2,R2,#0xFFFFFF00

ORRR2,R2,R1

任务函数的结构按任务的执行方式可以划分为3类:

单次执行、周期性执行和事件触发执行。

任务划分的目标:

1.首要目标是满足‘实时性’指标;

2.任务数目合理;

3.简化软件系统;

4.降低资源需求。

任务优先级安排:

1.中断关联性;

2.紧迫性;

3.关键性;

4.频繁性;

5.快捷性;

6.传递性;

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2