1、嵌入式系统的定义
以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、成本、体积、功耗严格要求的专用计算机系统。
2、嵌入式系统的应用领域
工业控制领域:工控设备、智能仪表、汽车电子
消费电子领域:信息家电、智能玩具、通信设备、移动存储设备
网络技术:网络设备、电子商务
军事国防:军事电子、航海航天
3、嵌入式技术的发展趋势
嵌入式设备进入网络互联是未来的发展趋势
优化嵌入式系统软硬件内核,提高系统运行速度,降低功耗和硬件成本
指令级的并行计算技术将引入嵌入式微处理器
嵌入式微处理器将会向多核技术发展
嵌入式技术将引领信息时代
4、下面不符合嵌入式操作系统特点的是(B)
A、实时性 B、不可定制C、微型化 D、可移植性
第二章:ARM技术与ARM体系结构
1、RISC
Reduced Instruction Set Computer,精简指令集计算机
2、分析ARM7TDMI-S个字母所代表的含义
7:系列号
T:支持16位的Thumb指令集
D:支持JTAG片上调试
M:支持长乘法操作的ARM指令
I:带有嵌入式追踪宏单元ETM,用来设置断点和观察点的调试硬件
S:可综合版本,意味着处理器内核是以源代码形式提供的。
3、ARM处理器的工作模式
用户模式、FIQ模式、IRQ模式、SVC模式、中止模式、未定义指令异常模式、系统模式
4、7种工作模式哪几种属于模式、那种属于异常模式。
在7种工作模式中,除了用户模式以外,其他6种模式可以称为模式,在6种模式中,除了系统模式外其他5种称为异常模式。
5、ARM有15个通用寄存器、一个或两个状态寄存器和PC,有些模式共用同一个寄存器,一共具有37个寄存器。
6、R12一般在子程序连接代码中使用,作为子程序间的中间结果寄存器;R13通常被用做栈指针,也称做SP;R14又被称为连接寄存器LR
7、寄存器R14的两种特殊用途
存放当前子程序的返回地址;当发生异常中断的时候,该模式下的特定物理R14被设置成该异常模式将要返回的地址。
8、程序状态寄存器
标志位
I :IRQ中断使能位;
F:FIQ中断使能位;
T:指令执行的状态控制位(说明本指令是THUMB指令还是ARM指令)
9、ARM异常处理的异常分类
数据中止、快速中断请求、普通中断请求、预取指中止、软件中断、复位及未定义指令
10、ARM处理器字数据的存储格式有哪两种?并指出这两种格式的区别。
大端对齐和小端对齐
11、ARM处理器寄存器R0中的数据内容为0xAABBCCDD,将其存放到内存地址0x10000开始的内存单元中,分别采用小端对齐存储格式和大端对齐格式存储,试分析内存地址0x10000字节单元的内容。
答:小端模式:0x10000~0x10003中依次存放的数据是0x DD 0x CC 0x BB 0xAA
大端模式:0x10000~0x10003中依次存放的数据是0xAA 0x BB 0x CC 0x DD
12、ARM7采用的是三级流水技术,指令分为三个阶段执行:取指、译码、执行;ARM9采用的是五级流水技术,指令分为三个阶段执行:取指、译码、执行、存储器访问、寄存器写操作;
13、什么叫做流水线互锁
答:在流水线运行过程中可能会出现这种情况:当前指令的执行可能需要前面指令的执行结果,但这时前面的指令没有执行完毕,从而会导致当前指令的执行无法获得合法的操作数,这时就会引起流水线的等待,这种现象在流水线机制里称为互锁。
14、嵌入式处理器指令的执行周期包括(D)
A.启动 运行 退出
B.取指令 指令译码 执行指令 存储
C.启动 运行 挂起 退出
D.取指令 指令译码 执行指令
15.Embedded Visual Studio是(B)
A.嵌入式硬件开发工具
B.嵌入式软件开发工具
C.嵌入式调试工具
D.嵌入式编译工具
16.JTAG的引脚TCK的主要功能是(C)
A.嵌入式硬件开发工具
B.嵌入式软件开发工具
C.嵌入式调试工具
D.嵌入式编译工具
17、数据与指令都存储在存储器中是冯诺依曼体系结构的主要特点。ARM一般采用的是哈佛体系结构。
18、以下叙述中,不符合RICS特征的是(B )
A. 指令长度固定,种类少
B. 寻址方式丰富,指令功能尽量增强
C.设置大量通用寄存器,访问存储器指令简单
D. 选取使用频率较高的指令
19、在下列ARM处理器模式中,(D)模式有自己的R8-R14寄存器。
A.系统模式
B.终止模式
C.中断模式
D.快速中断模式
20、按照ARM过程调用标准(APCS),栈指针使用(B)寄存器
A.R0
B.R13
C.R14
D.R15
21、嵌入式系统应用软件一般在宿主机上开发,在目标机上运行,因此需要一个(B)环境。
A.交互操作系统
B.交叉编译
C.交互平台
D.分布式计算
22、ARM处理器中断有两种处理模式,分别为快速中断模式和外部中断模式。
23、嵌入式系统中按照总线的传送的信息类型,可以分为数据总线、地址总线和控制总线
第三章 ARM指令集寻址方式
1、立即数
每个立即数由一个8位的常数进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。
选择题:下列哪个不是合法的立即数:0xFF, 0x104, 0x39C00, 0x1FE800
2、寄存器寻址
选择题:下列哪条指令属于寄存器寻址?
MOV R1 ,#0x198 LDR R0 , [R1 , #4] MOV R3 , R0 MOV R0 , [R2] ,#4
3、下面哪条语句执行后,实现了R0=[R1+R2*4],
LDR R0 ,[ R1,R2,LSL #2 ];
LDR R0 ,[ R1,R2,LSL #2 ]!;
LDR R0 ,[ R1],R2,LSL #2 ;
LDR R0 ,[ R2,R1,LSL #2 ];
第四章 ARM指令系统
1、算术运算指令
选择题:下列哪条指令逆向减法指令?
SUB R0,R1; SUBS R0, R1;SBC R0, R1;RSB R0,R1;
2、逻辑运算指令
选择题:下列哪条指令能实现清除R0中的低8位,其他位保持不变?
ADD R0,R0,#0Xff ;
ORR R0,R0,#0Xff ;
EOR R0,R0,#0Xff ;
BIC R0,R0,#0Xff ;
3、ARM分支指令
选择题:下列哪条指令是带状态切换的跳转指令
B BL BX BLX
第五章:
Thumb指令与ARM指令性能比较,分别有什么优缺点。
答:Thumb代码所需的存储空间约为ARM代码的60%~70%
Thumb代码使用的指令数比ARM代码多30%~40%
若使用32位的存储器,ARM代码比Thumb代码快约40%
若使用16位的存储器,Thumb代码比ARM代码快约40%~50%
在ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%
第六章
第七章 汇编语言程序设计
1、写出完成下列操作的指令
(1)R0=16 MOV R0,#16;
(2)R1=R0*4 MUL R1,R0,#4;
(3)R0=R1/16 MOV R0,R1,LSL#4;
(4)R1=R2*7 MUL R1,R2,#7;
2、下列指令完成什么操作
(1)ADDS R0,R1,R1,LSL #2 R0=R1+(R1<<4);
(2)RSB R2,R1,#0 R2=R1-0
(3)ADD R0,R1,R1,LSL #1 R0=R1+(R1<<2)
(4)SUB R0,R0,R1,LSL #4 R0=R0-(R1<<16)
(5)ADD R0,R0,R1,LSL #7 R0=R0+(R1<<128)
(6)MLA R0,R1,R2 R0=R1×R2
(7)SMULL R0,R1,R2,R3
R0=(R2×R3)的低32位
R1=(R2×R3)的高32位
(8)BL LABEL 当程序无条件跳转到标号LABEL处执行时,同时将当前的PC值保存到R14中
3、用ARM汇编语言设计程序实现求20!(20的阶乘),并将其位结果放在[R9:R8]中(R9中存放高32位)。
AREA Fctrl, CODE, READONLY
ENTRY
CODE32
STARY
MOV R8, #20
MOV R9, #0
SUB R0, R8, #1
LOOP
MOV R1, R9
UMULL R8, R9, R0,R8
MLA R9,R1,R0,R9
SUBS R0,R0, #1
BNE LOOP
STOP
B STOP
END
4、先对内存地址0x3000开始的100个内存单元填入0x10000001~0x100000字数据,然后将每个字单元进行位累加结果保存于[R9:R8](R9中存放高32位)
AREA Fctrl, CODE, READONLY
ENTRY
CODE32
STARY
MOV R0, #3000
MOV R1, #0x10000001
MOV R2, #0x100
LOOP_1
STR R1,[R0],#4
ADD R1, R1, #1
SUBS R2,R2, #1
BNE LOOP_1
MOV R0, #0x3000
MOV R2, #0x100
MOV R9, #0
MOV R8, #0
LOOP_2
LDR R1, [R0], #4
ADDS R8, R1, R8
ADC R9, R9,#0
SUBS R2, R2 ,#1
BNE LOOP_2
STOP
B STOP
END
5、8421码是一种十进制数,它采用4个bit位表示一个十进制位,分别用0000~1001表示十进制的0~9。设计汇编程序将一个可以表示8位十进制的8421码数据转换成等价的整数形数据。
AREA Dec, CODE, READONLY
ENTRY
CODE32
LDR R0,=0x12345678
Dec2int
MOV R1, #0
MOV R2, #8
MOV R5,#10
Dec2int_l1
MUL R4, R1, R5
MOV R0, R0, ROR #28
AND R3, R0, #0Xf
ADD R1, R4, R3
SUBS R2, R2, #1
BNE Dec2int_l1
STOP
B STOP
END
第8章ARM汇编语言与嵌入式C混合编程
1、下面关于嵌入式C的描述,正确的是(c)
A、总在第一个定义的函数执行B、要调用的函数,必须在main( )中定义
C、总是从main( )处开始执行 D、main( )必须放在程序的开始处
2、已知有变量data1定义如下:(c)
Union data
{ int i;
Char ch;
Float f;
}data1;
则变量data1所占的内存存储空间可表示为。
A.sizeof(int)
B.sizeof(char)
C.sizeof(float)
D.sizeof(int)+ sizeof(char)+ sizeof(float)
3、什么是交叉编译,为什么要采用交叉编译(5分)
答:所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行的可执行程序。(3分)之所以采用交叉编译,是因为目标平台上不具备直接运行开发环境的条件(2分)。
4、在ARM系统中,函数调用的时候,参数是通过哪种方式传递的?
参:应用程序中使用中间寄存器和数据栈来传递参数。在ARM汇编中,如果第1-4个参数通过R0-R4来传递,超过4个的使用数据栈进行传递,输出函数R0传递。
5、中断(interrupt,如键盘中断)与异常(exception,如除0异常)有什么区别?
参:所谓的中断应该是指外部硬件产生的一个电信号,从cpu的中断引脚进入,打断cpu当前的运行。
所谓异常,是指软件运行中发生了一些必须作出处理的事件,cpu自动产生一个陷入来打断当前运行,转入异常处理流程。
6、通过取出LedStatus的特定位进行判断选择对端口B的数据寄存器进行特定的清零,控制LED1和LED2灯的点亮,其中端口B(rPDATAB)的第2、3管脚分别连接LED1、LED2(注:管脚从第0管脚开始编号,低电平点亮,程序不更改其他位)
参:
(1)取出LedStatus的第0位进行判断,如果成立则把端口B的数据寄存器的第2位清零,其余位状态保留,点亮LED1:
If((Ledstatus & 0x01) = = 0x01)
rPDATAB= rPDATAB & 0Xfffffffb;
(2)取出LedStatus的第1进行判断,如果成立则把端口B的数据寄存器的第3清零,其余位状态保留,点亮LED2
If((Ledstatus & 0x01) = = 0x02)
rPDATAB= rPDATAB & 0Xfffffff7;下载本文