嵌入式期末考试讲解.docx
- 文档编号:30139476
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:24
- 大小:51.97KB
嵌入式期末考试讲解.docx
《嵌入式期末考试讲解.docx》由会员分享,可在线阅读,更多相关《嵌入式期末考试讲解.docx(24页珍藏版)》请在冰豆网上搜索。
嵌入式期末考试讲解
1.冯·诺依曼体系结构和哈佛体系结构
答:
冯·诺依曼结构的计算机由CPU和存储器构成,其程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置;采用单一的地址及数据总线,程序指令和数据的宽度相同。
程序计数器(PC)是CPU内部指示指令和数据的存储位置的寄存器。
冯.诺依曼结构的CPU和微控制器品种有很多,例如Intel公司的8086系列及其他CPU,ARM公司的ARM7、MIPS公司的MIPS处理器等
哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。
系统中具有程序的数据总线与地址总线,数据的数据总线与地址总线。
这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高执行速度,提高数据的吞吐率。
又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠,具有较高的执行效率。
哈佛结构的CPU和微控制器品种有很多,除DSP处理器外,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11等。
2.CISC和RISC
类别
CISC
RISC
指令系统
指令数量很多
较少,通常少于100
执行时间
有些指令执行时间很长,如整块的存储器内容拷贝;或将多个寄存器的内容拷贝到存贮器
没有较长执行时间的指令
编码长度
编码长度可变,1-15字节
编码长度固定,通常为4个字节
寻址方式
寻址方式多样
简单寻址
操作
可以对存储器和寄存器进行算术和逻辑操作
只能对寄存器对行算术和逻辑操作,Load/Store体系结构
编译
难以用优化编译器生成高效的目标代码程序
采用优化编译技术,生成高效的目标代码程序
3.ARM状态各模式下的寄存器
1.所有的37个寄存器,分成两大类:
①31个通用32位寄存器:
包括程序计数器(PC指针),均为32位的寄存器。
②6个状态寄存器:
用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。
寄存器R13常作为堆栈指针(SP)。
R14为链接寄存器(LR)。
寄存器R15为程序计数器(PC)。
2、R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。
3、寄存器R8~R14为分组寄存器。
它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器
4、寄存器R8~R12有两个分组的物理寄存器。
一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。
这样在发生FIQ中断后,可以加速FIQ的处理速度
5、寄存器R13、R14分别有6个分组的物理寄存器。
一个用于用户和系统模式,其余5个分别用于5种异常模式。
三、处理器工作模式
1、ARM处理器有7种工作模式:
用户(usr)、系统(sys)、快中断(fiq)、中断(irq)、管理(svc)、中止(abt)、未定义(und)
正常模式:
用户(USR)、系统(SYS)。
其他都是异常模式
系统(复位)和软件中断响应时进入(管理)模式
2、除用户模式外,其它模式均为特权模式。
ARM内部全部系统资源和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。
3、此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
四、ARM异常处理
●当异常产生时,ARM核:
●拷贝CPSR到SPSR_
●设置适当的CPSR位:
●改变处理器状态进入ARM态
●改变处理器模式进入相应的异常模式
●设置中断禁止位禁止相应中断(如需要)
●保存返回地址到LR_
●设置PC为相应的异常向量地址
●返回时,异常处理程序需要:
●从SPSR_
●从LR_
●注意:
这些操作只能在ARM态执行.
五、ARM指令集
1、ARM寻址方式:
掌握ARM微处理器9种寻址方式的特点。
1.寄存器寻址
操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。
例如指令:
MOVR1,R2;R1←R2
SUBR0,R1,R2;R0←R1-R2
2.立即寻址
在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。
立即数要以“#”为前缀,表示16进制数值时以“0x”表示。
例如指令:
ADDR0,R0,#1;R0←R0+1
MOVR0,#0xff00;R0←0xff00
3.寄存器移位寻址
寄存器移位寻址是ARM指令集特有的寻址方式。
第2个寄存器操作数在与第1个操作数结合之前,先进行移位操作。
例如指令:
MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,即R0=R2*8
ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相与操作,结果放入R1
可采用的移位操作如下:
LSL:
逻辑左移(LogicalShiftLeft),寄存器中字的低端空出的位补0。
LSR:
逻辑右移(LogicalShiftRight),寄存器中字的高端空出的位补0。
ASR:
算术右移(ArithmeticShiftRight),移位过程中保持符号位不变,即如果源操作数为正数,则字的高端空出的位补0,否则补1
ROR:
循环右移(RotateRight),由字的低端移出的位填入字的高端空出的位
RRX:
带扩展的循环右移(RotateRightextendedby1place),操作数右移一位,高端空出的位用原C标志值填充。
4.寄存器间接寻址
指令中的地址码给出的是一个通用寄存器编号,所需要的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针,操作数存放在存储器中。
例如指令:
LDRR0,[R1];R0←[R1](将R1中的数值作为地址,取出此地址中的数据保存在R0中)
STRR0,[R1];[R1]←R0
5.变址寻址
变址寻址是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址,变址寻址用于访问基址附近的存储单元,常用于查表,数组操作,功能部件寄存器访问等。
例如指令:
LDRR2,[R3,#4];R2←[R3+4](将R3中的数值加4作为地址,取出此地址的数值保存在R2中)
STRR1,[R0,#-2];[R0-2]←R1(将R0中的数值减2作为地址,把R1中的内容保存到此地址位置)
采用变址寻址方式的指令又可以分为以下几种形式:
前变址模式:
LDRR0,[R1,#4];R0←[R1+4]
后变址模式:
LDRR0,[R1],#4;R0←[R1]、R1←R1+4
自动变址模式:
LDRR0,[R1,#4]!
;R0←[R1+4]、;R1←R1+4
基址寄存器的地址偏移可以是一个立即数,也可以是另一个寄存器,并且在加到基址寄存器前还可以经过移位操作,如下所示:
LDRR0,[R1,R2];R0←[R1+R2]
LDRR0,[R1,R2,LSL#2];R0←[R1+R2*4]
6.多寄存器寻址(LDM/STM)
LDM/STM指令可以把存储器中的一个数据块加载到多个寄存器中,也可以把多个寄存器中的内容保存到存储器中。
寻址操作中的寄存器可以是R0-R15这16个寄存器的子集或是所有寄存器。
采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送,这种寻址方式用一条指令最多可以完成16个寄存器值的传送。
格式为:
LDM(或STM){条件}{类型}基址寄存器{!
},寄存器列表{∧}
7.堆栈寻址
堆栈是一种数据结构,堆栈是特定顺序进行存取的存储区,操作顺序分为“后进先出”和“先进后出”,堆栈寻址时隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元就是堆栈的栈顶。
存储器生长堆栈可分为两种:
向上生长:
向高地址方向生长,称为递增堆栈(AscendingStack)。
向下生长:
向低地址方向生长,称为递减堆栈(DecendingStack)。
堆栈指针指向最后压入堆栈的有效数据项,称为满堆栈(FullStack);堆栈指针指向下一个要放入数据的空位置,称为空堆栈(EmptyStack)。
8.块复制寻址
块复制寻址用于把一块从存储器的某一位置复制到另一位置,是一个多寄存器传送指令。
例如指令:
STMIAR0!
{R1-R7};将R1~R7的数据保存到存储器中,存储器指针在保存第一个值之后增加,增长方向为向上增长。
STMDAR0!
{R1-R7};将R1~R7的数据保存到存储器中,存储器指针在保存第一个值之后增加,增长方向为向下增长。
9.相对寻址
相对寻址是变址寻址的一种变通,由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。
例如指令:
BLROUTE1;调用到ROUTE1子程序
BEQLOOP;条件跳转到LOOP标号处
…
LOOPMOVR2,#2
…
ROUTE1
2、堆栈寻址
☞满递增堆栈(FA):
堆栈指针指向最后压入的数据,且由低地址向高地址生成。
☞满递减堆栈(FD):
堆栈指针指向最后压入的数据,且由高地址向低地址生成。
☞空递增堆栈(EA):
堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。
☞空递减堆栈(ED):
堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。
六、多寄存器寻址(块拷贝寻址)
1、块拷贝寻址是多寄存器传送指令LDM/STM的寻址方式。
LDM/STM指令可以把存储器中的一个数据块加载到多个寄存器中,也可以把多个寄存器中的内容保存到存储器中。
寻址操作中的寄存器可以是R0-R15这16个寄存器的子集或是所有寄存器。
2、LDM/STM指令依据其后缀名的不同其寻址的方式也有很大不同。
七.多寄存器寻址(块拷贝寻址)
LDMIAR1!
,{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状态的转换
实现ARM工作状态转换的指令,其句法如下:
BX目标地址
1.BX指令将引起处理器转移到目标地址所指向的地址处执行。
2.目标地址的位[0]不用来作为地址的一部分。
3.若目标地址的位[0]为1,则指令将CPSR中的标志T置位,且将目标地址的代码解释为Thumb代码;
4.若目标地址的位[0]为0,则指令将CPSR中的标志T复位,且将目标地址的代码解释为ARM代码。
九、ARM的硬件系统结构
1、S3C2410的存储器系统
●S3C2410支持大、小端模式,可通过软件选择大小端模式;
●存储空间分成8个Bank,每个Bank128Mbytes,总共1GB;
Ø6个Bank用于控制ROM,SRAM,etc.
Ø剩余的2个Bank用于控制ROM,SRAM,SDRAM,etc.
●除Bank0(16/32-bit)外,所有的Bank都可以通过编程选择总线宽度=(8/16/32-bit);
●7个Bank固定起始地址,最后一个Bank可调整起始地址;
●最后两个Bank大小可编程
●所有Bank存储周期可编程控制;
●如果同时使用Bank6/Bank7,则要求连接相同容量的存储器,而且其地址空间在物理上是连续的。
2、S3C2410的I/O口配置
答:
S3C2410有117个多功能口,掌握如何通过软件编程对每个I/O口进行配置。
如将端口C的最低2为设置为01,既设置成输出模式,其余位不变。
rGPCCON=rGPCCON&0xfffffffc|0x00000001;
rGPCDAT=rGPCDAT|0x001;//PC0口电平输出高
3、掌握ARM微处理器的中断系统的特点(了解:
一旦有中断发生,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工作原理
●DMA(DirectMemoryAcess,直接存储器存取)方式是指存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。
在DMA传输过程中,DMA控制器负责管理整个操作,并且无须CPU介入,从而大大提高了CPU的工作效率。
DMA方式为高速I/O设备和存储器之间的批量数据交换提供了直接的传输通道。
由于I/O设备直接同内存发生成块的数据交换,可以提高I/O效率。
现在大部分计算机系统均采用DMA技术。
许多输入/输出设备的控制器都支持DMA方式。
●在进行DMA数据传送之前,DMA控制器会向CPU申请总线控制权,CPU如果允许,则将控制权交出。
因此,在数据交换时,总线控制权由DMA控制器掌握,在传输结束后,DMA控制器将总线控制权交还给CPU。
采用DMA方式进行数据传输的具体过程如下。
1)外设向DMA控制器发出DMA请求。
(2)DMA控制器向CPU发出总线请求信号。
(3)CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号。
(4)CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制。
(5)DMA控制器向外部设备发出DMA请求回答信号。
(6)进行DMA传送。
(7)数据传送完毕,DMA控制器通过中断请求线发出中断信号。
CPU在接收到中断信号后,转人中断处理程序进行后续处理。
(8)中断处理结束后,CPU返回到被中断的程序继续执行。
CPU重新获得总线控制权。
5、嵌入式存储系统的特点。
(1)高速缓冲存储器原理及特点。
(2)存储器管理单元MMU主要完成的功能。
八、嵌入式系统I/O设备接口
1、掌握S3C2410的I/O接口的编程(要求:
掌握I/O口编程,能编写实现LED1、LED2、LED3、LED4轮流闪烁的程序。
下面是实现LED1和LED2轮流闪烁的程序代码。
)
voidMain(void)
{intflag,i;
TargetInit();//进行硬件初始化操作,包括对I/O口的初始化操作
for(;;)
{if(flag==0){
for(i=0;i<1000000;i++);//延时
rGPGCON=rGPGCON&0xfff0ffff|0x00050000;//配置第8、第
//9位为输出引脚
rGPGDAT=rGPGDAT&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位为输出引脚
rGPGDAT=rGPGDAT&Oxdff|0x100;//第8位输出为高电平
//第9位输出低电平
for(i=0;i<1000000;i++);//延时
flag=0;
}
}
}
2、掌握S3C2410的A/D转换器接口的原理(要求:
掌握A/D转换器接口的原理,能编写A/D转换器初始化函数和获取A/D的转换值的程序。
)
A/D转换器接口的原理:
A/D转换器(模/数转换器)完成电模拟量到数字量的转换。
实现A/D转换的方法很多,常用的方法有计数法、双积分法和逐次逼近法等。
1.计数式A/D转换器原理
●计数式A/D转换器结构如图5.2.1所示。
其中,Vi是模拟输入电压,VO是D/A转换器的输出电压,C是控制计数端,当C=1(高电平)时,计数器开始计数,C=0(低电平)时,则停止计数。
D7~D0是数字量输出,数字输出量同时驱动一个D/A转换器。
计数式A/D转换器的转换过程如下:
①首先/CLR(开始转换信号)有效(由高电平变成低电平),使计数器复位,计数器输出数字信号为00000000,这个00000000的输出送至8位D/A转换器,8位D/A转换器也输出0V模拟信号。
②当/CLR恢复为高电平时.计数器准备计数。
此时,在比较器输入端上待转换的模拟输入电压Vi大于VO(0V),比较器输出高电平,使计数控制信号C为1。
这样,计数器开始计数。
③从此计数器的输出不断增加,D/A转换器输入端得到的数字量也不断增加,致使输出电压VO不断上升。
在VO<Vi时,比较器的输出总是保持高电平,计数器不断地计数。
④当VO上升到某值时,出现VO>Vi的情况时,此时,比较器的输出为低电平,使计数控制信号C为0,计数器停止计数。
这时候数字输出量D7~D0就是与模拟电压等效的数字量。
计数控制信号由高变低的负跳变也是A/D转换的结束信号,表示已完成一次A/D转换。
计数式A/D转换器结构简单,但转换速度较慢。
2.双积分式A/D转换器原理
●双积分式A/D转换器对输入模拟电压和参考电压进行两次积分,将电压变换成与其成正比的时间间隔,利用时钟脉冲和计数器测出其时间间隔,完成A/D转换。
双积分式A/D转换器主要包括积分器、比较器、计数器和标准电压源等部件,其电路结构图如图5.2.2(a)所示。
●双积分式A/D转换器的转换过程如下:
①首先对输入待测的模拟电压Vi进行固定时间的积分;
②然后转换到标准电压VR进行固定斜率的反向积分(定值积分),如图5.2.2(b)所示。
反向积分进行到一定时间,便返回起始值。
从图5.2.2(b)中可看出对标准电压VR进行反向积分的时间T2正比于输入模拟电压,输入模拟电压越大,反向积分回到起始值的时间T越长,有Vi=(T2/T1)VR。
③用标准时钟脉冲测定反向积分时间(如计数器),就可以得到对应于输入模拟电压的数字量,实现A/D转换。
●双积分式A/D转换器具有很强的抗工频干扰能力,转换精度高,但速度较慢。
3.逐次逼近式A/D转换器原理
●逐次逼近式A/D转换器电路结构如图5.2.3所示,其工作过程可与天平称重物类比,图中的电压比较器相当于天平,被测电压Ux相当于重物,基准电压Ur相当于电压法码。
该方案具有各种规格的按8421编码的二进制电压法码Ur,根据Ux
输出从大到小的基准电压法码,与被测电压Ux比较,并逐渐减小其差值,使之逼近平衡。
当Ux=Ur时,比较器输出为零,相当于天平平衡,最后以数字显示的平衡值即为被测电压值。
●逐次逼近式A/D转换器转换速度快,转换精度较高,对N位A/D转换只需N个时钟脉冲即可完成,可用于测量微秒级的过渡过程的变化,是在计算机系统中采用最多的一种A/D转换方法。
A/D转换器进行初始化
程序中的参数ch表示所选择的通道号,程序如下:
voidAD_Init(unsignedcharch)
{
rADCDLY=100;//ADC启动或间隔延时
rADCTSC=0;//选择ADC模式
rADCCON=(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0);//设置ADC控制寄存器
}
获取A/D的转换值
程序中的参数ch表示所选择的通道号,程序如下:
intGet_AD(unsignedcharch){
inti;
intval=0;
if(ch>7)return0;//通道不能大于7
for(i=0;i<16;i++){//为转换准确,转换16次
rADCCON|=0x1;//启动A/D转换
rADCCON=rADCCON&0xffc7|(ch<<3);
while(rADCCON&0x1);//避免第一个标志出错
while(!
(rADCCON&0x8000));//避免第二个标志出错
val+=(rADCDAT0&0x03ff);
Delay(10);
}
return(val>>4);//为转换准确,除以16取均值
}
3、掌握四线式电阻式触摸屏的工作原理,能分析触摸点的X轴坐标和Y轴坐标是如何测量出来的。
答:
四线式电阻式:
电阻触摸屏结构如图5.6.1(c)所示,最上层是一层外表面经过硬化处理、光滑防刮的塑料层,内表面也涂有一层导电层(ITO或镍金);基层采用一层玻璃或薄膜,内表面涂有叫作ITO的透明导电层;在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。
在每个工作面的两条边线上各涂一条银胶,称为该工作面的一对电极,一端加5V电压,一端加0V,在工作面的一个方向上形成均匀连续的平行电压分布。
当给X方向的电极对施加一确定的电压,而Y方向电极对不加电压时,在x平行电压场中,触点处的电压值可以在Y+(或Y—)电极上反映出来,通过测量Y+电极对地的电压大小,通过A/D转换,便可得知触点的X坐标值。
同理,当给Y电极对施加电压,而X电极对不加电压时,通过测量X+电极的电压,通过A/D转换便可得知触点的Y坐标。
当手指或笔触摸屏幕时(如图5.6.1(c)所示),两个相互绝缘的导电层在触摸点处接触,因其中一面导电层(顶层)接通X轴方向的5V均匀电压场(如图5.6.1(a)所示),使得检测层(底层)的电压由零变为非零,控制器检测到这个接通后,进行A/D转换,并将得到的电压值与5V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 期末考试 讲解