嵌入式基础简答题

更新时间:2023-11-25 07:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、 基础知识

1、 什么是代码的临界区?

答:代码的监界区是指处理时不可分割的代码,运行这些代码不允许被打断。一旦这部分代码开始执行,则不允许任何中断打入。

2、 什么是嵌入式系统?

答:嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积及功耗严格要求的专用计算机系统,具有完成复杂功能的硬件和软件且紧密耦合在一起的计算机系统。

3、 什么是嵌入式操作系统?为何要使用嵌入式操作系统?

答:运用在嵌入式系统上的实时操作系统,具有事件驱动和任务调度功能,且在有限时隙内能完成事件的响应和进程的切换,能可靠、实时、灵活地管理嵌入式系统上的各种资源和任务。使用嵌入式操作系统,能方便实时应用软件的开发和有机地整合,能有效地管理和协调各项工作,因此是开发和运行非常重要的环境。

4、 ARM状态与Thumb状态的互换以什么条件来判断?似举出状态从ARM到Thumb或从Thumb到ARM切换的例子。

答:其互换条件是执行BX 指令时,判断的最低一位b0是否为0或为1来确定的,当b0为0时,则执行的程序是ARM状态的32位指令程序,当b0为1时,则执行的程序是Thumb状态的16位指令程序。如下例:

;从ARM状态转变为Thumb状态 LDR R0,Lable+1 BX R0

;从Thumb状态转变为ARM状态 LDR R0, Lable BX R0

5、 ARM体系结构支持多少种处理器模式,分别是什么?

答:ARM体系结构支持7种处理器模式,分别是用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。

6、子程序利用R14(LR),获得返回到主程序的下条指令,通常有直接输入法和堆栈方法,试填写下面两种方法的代码: MOV PC, LR 或

STMFD SP!,{, LR } LDMFD SP!, {, PC }

7、 什么是小端存储?什么是大端存储? 答:小端存储就是其存储格式为保存的字最低地址的字节看作是最低位字节,最高地址字节被看作是最高位字节。因此,存储器系统字节0连接到数据线7-0。 大端存储就是其存储格式为将最高位字节保存在最低地址字节,最低位字节保存在最高地址字节。因此存储器系统字节0连接到数据线31-24。

8、 ARM7TDMI中T、D、M、I的含义是什么?

答:T表示具有高密度16位的Thumb指令机扩展功能;D表示具有支持片上调试功能;M表示具有64位乘法指令;I表示增加了EmbededICE观察点硬件。

9、 ARM7TDMI采用几级流水线?使用何种存储器编址方式?

答:ARM7TDMI采用三级流水段,分别为取指段、译码段和执行段。使用字节编址方式。

10、 ARM处理器模式和ARM处理器状态有何区别?

答:ARM处理器模式是指用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。每种模式都表明一种程序使用内部寄存器和一些片内外的硬件设备权利。而ARM处理器状态是指Thumb状态和ARM状态,即程序指令的执行译码按16位Thumb指令集还是按32位ARM指令集译码执行。

11、 PC和LR分别使用哪个寄存器? 答:PC使用R15;LR使用R14。

12、 R13寄存器的通用功能是什么?

答:R13寄存器在ARM状态时,可用作通用寄存器功能,但通常为堆栈指针SP,但在Thumb状态时,其压栈PUSH和弹栈POP指令都要用到R13(SP)。

13、 CPSR寄存器中哪些位用来定义处理器状态? 答:在CPSR寄存器中b5位T定义处理器状态,T=0为ARM状态,T=1为Thumb状态。

14、 ARM和Thumb指令的边界对齐有何不同?

答:ARM指令长度为32位,其边界对齐存取地址位都是按b[1:0]=00方式进行,而Thumb指令长度为16位,其边界对齐存取地址位都是按b[0]=0方式进行。

15、 描述一下如何禁止IRQ和FIQ的中断?

答:对CPSR中的b7(I位)和b6(F位)标志位置位时,可分别来禁止IRQ和FIQ中断。

16、 请描述进入内核时异常操作步骤? 答:

1) 在LR中保存下一条指令的地址; 2) 将CPSR复制到适当的SPSR;

3) 根据异常将CPSR模式强制设为某一值; 4) 强制PC从相关的异常处取指。

5) 异常结束时,异常处理程序必须将LR中的值减去偏移量后移入PC。 6) 将SPSR的值复制回CPSR。

7) 清零在入口置位的中断禁止标志。

17、 简单描述一下ARM7的三级流水线,并说明其对程序设计的影响。

答:ARM7的三级流水分为取指段、分析段和执行段。对程序设计的影响:提高指令执行的速度,并使处理和存储系统连续操作。

18、 ARM7TDMI(-S)有几种寻址方式?LDR R1,[R0,#0x08]属于哪种寻址方式?

答:有8种,分别是:寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、(多寄存器寻址、块拷贝寻址)、堆栈寻址、相对寻址。其中:LDR R1,[R0,#0x08]属于基址寻址。

19、 ARM指令的条件码有多少个?默认条件码是什么?

答:ARM指令的条件码有16个,默认条件码是:AL 编码为1110 即无条件执行。

20、 ARM指令中第二个操作数有哪几种形式?列举5个8位图立即数。 答:ARM指令中第2个操作数有3种形式:

1)#immed_8r 常数表达式; 2)Rm 寄存器方式;

3)Rm,shift 寄存器移位方式。

例如:0x3FC、0、0xF0000000、200、0xF0000001。

21、 将ARM指令中,使用第2个操作数时,第2操作数的形式可为常数表达式#immed_8r,这种常数的合理表达方式是什么?

答:这种常数须对应8位位图数据的循环移位偶数位得到的任何32位数据。

22、 将ARM指令中,使用第2个操作数时,第2操作数的形式可为常数表达式#immed_8r,请说明下面常数哪些合理,哪些非法?

0x3FC,0x1F,0x1FE,0,0xF0000000,511,0xFFFF,0x1010,0xF0000010,200,0xF0000001,0x12800000,0x4000003B,0x0016C000

答:合法常量:0x3FC/0/0xF0000000/200/0xF0000001/0x1F,0x12800000,0x4000003B,0x0016C000;

非法常量:0x1FE/511/0xFFFF/0x1010/0xF0000010。

23、 将比较两个值大小,并进行相应加1处理,C代码为: if(a>b) a++;

else b++;写出对应的ARM指令程序(其中设R0为a,R1

为b)?

答:CMP R0,R1

ADDHI R0,R0,#1 ;若R0>R1,则R0=R0+1 ADDLS R1,R1,#1 ;若R0?R1,则R1=R1+1

24、 将C代码:if((a!=10)&&(b!=20)) a=a+b 转化为ARM指令程序? 答: CMP R0,#10 ;比较R0是否为10

CMPNE R1,#20 ;若R0不为10,则比较R1是否为20 CMPNE R0,R0,R1 ;若R0不为10且R1不为20,指令执行,R0=R0+R1

25、 LDR/STR指令的偏移形式有哪4种?LDRB和LDRSB有何区别? 答:LDR/STR指令的偏移形式有:1)零偏移;2)前索引偏移;3)程序相对偏移;4)后索引偏移。LDRB仅为无符号字节数据装载,其装载后的高24位为0,而LDRSB为有符号字节数据装载,高24位为符号位的扩展。

26、 请指出MOV指令与LDR加载指令的区别及用途。 答:MOV指令是数据处理过程中的操作,可以传递立即数和寄存器到另一个寄存器的操作,而LDR加载指令用于将存储器单元数据装载到寄存器的操作。

27、 CMP指令的操作是什么?写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。 答:CMP指令操作是比较操作;判断R1的值是否大于0x30,是则将R1减去0x30程序如下:

CMP R1,#0x30 SUBGT R1,R1,#0x30 Or

CMP R1,#0x30 SUBHI R1,R1,#0x30

28、 调用子程序是用B还是用BL指令?请写出返回子程序的指令? 答:调用子程序是用BL指令。 返回子程序的指令:BL lable MOV PC,LR

29、 计算一个数n的阶乘,即n!=n*(n-1)*(n-2)…(1)。 FACTORIAL MOV R6,#10 MOV R4,R6

LOOP SUBS R6,R6,#1 MULNE R4,R4,R6 BNE LOOP

30、 LDR伪指令用途?其指令格式与LDR装载指令的差别?

答:LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器,映射真正指令类型由编译程序决定;LDR伪指令指令格式为LDR Rn,=expr,LDR装载指令为LDR Rn,[地址值]。

31、 ARM状态与Thumb状态的切换指令是什么?请举例说明。 答:ARM状态与Thumb状态的切换指令是BX Rm。

34、Thumb状态与ARM状态的寄存器有区别吗?Thumb指令对哪些寄存器访问受到一定限制?

答:Thumb状态与ARM状态的寄存器本身并无区别,都是32位寄存器。但Thumb指令仅对R8-R15受到一定限。

32、 Thumb指令集的堆栈入栈、出栈指令是哪两条?

答:压栈指令:PUSH {reglist[,LR]} ;弹栈指令:POP {reglist[,PC]}

33、 Thumb指令集的BL指令转移范围为何能达到?4MB?其指令编码是怎样的?

答:Thumb指令集的BL采用2条这样的指令组合成22位半字偏移(符号扩展为32位),使指令转移范围为?4MB。其指令编码为:1111+H+offset11共16位。其中H为1位,offset11为11位。

34、 在中断向量中转移指令为什么没有用B指令?而是用什么指令实现跳转的?

答:在中断向量中转移指令没有用B指令是由于B指令转移范围仅在?32MB内,因此满足不了中断向量的全地址范围内的转移。实际中断向量中转移指令是用LDR PC ,addr,和文字池(DCD伪指令)来实现的,它可以实现4GB范围内跳转。

35、 LPC2114可使用的外部晶振频率范围是多少(使用/不使用PLL功能时)?

答:使用PLL功能时,外部晶振频率范围为10-25MHZ;不使用PLL功能时为1-30MHZ。 在复位时。

36、 描述一下LPC2210的P0.14、P1.20、P1.26、BOOT1和BOOT0引脚在芯片复位时分别有什么作用?并简单说明LPC2000系列ARM7微控制器的复位处理流程。 答:LPC2210的P0.14决定外部复位后是否进入ISP状态,如为低电平则进入ISP状态。

P1.20决定复位后是否使用P1.16-P1.25作为跟踪端口进行跟踪同步。 P1.26决定复位后是否使用P1.31-P1.26作为调试端口。

BOOT1和BOOT0引脚在芯片复位时决定复位后存储器的来源以及存储器的宽度。

LPC2000系列ARM7微控制器的复位处理流程:

流程略(见书P119、120)。

37、 LPC2000系列ARM7微控制器对向量表有何要求(向量表中的保留字)? 答:LPC2000系列ARM7微控制器要求:在向量表中所有32个32位指令二进制编码的向量按有符合数据累加之和为0,这时向量表才有效,且芯片复位后,能脱机独立运行。因此向量表中的保留字是配置数据累加和为0而留着的。

38、 LPC2000系列ARM7微控制器片内Flash是多少位宽度的接口?它是通过哪个功能模块来提高Flash的访问速度?

答:LPC2000系列ARM7微控制器片内Flash是128位宽度的接口,是通过数据

本文来源:https://www.bwwdw.com/article/plst.html

Top