2024年6月12日发(作者:)

简答题

什么是嵌入式操作系统?

答:嵌入式系统是以应用为中心,以计算机技术为基础,软/硬件可裁减,功能。可靠性,

成本,体积,功耗要求严格的专用计算机系统。

与通用计算机相比,嵌入式系统有哪些特点?

答:(1).嵌入式系统通常是面向特定应用的;

(2).嵌入式系统是将计算机技术,半导体技术和电子技术与各行各业的具体应用相结合的

后的产物,是一门综合技术学科;

(3).嵌入式系统和具体应用有机的结合在一起,它的升级换代也是和具体产品同步进行的,

因此嵌入式产品一旦进入市场,就有较长的生命周期;

(4).为了提高执行速度和可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机

本身中,而不是存储于磁盘等载体中;

(5).嵌入式系统本身不具有自主开发能力,即使设计完成以后用户通常也不能对其中的程

序功能进行修改,必须有一套开发工具和环境才能进行开发。

ARM处理器有几种寻址方式,说明各种寻址的方式。

答:

立即寻址:操作数直接放在指令中。例如:ADD R0,R0,#0x3f ;R0←R0+0x3f

寄存器寻址:操作数放在寄存器中。例如:ADD R0,R1,R2 ;R0←R1+R2

寄存器间接寻址:操作数在内存,以寄存器中的值作为操作数的地址。

例如:LDR R0,[R1] ;R0←[R1]

基址加偏移量寻址(基址变址寻址):基址寄存器的内容与指令中的偏移量相加形成操作数的

有效地址 例如:LDR R0,[R1,#4]

LDR R0,[R1,R2] ;R0←[R1+R2]

;R0←[R1+4]

多寄存器寻址:一条指令可以完成多个寄存器值的传送。例如:

LDMIA R0,{R1,R2,R3,R4}

12]

堆栈寻址:堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用

一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。

例如:STMFD R13!,{R0,R4-R12,LR}

LDMFD R13!,{R0,R4-R12,PC}

举例介绍嵌入式处理器有哪几类?

答:1.嵌入式微处理器(Embedded Microprocessor Unit,EMPU);

2.嵌入式微控制器;(Embedded Microcontroller Unit,EMCU)

1 / 16

;R1←[R0];R2←[R0+4];R3←[R0+8];R4←[R0+

3.嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP);

4.嵌入式片上系统(Embedded System on Chip,EsoC);

什么是立即数?请简要描述立即数在使用时有什么注意要点。

立即数,主要是指寻址时直接在指令中出现的数,在使用时注意(1)立即数前需要加#(2)

ARM指令只有32位长,立即数在指令中占12位存储空间,ARM用这12位空间8位表示

有效数字-基数B,4位表示译为的数M,按照把B循环右移M*2位,构造成一个新的32

位的数,其它位补0,所以在使用立即数时,要注意其是否合法。

请问BL指令跳转时LR寄存器保存的是什么内容?并请简述原因。

BL跳转时,LR中保存的是执行BL跳转指令的下一条指令的地址,考虑流水线的情况,即当

前的PC-4。LR用来在需要返回程序时从LR中还原程序执行的位置继续执行。

ARM内核有多少个寄存器,请列举出这些寄存器的名字和数量。

ARM有37个寄存器,(1)未分组寄存器:R0-R7,共8个;(2)分组寄存器R8-R14,其中

FIQ模式下有单独的一组R8-R12共5个,另外6种模式共用一组R8-R12,共5个,USR和

SYS模式共用一组R13-R14,共2个,另外5种模式下各有独自的一组R13-R14,共10个;

(3)程序计数器PC即R15寄存器,共1个;(4)状态寄存器CPSR,和5个备份状态寄存

器SPSR,共6个;ARM总计37个寄存器。

ARM通用寄存器中,有3个寄存器有特殊功能和作用,请写出它们的名字和作用。(6分)

R13:SP栈指针寄存器,用来保存程序执行时的栈指针位置;R14:LR返回链接寄存器,用

来保存程序执行BL指令或模式切换时的返回原程序继续执行的地址;R15:PC程序计数器,

保存程序执行的当前地址。

ARM的CPSR寄存器的位定义如图所示,试简述各位的功能。(8分)

3133210

NZCV

标志位含义

保留

IFTM[4-0]

N N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零 Z Z=1 表示运算的结果为

零;Z=0 表示运算的结果为非零 C C=1 表示有进位,C=0 表示没有进位 V V=1 表示符号位溢

出,V=0 表示结果没有溢出 Q 在ARM vTE/J 架构支持,指示DSP 指令是否溢出

J 仅ARM 5TE/J 架构支持,J = 1 表示处理器处于Jazelle 状态 I I=1 表示禁止IRQ F F=1 表示

禁止FIQ

T 仅ARM xT 架构支持,T = 0 表示处理器处于ARM 状态,T=1 表示处理器处于Thumb 状态

什么是伪指令和伪操作?在ARM汇编中有哪几种伪 指令?

答:在ARM汇编语言程序中有些特殊助记符,这些助记符与一般指令的助记符的不同之处

在于没有相对应的操作码或者机器码,通常称这些特殊指令助记符伪指令,他们多完成的操

作成为伪操作;

2 / 16

在ARM汇编中,有如下几种伪指令:

(1)符号定义伪指令;

(2)数据定义伪指令;

(3)汇编控制伪指令;

(4)信息报告伪指令;

(5)宏指令及其他伪指令。

如何定义寄存器列表,试举一个使用寄存器列表的例子,要求实现4个字的内存复制。

答:

AREA EXAMPLE1,CODE,READONLY

ENTRY

LDR R0,=0XFF ;把地址0XFF赋给R0

LDR R5,=0X0F ;把地址0X0F赋给R5

START

PBLOCK RLIST {R1-R4} ;把R1-R4定义为PBLOCK

LDMIA R0,PBLOCK ;把R0为首地址的内存4个字单元装载至R1到R4中

STMIA R5,PBLOCK ;把R1到R4的值依次存至R5为首地址的内存字单元

STOP

B STOP ;死循环

END

如何定义一个宏,宏与子程序的区别是什么?

答:宏的格式为:

MARCO和MEND

[$标号] 宏名 [$参数1,$参数2…..]

指令序列

MEND

MARCO表示一个宏定义的开始,MEND表示一个宏的结束,MARCO和MEND前呼后

应可以将一段代码定义为一个整体,又称宏,然后在程序中就可以在程序中通过宏的名称及

参数调用该段代码。

宏指令可以重复使用,这一点的使用方式与子程序有些相似,子程序可以节省存储空间,

提供模块化的程序设计。但使用子程序机构时需要保存/恢复现场,从而增加了系统的开销,

因此,在代码传递的参数较多并且比较短时,可以使用宏代替子程序,宏在被调用的地方展

开。

3 / 16

ARM汇编中如何定义一个段,段有几种属性?

答:AREA用于定义一个代码段,数据段,或者特定属性的段。

段的几种属性如下:

READONLY表示只读属性;

READWRITE表示本段可读写;

CODE定义代码段;

DATA定义数据段;

ALIGN=表达式的对齐方式为2的表达式次方;;

COMMON:定义一个通用段,这个段不包含用户代码和数据。

在一个汇编源文件中如何包含另一个文件中的内容?

答:通常可以使用GET/INCLUDE指令,在某源文件中定义一些宏指令,用MAP和

FIELD定义结构化数据结构类型,用EQU定义常量的符号名称,然后用GET/INCLUDE将

这个源文件包含到其他源文件中。

7TDMI采用了几级流水线工作方式,简要说明。

答:三级

1、取指令 2、译码 3、执行

9采用了几级流水线工作方式,简要说明。

答:五级流水线工作方式,1.取指2.指令译码3.执行4.数据存储访问5.写寄存器

3.哈佛体系结构和冯诺依曼体系结构有何不同。

答:哈佛体系结构的两套地址总线和数据总线是分开的,冯诺依曼体系结构是复用的。

1. 简述ARM发生异常时,ARM核心会自动做哪些事情?从异常返回时,我们要做哪些事

情?

当异常产生时, ARM core:

拷贝 CPSR 到 SPSR_

设置适当的 CPSR 位:

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

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

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

保存返回地址到 LR_

设置 PC 为相应的异常向量

返回时, 异常处理需要:

从 SPSR_恢复CPSR

4 / 16

从LR_恢复PC

Note:这些操作只能在 ARM 态执行.

2. 用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配。

假定低32位数存放在r0和r1里面,高32位数存放在r2和r3里面。

加法:

ADDS r0, r0, r1 //加S是因为要让这个操作影响标志位

ADC r2, r2, r3 //ADC是带进位的加法,如果上一条指令产生进位则一起加进来

减法:

SUBS r0, r0, r1 //加S是因为要让这个操作影响标志位

SBC r2, r2, r3 // SBC是带进位的减法指令

3. 请列举ARM处理器的模式和异常,并说明各个发生异常时ARM处理器所处的模式

异常:

Reset

Data Abort

FIQ

IRQ

Prefetch Abort

SWI

Undefined instruction

处理器模式

User : 非特权模式,大部分任务执行在这种模式

FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式

IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式

Supervisor :当复位或软中断指令执行时将会进入这种模式

Abort : 当存取异常时将会进入这种模式

Undef : 当执行未定义指令时会进入这种模式

System : 使用和User模式相同寄存器集的特权模式

4. FIQ的什么特点使得它处理的速度比IRQ快?

1)FIQ优先级比IRQ高,不会被中断

2)FIQ有自己的专属寄存器:r8~r12,不用对通用寄存器入栈保护,可以加快速度

3)FIQ位于异常向量表的末尾0x1c,故无需跳转,可以在这里直接放置异常处理函数

5. 什么指令可以放在中断向量表?

跳转指令,给PC赋值的指令

B,LDR,MOV

6. ARM处理器 中断向量表位于存储器的什么位置?

5 / 16

默认:0x0

也可以配置成:0Xffff0000

7. 下列 ARM 指令将做什么?

a) LDRH r0,[r1,#6]

b) LDR r0, =0x999

a:将r1寄存器的值加上6,然后把以这个值为地址的内存单元里的值取半字(低16位)赋

给r0

b:将立即数0x999赋给r0,注意这是一个伪指令

8. SWP 指令的优势是什么?用来实现什么功能?

功能:在寄存器和存储器之间,由一次存储器读和一次存储器写组成的原子操作。完成一个

字节或字的交换。可以用来实现信号量

9.专业名词解释

RISC (Reduce Instruct Set Computer);

IP (Intellectual Property);

ISR (Interrupt Servers Routine)

JTAG (Join Test Active Group)

IDE (Integrate Development Environment)

RTOS(实时操作系统);

CISC(复杂指令集);

Kernel(内核)

Scheduler(调度)

non-preemptive(非抢先式)

初始化代码直接对ARM微处理器内核及硬件控制器编程,多采用汇编语言编程,初始化代

码一般应包含如下典型任务:

(1)定义程序入口点

(2)设置异常向量;

(3)初始化存储器系统;

(4)初始化堆栈指针寄存器;

(5)初始化临界I/O设备;

(6)初始化C代码的运行环境;

(7)改变处理器的运行模式和状态;

(8)使能中断;

(9)进入C代码运行

6 / 16

选择题

1. ARM 属于 RISC 架构

2. ARM 指令集是 32位宽,Thumb 指令集是16位宽的。

3. ARM 指令集是4字节对齐,Thumb 指令集是2字节对齐的

4. 复位后,ARM处理器处于SVC模式,ARM状态

5. ARM处理器总共37个寄存器,System模式下使用17个寄存器,SVC模式下使用18个寄

存器。

6. ARM处理器中优先级别最高的异常为RESET,FIQ,IRQ异常可以用来相应中断

7. ARM数据处理指令中有效的立即数是( ACEGH )

[A] 0X00AB0000 [B] 0X0000FFFF [C ] 0XF000000F [D ] 0X08000012

[E] 0X00001F80 [F] 0XFFFFFFFF [G] 0 [H] 0XFF000000

8. ATPCS规定中,推荐子函数参数最大为4 个

9. ATPCS规定中,栈是满减

10. 在ARM汇编编程,寄存器有多个别名,通常PC是指R15,LR 是指R14,SP是指R13

11. CPSR寄存器中反映处理器状态的位是T位

12. 下面属于ARM 子程序调用指令的是BL

13. ARM7属于冯.诺依曼结构,ARM9属于哈佛结构。

14. ARM7是3级流水线,ARM9是5级流水线。

15. ARM中可以访问状态寄存器的指令是MRS,能够访问内存的指令是LDR

16. 下面哪种操作系统最方便移植到嵌入式设备中( D )

[A] DOS [B] UNIX [C ] WINDOWS XP [D ]LINUX

17. 以下哪项关于SRAM和DRAM的区别是不对( A )

(A) SRAM比DRAM慢 (B)SRAM比DRAM耗电多

(C) DRAM存储密度比SRAM高得多 (D)DRM需要周期性刷新

18. 下面哪种嵌入式操作系统很少用于手机终端设备上(CE)

(A) Symbian (B)WinCE (C) uc/os

19. S3C2410采用的是ARM920T核心

20. 下面哪点不是嵌入式操作系统的特点 ( C )

A. 内核精简 B. 专用性强 C. 功能强大 D. 高实时性

(D)linux (E) VxWorks

21. NAND FLASH和NOR FLASH的叙述正确的是( D )

A. NOR的读速度比NAND稍慢一些

C. NAND的擦除速度远比NOR的慢

22. MMU的作用有( AB )

[A] 内存保护 [B] 地址转换 [C ] 加快存取速度 [D ] 安全保密 [E] 内存分配

23. 以下属于DMA特点的有( BC )

7 / 16

B. NAND的写入速度比NOR慢很多

D.大多数写入操作需要先进行擦除操作

[A] 占用CPU [B] 占用总线 [C ] 不占用CPU [D ] 不占用总线

24. 以下哪种方式不属于文件系统的格式 ( B )

(A) FAT

1.在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),采用

何种方法?先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态

2.嵌入式系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上

取指令。例如:对于S3C2410来说,Boot Loader会映射到0x00000000地址处。

中的低8位称为控制位,下列不属于控制位的是【A】。

A、N B、I C、F D、T

中可以访问状态寄存器的指令是MRS,能够访问内存的指令是LDR。

5.下列条件码中表示不相等的是NE。

EQ 相等

NE 不相等

CS/HS 无符号数大于或等于

CC/LO 无符号数小于

MI 负数

PL 正数或零

VS 溢出

VC 没有溢出

HI 无符号数大于

LS 无符号数小于或等于

GE 有符号数大于或等于

LT 有符号数小于

GT 有符号数大于

LE 有符号数小于或等于

AL 任何 无条件执行 (指令默认条件)

NV 任何 从不执行(不要使用)

中的低8位称为控制位,其中I位等于1表示禁止IRQ中断。

微处理器支持7种工作模式。其中,除用户模式之外的其余6种称为特权模式,在这

6种之中,除系统模式之外的其余5种又称为异常模式。

8.下列ARM指令中,可用于满递增堆栈操作的是STMIB。

伪指令中,可用于大范围地址读取的是LDR。

10.同CISC相比,下面哪一项不属于RISC处理器的特征。【D】

A、采用固定长度的指令格式,指令规整、简单、基本寻址方式有2~3种。

B、减少指令数和寻址方式,使控制部件简化,加快执行速度。

C、数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令

的执行效率,同时简化处理器的设计。

D、RISC处理器都采用哈佛结构

11.以下叙述中,不符合RISC指令系统特点的是【B】。

A、 指令长度固定,指令种类少

B、 寻址方式种类丰富,指令功能尽量增强

C、 设置大量通用寄存器,访问存储器指令简单

8 / 16

(B)DOS (C) NTFS (D)Ext