嵌入式系统期末考试重点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统期末考试重点
一、选择题(15)
1、(选择或简答)ARM技术特征:
(1)体积小、低功耗、低成本、高性能。
(2)支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16
位器件。
(3)大量使用寄存器,指令执行速度更快。
(4)大多数数据操作都在寄存器中完成。
(5)寻址方式灵活简单,执行效率高。
(6)指令长度固定。
2、ARM的基本数据类型:
(1)字节(Byte):8位。
(2)半字(HalfWord):16位,半字必须与2字节边界对齐。
(3)字(Word):32位,字必须与4字节边界对齐。
(4)双字(DoubleWord):Cortex-A支持,64位,字必须与8字节边界
对齐。
3、未分组寄存器R0-R7,分组寄存器R8-R14。
(弄清P37图,以PPT为准)
4、(选择)ARM指令的寻址方式:(给出指令会辨别)
(1)立即数寻址;(2)寄存器寻址;(3)寄存器移位寻址;(4)寄存
器间接寻址;(5)基址变址寻址;(6)多寄存器寻址/块拷贝寻址;(7)
相对寻址;(8)堆栈操作寻址。
5、GNU汇编:
(1)label:.short expr,分配2字节;
(2)label: .word/.long expr,分配4字节;
(3)a: .string“ABC”//分配了4字节(含\0);
(4)b: .ascii“ABC”//分配了3字节;
(5)c: .asciz“ABC”//分配了4字节;
(6)adr r0,b;
(7)ldr r0,=0x12345;
6、第三章指令集与第四章伪指令集
二、填空题(5)
1、嵌入式系统的硬件组成:嵌入式处理器和外围设备(存储器、通信设备、
显示设备)。
(P5图1-1)
2、常见嵌入式操作系统:
(1)VxWorks,Windriver公司1983年开发,实时操作系统, 提供多任
务机制,采用优先级抢占和轮转调度机制;
(2)Windows CE,微软开发,是精简的Windows95,基于掌上型电脑
类的电子设备操作系统,图形用户界面很出色;
(3)嵌入式Linux,改善了内核结构,提高了实时性。
3、交叉调试:软件方式;硬件方式。
硬件方式能获得更强大的调试功能和
更优秀的调试性能。
4、ARM内核采用RISC体系结构。
5、中断控制器GPIO可以选择上升沿、下降沿、高电平、低电平4种中断
方式。
6、3级流水线:取指令、译码、执行。
7、影响流水线性能的因素:互锁、跳转指令。
8、ATPCS,即ARM体系结构过程调用标准。
(P83要求掌握这个标准)
三、简答题(5)
1、(简答)嵌入式系统的定义:嵌入式系统是指以应用为中心,以计算机
技术为基础,软硬件可剪裁,适用应用系统对功能,可靠性,成本,体
积,功耗严格要求的专用计算机系统。
2、交叉编译:在一个平台上生成可以在另一个平台上执行的代码。
3、ARM微处理器支持7种运行模式,分别为:(加粗的为5种异常模式)
(1)用户模式(usr):ARM处理器正常的程序执行状态。
(2)快速中断模式(fiq):用于高速数据传输或通道处理。
(3)外部中断模式(irq):用于通用的中断处理。
(4)特权模式(svc):操作系统使用的保护模式。
(5)数据访问终止模式(abt):当数据或指令预取终止时进入该模式,
可用于虚拟存储及存储保护。
(6)系统模式(sys):运行具有特权的操作系统任务。
(7)未定义指令中止模式(und):当未定义的指令执行时进入该模式,
可用于支持硬件协处理器的软件仿真。
4、(简答)程序状态寄存器CPSR:(P39图2-8)
(1)31-28标志位(N负数标志,Z零标志,C进位标志,V溢出标志);
7-0控制位(I=1禁止IRQ中断,F=1禁止FIQ中断,T状态位,M[4:0]
模式位)。
(2)高8位为标志位F,次高8位为状态位,低8位为控制位C,其他
8位为扩展位(X)。
5、跳转指令B及带连接的跳转指令BL:跳转指令B使程序跳转到指定的地
址执行程序,带连接的跳转指令BL将下一条指令的地址复制到R14(即
返回地址链接寄存器LR)寄存器中,然后跳转到指定地址运行程序。
6、(简答)GPIO常用寄存器分类:
(1)端口控制寄存器:控制相应引脚功能;
(2)端口数据寄存器:反映相应的引脚状态;
(3)端口上拉寄存器:使能上拉或下拉电阻。
7、时钟域的划分:
(1)MSYS 域: 高速设备;
(2)DSYS 域: 中速设备,如显示设备;
(3)PSYS 域: 低速设备,如IO设备。
8、打开与关闭PLL(锁相环电路)的步骤:
(1)打开PLL步骤:
1)打开PLL PLL_CON[31]=1
2)wait_lock_time
3)(A, M, E, V)PLL_SEL = 1;
(2)关闭PLL步骤
1)PLL_SEL = 0; // 取消锁相环输出
2)PLL_CON[31] = 0; // 关闭PLL
9、ARM的7种异常(按优先级从高到低排序如下):
(1)复位异常(2)数据中止(3)快速中断请求(4)外部中断请求(5)预取指令异常(6)软中断(7)未定义指令异常
10、中断响应的步骤:(1)保护断点;(2)寻找中断入口;(3)执行中
断处理程序;(4)中断返回。
11、中断发生后处理器硬件会自动完成下列工作:
(1)将PC-4的值保存到相对应异常的LR中;
(2)将CPSR保存到相对就异常的SPSR;
(3)自动设置相对就异常的CPSR模式位;
(4)跳转到相对应异常向量地址处执行指令。
12、异常返回步骤:
(1)恢复通用寄存器:通过堆栈操作;
(2)恢复CPSR;
(3)恢复PC 以跳转到中断前的程序的中断处继续执行程序。
上述(2)(3)可用一条指令完成:
MOVS PC,LR
SUBS PC,LR,#4
LDMFD SP!,{PC}^
13、异常和返回地址:
(1)复位:不用返回;
(2)数据中止:LR-8,即:SUBS PC,LR,#8;
(3)FIQ:LR-4;
(4)IRQ:LR-4;
(5)预取指令:LR-4;
(6)软件中断:LR,即:MOVS PC,LR;
(7)未定义指令:LR。
14、异步串行方式的数据格式:
(1)1位起始位,规定为低电平0;
(2)5~8位数据位,即要传送的有效信息;
(3)1位奇偶校验位;
(4)1~2位停止位,规定为高电平1。
15、PWM是如何工作的?
当时钟被使能后,定时器计数缓冲寄存器(TCNTBn)把计数初始值下载到递减计数器中。
定时器比较缓冲寄存器(TCMPBn)把其初始值下载到比较寄存器中,并将该值和递减计数器的值进行比较。
当递减计数器和比较寄存器值相同时,输出电平翻转。
递减寄存器减至0后,输出电
平再次翻转,完成一个输出周期。
这种基于TCNTBn和TCMPBn的双缓
冲特性使定时器在频率和占空比变化时能产生稳定的输出。
16、PWM启动的步骤:
(1)初始化时钟(分频器,选频器);
(2)初始化tcntb,tcmpb;
(3)停止auto-reload,使能manual update;
(4)使能auto-reload, 清除manual update,并启动定时器。
17、看门狗中断操作的流程:
(1)设置看门狗中断操作,包括全局中断和看门狗中断的使能及看门
狗中断向量的定义,如果只是进行复位操作,这一步可以不用设置;
(2)对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因
子、分频器的分频值、中断使能和复位使能等;
(3)对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)
的设置;
(4)启动看门狗定时器。
四、综合题与编程题
1、使能/禁止IRQ中断:
MRS R0, CPSR BIC R0, R0,#0x80 MSR CPSR_c,R0 MOV PC,LR MRS R0, CPSR ORR R0, R0,#0x80 MSR CPSR_c,R0 MOV PC,LR
2、GNU内联汇编:
int myadd ( int a , int b ) {
__asm__ __volatile__(
“mov r0,%1\n”
“mov r1,%2\n”
“add r0,r0,r1\n”
“mov %0,r0\n”
:”=r”(sum)
:”r”(a),”r”(b)
);
return sum;
} int myadd ( int , int );
void _start ( void )
{
int sum=0;
sum=myadd(10,20);
__asm__ __volatile__(
“ldr
r0,=0x20009000\n”
“str %0,[r0]\n”
:
:”r”(sum)
);
}
3、C和汇编的混合编程:
(从C程序中调用汇编语言).text
.global myadd
myadd:
mov r0,#10
mov r1,#20
add r0,r0,r1
ldr r1,=0x20009000
str r0,[r1]
mov pc,lr
.end
void myadd ( void ); void _start ( void )
{
myadd( );
}
(从汇编语言调用C程序)int myadd(int a,int b)
{
return a+b;
} .text
.global _start
.extern myadd
_start:
mov r0,#12
mov r1,#20
stmfd sp!,{lr}
bl myadd
ldr r1,=0x20009000
str r0,[r1]
ldmfd sp!,{lr}
mov pc,lr
.end
4、开发环境搭建(见实验1)。
5、GNU的三个实验(题目改了一些数据)。
6、看门狗中断、LED实验、按键中断实验。
五、附:指令条件码表
操作码条件助记符标志含义
0000 EQ Z=1 相等
0001 NE Z=0 不相等
0010 CS/HS C=1 无符号数大于或等于0011 CC/LO C=0 无符号数小于
1000 HI C=1,Z=0 无符号数大于
1001 LS C=0,Z=1 无符号数小于或等于1010 GE N=V 有符号数大于或等于1011 LT N!=V 有符号数小于
1100 GT Z=0,N=V 有符号数大于
1101 LE Z=1,N!=V 有符号数小于或等于。