15、什么是嵌入式系统?其特点有些什么?
答: 嵌入式系统是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。”
特点:1)是专用的计算机系统,用于特定的任务;
2)资源较少,可以裁减;
3) 功耗低,体积小,集成度高,成本低;
4)使用实时操作系统;
5) 可靠性要求更高,具有系统测试和可靠性评估体系;
6)运行环境差异大
7)大部分程序固化在 ROM中;
8) 较长的生命周期;
9)嵌入式微处理器通常包含专用调试电路
16、嵌入式RISC处理器“ARM7TMDI”中TDMI的基本含义是什么? 答:ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为:T:支持16为压缩指令集Thumb;D:支持片上Debug;M:内嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上断点和调试点;
17、目前嵌入式操作系统有哪些?
答:1)μC/OS-II 嵌入式操作系统内核;2)VxWorks嵌入式实时操作系统;3)WinCE操作系统;4)Linux操作系统 ;5)Symbian操作系统
19、嵌入式系统开发的基本流程?
答:1)系统定义与需求分析;
2)系统设计方案的初步确立;
3)初步设计方案性价比评估与方案评审论证;
4)完善初步方案、初步方案实施;
5)软硬件集成测试;
6)系统功能性能测试及可靠性测试。
20、什么是可编程片上系统?
答:用可编程逻辑技术把整个系统放到一块硅片上,称作可编程片上
系统SOPC.它是一种特殊的嵌入式系统,首先它是SOC,即由单个芯片实现整个系统的主
逻辑功能,具有一般SOC基本属性;其次,
它又具备软硬件在系统可编程的功能,是
可编程系统,具有可裁剪、可扩充、可升级等灵活的设计方式。
21、有时要使用Thumb技术的原因
答:(Thumb指令集是把32位的ARM指令集的一个子集重新编码后形成的一个特殊的16位指令集。)在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统用Thumb指令编写最小代码量的程序(能够很好的解决代码长度的问题),却取得以ARM代码执行的最好性能,可以带来低功耗,小体积,低成本。
22、ARM处理器的工作模式有哪几种?
答:1)正常用户模式(usr);
2)快速中断模式(fiq);
3)普通中断模式(irq);
4)操作系统保护模式(svc)或 管理模式 ;
5)数据访问中止模式(abt);
6)处理未定义指令的未定义模式(und);
7)运行特权级的操作系统任务的系统模式(sys)。 23、寄存器R13,R14,R15的专用功能各是什么?
答:1)寄存器R13保存堆栈指针SP;2)寄存器R14用作子程序链接寄存器,也称为LR ,用以保存返回地址;3)R15(PC)用作程序计数器。
25、ARM的异常有哪几种,各进入何种工作模式?他们退出各采用什么指令?
答:1)复位(Reset)异常(管理模式);
2)未定义指令(undefined instruction)异常(未定义模式);
3)软件中断(SWI)异常(管理模式);
4)指令预取中止(Prefech Abort)异常(中止模式);
5)数据访问中止(Data Abort)(中止模式);
6)快速中断请求(FIQ)(FIQ模式);
7)外部中断请求(IRQ)(IRQ模式)。
异常返回指令:1)SWI,未定义的返回:MOVS PC,R14;2)IRQ,FIQ,预取中止的返回:SUBS PC,R14,#4;3)数据中止返回并重新存取:SUBS PC,R14,#8
异常中断的优先级:复位(最高优先级)---->数据异常中止--->FIQ
--> IRQ--->预取指异常中止--->SWI---->未定义指令(包括缺协处理器)。
26、什么是小端和大端存储器组织?
答:1)小端存储器组织是较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。 2) 大端存储器组织是较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。
28、ARM核现在有哪几种?
答:ARM7、 ARM9、ARM9E 、ARM10E,、SecurCore 、ARM11
47、表示递增和递减的满堆栈和空堆栈有哪几种组合,请比较它们的特点。
答:有4种类型的堆栈,表示递增和递减的满堆栈和空堆栈的各种组合。
1、满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA,STMFA等。
2、空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空地址。指令如LDMEA,STMEA等。
3、满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含
有效数据项的最低地址。指令如LDMFD,STMFD等。
4、空递增:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空地址。指令如LDMED,STMED等。
57.嵌入式Linux与其他嵌入式操作系统相比,有哪些优点和缺点? 答:嵌入式Linux作为嵌入式操作系统,与其他嵌入式操作系统相比,优点有:开放源代码、免费、开发周期短等;缺点是实时性较差。
60.软启动状态对ARM处理器有什么作用?
答:.软启动时,处理器被复位,但是SDRAM 里面的内容仍旧保持。
62.数字接地与模拟接地一般如何区分开和相连?
答:系统中的模拟电源一般由数字电源产生,可以通过:
(1)数字电源与模拟电源,以及数字地与模拟地之间加铁氧体磁珠或电感构成无源滤波电路;
(2)采用多路稳压器的方法将模拟地和数字地连接。
63.简述SDRAM在ARM系统中的主要作用。
答:SDRAM 具有高速、大容量等优点,是一种具有同步接口的高速动态随机存储器,在ARM系统中主要用作程序的运行空间、数据及堆栈区。
64.区别ARM外启动方式和内启动方式的不同。
答:外启动方式下,ARM从外部程序存储器取指令执行;内启动时,ARM运行片上ROM中固化的启动程序。
65.简述嵌入式设备中程序运行方式。
答:嵌入式设备中程序运行方式有两种:一种是将程序加载到SDRAM中运行,另一种是程序直接在其所在的ROM/Flash存储器中运行。
67、在读写数据速度上,Nor-Flash 与Nand-Flash有什么区别?
答:Nor-Flash的读取速度比Nand-Flash快; Nand-Flash的写入速
度和擦除速度比Nor-Flash快。
74.如何确保复位电路的可靠复位?
答:一方面复位低电平时间足够长(20ms以上),保证ARM可靠复位;另一方面保证复位电路稳定性良好,防止ARM 误复位。
93.简述ARM Linux内核启动三个阶段的功能。
答:第一阶段主要是进行CPU和体系结构的检查、CPU本身的初始化,以及页表的建立等。初始化是从内核入口Entry开始到start_kernel
前结束。
第二阶段主要是对系统中的一些基础设施进行初始化。
最后是更高层次的初始化,如根设备和外部设备的初始化。
97.简述ARM Linux三种主要编译开发工具的作用。
答:二进制文件处理工具binutils主要应用于移植调试操作系统初
期的辅助开发;编译工具gcc用于编译内核代码;glibc用于链接和
运行库文件。
102.在嵌入式系统中对GUI的基本要求是什么?
答:(1)占用的存储空间以及运行时占用资源少。
(2)运行速度以及响应速度快。
(3)可靠性高。
(4)便于移植和定制。
116、ARM处理器的工作模式
答:用户模式、FIQ模式、IRQ模式、SVC模式、中止模式、未定义
指令异常模式、系统模式
118、ARM有15个通用寄存器、一个或两个状态寄存器和PC,有些模
式共用同一个寄存器,一共具有37个寄存器。
119、R12一般在子程序连接代码中使用,作为子程序间的中间结果
寄存器;R13通常被用做栈指针,也称做SP;R14又被称为连接寄存
器LR
120、寄存器R14的两种特殊用途
存放当前子程序的返回地址;当发生异常中断的时候,该模式下的特
定物理R14被设置成该异常模式将要返回的地址。
124、ARM7采用的是三级流水技术,指令分为三个阶段执行:取指、
译码、执行;ARM9采用的是五级流水技术,指令分为三个阶段执行:取指、译码、执行、存储器访问、寄存器写操作;
126、Thumb指令与ARM指令性能比较,分别有什么优缺点。
答:Thumb代码所需的存储空间约为ARM代码的60%~70%
Thumb代码使用的指令数比ARM代码多30%~40%
若使用32位的存储器,ARM代码比Thumb代码快约40%
若使用16位的存储器,Thumb代码比ARM代码快约40%~50%
在ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%
127、什么是交叉编译,为什么要采用交叉编译(5分)
答:所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行
的可执行程序。(3分)之所以采用交叉编译,是因为目标平台上不
具备直接运行开发环境的条件(2分)。
128、在ARM系统中,函数调用的时候,参数是通过哪种方式传递的? 参考答案:应用程序中使用中间寄存器和数据栈来传递参数。在ARM
汇编中,如果第1-4个参数通过R0-R4来传递,超过4个的使用数据
栈进行传递,输出函数R0传递。
129、中断(interrupt,如键盘中断)与异常(exception,如除0异
常)有什么区别?
参考答案:所谓的中断应该是指外部硬件产生的一个电信号,从cpu
的中断引脚进入,打断cpu当前的运行。
所谓异常,是指软件运行中发生了一些必须作出处理的事件,cpu自
动产生一个陷入来打断当前运行,转入异常处理流程。
137.嵌入式系统与通用计算机之间的区别。答:通用计算机系统采用
标准化、模块化的设计,其技术要求是高速、海量的信息处理,技术
发展方向是处理速度、总线宽度、存储容量的无限提升。而嵌入式系
统怎采用针对性较强的专业化设计,技术要求是满足具体应用,技术
发展方向是在保证应用系统的技术要求和可靠性的前提下,尽可能减
小成本、体积和功耗。
138.嵌入式处理器的分类 答:1嵌入式微处理器MPU 2嵌入式微
控制器MCU 3 嵌入式DSP处理器4嵌入式片上系统SOC 5 嵌入式
可编程片上系统SOPC
139.嵌入式操作系统的作用是什么?请举出3种常见的操作系统。
答:用于管理存储器分配、中断处理、任务间通信和定时器响应,以
及提供多任务处理等功能。嵌入式操作系统,大大地提高了嵌入式系
统硬件工作效率,并为应用软件开发提供了极大的便利。3种常见的
操作系统:WinCE、Vxworks、uClinux
140.嵌入式系统开发流程
答:嵌入式系统开发流程一般可分为4个阶段:需求分析阶段、硬件
开发阶段、软件开发阶段和程序固化阶段。
142.在ARM系列中,ARM7, ARM9分别是什么体系结构。
ARM7是冯•诺依曼体系结构 ARM9是哈佛体系结构
145.ARM处理器数据存储格式有哪几种?各自的特点?能否举例进行
说明。
答:ARM存储器有大端格式和小端。大端格式中,字数据的高字节存
储在低地址中,而字数据的低字节则存放在高地址中;小端格式则相
反。
148.ARM处理器共有多少个32位寄存器,多少个为通用寄存器,多
少个状态寄存器。
答:共有37个32位寄存器,其中31个为通用寄存器,可用于累加
操作,6个为状态寄存器。
149. 在ARM指令中,R13寄存器常用?R14寄存器被称为?,R15寄
存器?
答:R13常用做堆栈指针,R14被称为子程序连接寄存器或连接寄存
器。R15寄存器用于保存程序计数器(PC)。R15一般不作为通用寄存
器使用
151.ARM指令的寻址方式。
(1)寄存器寻址;(2)立即寻址;(3)寄存器偏移寻址;(4)寄存器间接
寻址;(5)基址变址寻址;(6)多寄存器寻址;(7)堆栈寻址;
(8)块拷贝(复制)寻址;(9)相对寻址。
154.最小系统的组成
S3C2410A最小系统包含处理器电路、电源电路、晶体振荡器电路、
复位电路和存储器电路。
158.什么是交叉编译工具。
答:交叉编译是一个平台上生成另外一个平台上的可执行代码。使用
交叉编译工具有很多种原因,有时是因为目标平台上不允许或不能够
安装所需的编译器;有时是因为目标平台资源贫乏,无法运行所需编
译器;有时是因为目标平台还没有建立,连操作系统都没有,根本无
法运行编译器。
164.简述嵌入式操作系统与通用操作系统的区别。
答:通用操作系统是一种通用的操作系统,可运行在不同的硬件平台。
而嵌入式操作系统与一般的Windows操作系统不同,其是一种专用、
可定制的特点。
175. 简述S3C2410的存储空间是如何分配的?
答:S3C2410芯片采用的是ARM920T核,地址空间总共为4G。其中,1GB地址空间用于支持外部存储器的链接,此部分被分成8个存储块,每块128MB。另外的空间有一小部分用于I/O端口或部件的寻址,其他的地址空间没有用到。
179. 简述看门狗定时器的作用及必要性。
答:当系统程序出现功能错乱,引起系统程序死循环时,能中断该系统程序的不正常运行,恢复系统程序的正常运行。嵌入式系统由于运行环境的复杂,及所处环境有较强的干扰信号,或系统程序本身的不完善,不能排除系统程序不会出现死循环现象。在系统中加入看门狗部件,当系统程序出现死循环时,看门狗定时器产生一个具有一定时间宽度的复位信号,迫使系统复位,恢复系统正常运行。 181. 简述Boot loader的作用
系统初始化、加载和运行内核程序
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 大多数 Boot Loader 都包含两种不同的操作模式:“启动加载”模式和“下载”模式 :
启动加载(Boot loading)模式:Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。
下载(Downloading)模式:Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。
182. ARM常见的寻址方式有哪些?
寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。
ARM处理器具有9种基本寻址方式。
1.立即寻址; 4.寄存器间接寻址; 7.堆栈寻址
2.寄存器寻址; 5.变址寻址; 8.块拷贝寻址
3.寄存器移位寻址; 6.多寄存器寻址; 9.相对寻址
一、 应用
4、写出完成下列操作的指令
(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;
5、下列指令完成什么操作
(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中
7、先对内存地址0x3000开始的100个内存单元填入0x10000001~0x10000064字数据,然后将每个字单元进行64位累加结果保存于[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
12、说明指令STMIA r12!, {r0-r11}的操作功能。(4分)
将R0-R11十二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。
16、有如下程序段,画出程序流程图,并回答执行程序以后R0的值是多少。(8分)
num EQU 2 start
MOV r0, #0 MOV r1, #5
MOV r2, #2
BL func
stop
B stop
func
CMP r0, #num MOVHS pc, lr ADR r3, JumpTable
LDR pc, [r3,r0,LSL#2] JumpTable
DCD DoA
DCD DoS
DoA
ADD r0, r1, r2 MOV pc, lr DoS
SUB r0, r1, r2
MOV pc,lr
END
答:R0为0调用DoA,R0为1调用DoS,R0大于2直接返回,流程图略。R0=7
20、已知R0=8,R2=5,执行MOV R0,R2,LSL #2后,r0=20,r2=5
21、已知r0=0x00000000,r1=0x00009000,
men32[0x00009000]=0x01010101,mem32[0x00009004]=0x02020202
问执行以下指令后,r1,r0的情况
1) ldr r0,[r1,#0x4]! ;r0=0x02020202,r1=0x00009004
2) Ldr r0, [r1,#0x4] ;r0=0x02020202,r1=0x00009000
3) Ldr r0,[r1], #0x4 ;r0=0x01010101,r1=0x00009004
22、已知men32[0x80018]=0x03,
men32[0x80014]=0x02,
men32[0x80010]=0x01,r0=0x00080010,
r1=0x00000000,r2=0x00000000,r3=0x00000000
问执行ldmia r0!,{r1-r3}后,r0,r1,r2,r3的情况
r1=0x01,r2=0x02,r3=0x03,r0=0x80018
23、已知r1=0x00000002,r4=0x00000003,sp=0x00080014,
问执行stmfd sp!,{r1,r4}后, r1,r4,sp的情况
r1=0x00000002, r4=0x00000003,sp=0x000800010
24、已知r0=0x0,cpsr=0xd3, 执行以下指令后r0的情况
Mrs r0,cpsr ; r0=0xd3
Bic r0,r0,#0x80 ; r0=0x53
25、ARM处理器寄存器R0中的数据内容为0xAABBCCDD,将其存放到内存地址0x10000开始的内存单元中,分别采用小端对齐存储格式和大端对齐格式存储,试分析内存地址0x10000字节单元的内容。
答:小端模式:0x10000~0x10003中依次存放的数据是0x DD 0x CC
0x BB 0xAA
大端模式:0x10000~0x10003中依次存放的数据是0xAA 0x BB
0x CC 0x DD