最新嵌入式微处理器体系结构复习资料

最新嵌入式微处理器体系结构复习资料
最新嵌入式微处理器体系结构复习资料

一、嵌入式微处理器体系结构

嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以选用精简指令系统RISC和复杂指令集系统CISC。

1、冯·诺依曼体系结构和哈佛体系结构;

(1)冯·诺依曼结构的计算机由CPU和存储器构成,其程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置;采用单一的地址及数据总线,程序指令和数据的宽度相同。程序计数器(PC)是CPU内部指示指令和数据的存储位置的寄存器。

(2)哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。提高执行速度,提高数据的吞吐率,具有较高的执行效率。

2、CISC和RISC

类别CISC RISC

指令系统指令数量很多较少,通常少于100

执行时间有些指令执行时间很长,

如整块的存储器内容拷贝;

或将多个寄存器的内容

拷贝到存贮器没有较长执行时间的指令

编码长度编码长度可变,1-15字节编码长度固定,通常为4个字节

寻址方式寻址方式多样简单寻址

操作可以对存储器和寄存器只能对寄存器对行算术和逻辑操作,

进行算术和逻辑操作Load/Store体系结构

编译难以用优化编译器生成

高效的目标代码程序采用优化编译技术,生成高效的目标代码程序

二、ARM状态各模式下的寄存器

1、所有的37个寄存器,分成两大类:

(1)31个通用32位寄存器;

(2) 6个状态寄存器。

2、R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。

3、寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器

4、寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度

5、寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。

三、处理器工作模式

1、ARM处理器有7种工作模式;

●usr(用户模式):ARM处理器正常程序执行模式。

●fiq(快速中断模式):用于高速数据传输或通道处理

●irq(外部中断模式):用于通用的中断处理

●svc(管理模式):操作系统使用的保护模式

●abt (数据访问终止模式):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。

●sys(系统模式):运行具有特权的操作系统任务。

●und(未定义指令中止模式):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。

除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

2、除用户模式外,其它模式均为特权模式。ARM内部全部系统资源和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。

3、此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

四、ARM异常处理

1、当异常产生时, ARM 核:

(1)拷贝CPSR 到SPSR_

(2)设置适当的CPSR 位:

a.改变处理器状态进入ARM 态

b.改变处理器模式进入相应的异常模式

c.设置中断禁止位禁止相应中断(如需要)

(3)保存返回地址到LR_

(4)设置PC 为相应的异常向量地址

2、返回时, 异常处理程序需要:

(1)从SPSR_恢复CPSR

(2)从LR_恢复PC

(3)注意:这些操作只能在ARM 态执行.

五、ARM指令集

1、ARM寻址方式:掌握ARM微处理器9种寻址方式的特点。

(1).寄存器寻址

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

例如指令:

MOV R1,R2 ;R1←R2

SUB R0,R1,R2 ;R0←R1- R2

(2).立即寻址

在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。

例如指令:

ADD R0,R0,#1 ;R0←R0 + 1

MOV R0,#0xff00 ;R0←0xff00

(3).寄存器移位寻址

寄存器移位寻址是ARM指令集特有的寻址方式。第2个寄存器操作数在与第1个操作数结合之前,先进行移位操作。

例如指令:

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

ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相与操作,结果放入R1 可采用的移位操作如下:

LSL:逻辑左移(Logical Shift Left),寄存器中字的低端空出的位补0。

LSR:逻辑右移(Logical Shift Right),寄存器中字的高端空出的位补0。

ASR:算术右移(Arithmetic Shift Right),移位过程中保持符号位不变,即如果源操作数为正数,则字的高端空出的位补0,否则补1

ROR:循环右移(Rotate Right),由字的低端移出的位填入字的高端空出的位

RRX:带扩展的循环右移(Rotate Right extended by 1 place),操作数右移一位,高端空出的位用原C 标志值填充。

(4).寄存器间接寻址

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

例如指令:

LDR R0,[R1] ;R0←[R1](将R1中的数值作为地址,取出此地址中的数据保存在R0中)STR R0,[R1] ;[R1] ←R0

(5).变址寻址

变址寻址是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址,变址寻址用于访问基址附近的存储单元,常用于查表,数组操作,功能部件寄存器访问等。例如指令:

LDR R2,[R3,#4] ;R2←[R3 + 4](将R3中的数值加4作为地址,取出此地址的

数值保存在R2 中)STR R1,[R0,#-2] ;[R0-2] ←R1(将R0中的数值减2作为地址,把R1中的内

容保存到此地址位置)(6).多寄存器寻址(LDM/STM)

LDM/STM指令可以把存储器中的一个数据块加载到多个寄存器中,也可以把多个寄存器中的内容保存到存储器中。寻址操作中的寄存器可以是R0-R15这16个寄存器的子集或是所有寄存器。采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送,这种寻址方式用一条指令最多可以完成16个寄存器值的传送。

格式为:

LDM(或STM){条件}{类型} 基址寄存器{!},寄存器列表{∧}

该指令的常见用途是将多个寄存器的内容入栈或出栈。

(7).堆栈寻址

堆栈是一种数据结构,堆栈是特定顺序进行存取的存储区,操作顺序分为“后进先出”和“先进后出”,堆栈寻址时隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元就是堆栈的栈顶。

(8).块复制寻址

块复制寻址用于把一块从存储器的某一位置复制到另一位置,是一个多寄存器传送指令。(9).相对寻址

相对寻址是变址寻址的一种变通,由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。

2、堆栈寻址

满递增堆栈(FA):堆栈指针指向最后压入的数据,且由低地址向高地址生成。

满递减堆栈(FD):堆栈指针指向最后压入的数据,且由高地址向低地址生成。

空递增堆栈(EA):堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈(ED):堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。

3、多寄存器寻址(块拷贝寻址)

(1)块拷贝寻址是多寄存器传送指令LDM/STM的寻址方式。LDM/STM指令可以把存储器中的一个数据块加载到多个寄存器中,也可以把多个寄存器中的内容保存到存储器中。寻址操作中的寄存器可以是R0-R15这16个寄存器的子集或是所有寄存器。

(2)LDM/STM指令依据其后缀名的不同其寻址的方式也有很大不同。

(3)LDMIA R1!,{R0,R2,R3}指令执行后,R1的值变为R1+12—>R1;

注:!决定Rn的值是否随着传送而改变

寻址模式描述起始地址结束地址Rn!

IA 执行后增加Rn Rn+4*N Rn+4*N

IB 执行前增加Rn+4 Rn+4*N Rn+4*N

DA 执行后减少Rn Rn-4*N Rn-4*N

DB 执行前减少Rn-4 Rn-4*N Rn-4*N

六ARM状态与Thumb状态的转换

1、实现ARM工作状态转换的指令,其句法如下:

BX 目标地址

(1)BX指令将引起处理器转移到目标地址所指向的地址处执行。

(2)目标地址的位[0]不用来作为地址的一部分。

a.若目标地址的位[0]为1,则指令将CPSR中的标志T置位,且将目标地址的代码解释为Thumb代码;

b.若目标地址的位[0]为0,则指令将CPSR中的标志T复位,且将目标地址的代码解释为ARM代码。

七、ARM的硬件系统结构

1、S3C2410的存储器系统

(1)S3C2410支持大、小端模式,可通过软件选择大小端模式;

(2)存储空间分成8个Bank,每个Bank 128Mbytes,总共1GB;

6个Bank用于控制ROM, SRAM, etc.

剩余的2个Bank用于控制ROM, SRAM, SDRAM, etc .

(3)除Bank0 (16/32-bit) 外,所有的Bank都可以通过编程选择总线宽度= (8/16/32-bit) ;(4)7个Bank固定起始地址,最后一个Bank可调整起始地址;

(5)最后两个Bank大小可编程

(6)所有Bank存储周期可编程控制;

(7)如果同时使用Bank6/ Bank7,则要求连接相同容量的存储器,而且其地址空间在物理上是连续的。

2、S3C2410的I/O口配置

S3C2410有117个多功能口,掌握如何通过软件编程对每个I/O口进行配置。如将端口C的最低2为设置为01,既设置成输出模式,其余位不变。

rGPCCON = rGPCCON&0xfffffffc|0x00000001;

rGPCDAT= rGPCDAT |0x001; //PC0口电平输出高

表3.4.3 S3C2410A的端口C I/O口配置情况

表端口C控制寄存器

3、掌握ARM微处理器的中断系统的特点

了解:一旦有中断发生,ARM的中断系统将如何处理。

在ARM系统中,支持复位、未定义指令、软中断、预取中止、数据中止、IRQ和FIQ 7种异常,每种异常对应于不同的处理器模式,有对应的异常向量(固定的存储器地址)。在ARM系统中,一旦有中断发生,正在执行的程序都会停下来,通常都会执行如下的中断步骤:

(1)保存现场。保存当前的PC值到R14,保存当前的程序运行状态到SPSR。

(2)模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。

(3)获取中断服务子程序地址。PC指针跳到异常向量表所保存的IRQ或FIQ地址处,

IRQ或FIQ的异常向量地址处一般保存的是中断服务子程序的地址,PC指针跳入到中断服务子程序,进行中断处理。

(4)多个中断请求处理。在ARM系统中,可以存在多个中断请求源,比如串口中断、AD 中断、外部中断、定时器中断及DMA中断等,所以可能出现多个中断源同时请求中断的情况。为了更好地区分各个中断源,通常为这些中断定义不同的优先级别,并为每一个中断设置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中断标志位的状态来识别哪一个中断发生了,进而调用相应的函数进行中断处理。

(5)中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到CPSR中,R14中保存的被中断程序的地址恢复到PC中,继续执行被中断的程序。

4、了解S3C2410的DMA控制器的基本工作原理。

DMA(Direct Memory Acess,直接存储器存取)方式是指存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。在DMA传输过程中,DMA控制器负责管理整个操作,并且无须CPU介入,从而大大提高了CPU的工作效率。DMA方式为高速I/O设备和存储器之间的批量数据交换提供了直接的传输通道。由于I/O设备直接同内存发生成块的数据交换,可以提高I/O效率。现在大部分计算机系统均采用DMA技术。许多输入/输出设备的控制器都支持DMA方式。

采用DMA方式进行数据传输的具体过程如下。

(1)外设向DMA控制器发出DMA请求。

(2)DMA控制器向CPU发出总线请求信号。

(3)CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号。

(4)CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制。

(5)DMA控制器向外部设备发出DMA请求回答信号。

(6)进行DMA传送。

(7)数据传送完毕,DMA控制器通过中断请求线发出中断信号。CPU在接收到中断信号后,转人中断处理程序进行后续处理。

(8)中断处理结束后,CPU返回到被中断的程序继续执行。CPU重新获得总线控制权。

每个DMA控制器可以处理以下4种情况:

(1)源和目的都在系统总线上;

(2)源在系统总线上,目的在外围总线上;

(3)源在外围总线上,目的在系统总线上;

(4)源和目的都在外围总线上。

5、嵌入式存储系统的特点。

(1)高速缓冲存储器原理及特点。

高速缓冲存储器(cache)用来提高存储器系统的性能,许多微处理器体系结构都把它作为其定义的一部分。cache能够减少内存平均访问时间。

Cache可以分为统一cache和独立的数据/程序cache。

(2)存储器管理单元MMU主要完成的功能。

(1)虚拟存储空间到物理存储空间的映射。采用了页式虚拟存储管理,它把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。MMU实现的就是从虚拟地址到物理地址的转换。

(2)存储器访问权限的控制。

(3)设置虚拟存储空间的缓冲的特性。

八、嵌入式系统I/O设备接口

1、掌握S3C2410的I/O接口的编程

要求:掌握I/O口编程,能编写实现LED1、LED2 、LED3、LED4 轮流闪烁的程序。

实现LED1和LED2轮流闪烁的程序代码

void Main(void)

int flag,i;

Target Init();//进行硬件初始化操作,包括对I/O口的初始化操作

for(;;)

if(flag = = 0){

for(i = 0;i < 1000000;i++);//延时

rGPGCON=rGPGCON&0xfff0ffff | 0x00050000;//配置第8、第

//9位为输出引脚

rGPGDA T=rGPGDA T&0xeff | 0x200;//第8位输出为低电平

//第9位输出高电平

for(i = 0;i< 10000000;i++);//延时

flag = 1;

else{

for(i = 0;i< 1000000;i++);//延时

rGPGCON=rGPGCON&0xfff0ffff(0x00050000;//配置第8、

//第9位为输出引脚

rGPGDA T=rGPGDA T&Oxdff | 0x100;//第8位输出为高电平

//第9位输出低电平

for(i = 0;i< 1000000;i++);//延时

flag = 0;

2、掌握S3C2410的A/D转换器接口的原理

要求:掌握A/D转换器接口的原理,能编写A/D转换器初始化函数和获取A/D的转换值的程序。

(1)A/D转换器(模/数转换器)完成电模拟量到数字量的转换。实现A/D转换的方法很多,常用的方法有计数法、双积分法和逐次逼近法等。

(2).对A/D转换器进行初始化

相关主题
相关文档
最新文档