嵌入式习题

1.ARM9处理器的五级流水线结构。ARM7的处理器三级流水线结构。

ARM7是冯·诺依曼结构,采用了典型的3级流水线。预取--译码--执行

ARM9是哈佛结构,采用5级流水线技术。 预取--译码--执行--访存--写入

2.ARM的寄存器的名字,如R13 R14 R15 SPSR CPSR中文名。

ARM处理器共有3732位寄存器,其中31个为通用寄存器,6个为状态寄存器。

1)通用寄存器 :通用寄存器包括R0~R15,可以分为三类:

未分组寄存器R0~R7

分组寄存器R8~R14

程序计数器PCR15

2)状态寄存器 :

当前程序状态寄存器(Current Program Status RegisterCPSR

程序状态寄存器( Saved Program Status RegisterSPSR

寄存器R13ARM指令中(堆栈指针SP )。R14也称(程序连接寄存器LR)在程序里的作用是(程序计数器PC的备份)。当发生中断或异常时,对应分组寄存器分别是(R14_svcR14_irqR14_fiqR14_abtR14_und用来保存R15的返回值)

3.嵌入式系统的定义,特点。

嵌入式系统:广义上:凡是不用于通用目的的可编程计算机设备,就可以算是嵌入式计算机系统。狭义上而言,嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。

专用性强 ,可靠性高, 实时性好, 可裁剪性好, 功耗低, 不可垄断性,产品相对稳定性

设计高效、综合性强、生命周期长、程序固化、需要独立的开发系统、成本低、体积小

4.CISC,RISC定义,区别。

CISC:复杂指令集(Complex Instruction Set Computer

具有大量的指令和寻址方式;

8/2原则:80%的程序只使用20%的指令;

大多数程序只使用少量的指令就能够运行。

RISC:精简指令集(Reduced Instruction Set Computer)

在通道中只包含最有用的指令;

确保数据通道快速执行每一条指令;

使CPU硬件结构设计变得更为简单。

1)、指令系统
CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。

2)、存储器操作

CISC机器的存储器操作指令多,操作直接。RISC对存储器操作有限制,使控制简单化。 

3)、程序

CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序社设计相对容易,效率较高。RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计。

4)、中断

CISC机器是在一条指令执行结束后响应中断。RISC机器在一条指令执行的适当地方可以响应中断。

5)、CPU

CISCCPU包含有丰富的电路单元,因而功能强、面积大、功耗大。RISCCPU包含有较少的单元电路,因而面积小、功耗低。

6)、设计周期

CISC微处理器结构复杂,设计周期长。RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术。

7)、用户使用

CISC微处理器结构复杂,功能强大,实现特殊功能容易。RISC微处理器结构简单,指令规整,性能容易把握,易学易用。

8)、应用范围
CISC机器则更适合于通用机。RISC 机器更适合于专用机。

5.大,小端存储模式的含义。

ARM体系结构可以用两种方法存储字数据

大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

小端格式:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

6.冯诺依曼和哈佛结构的定义,区别。

冯诺依曼结构的处理器使用同一个存储器,即程序和数据共用一个存储器,由同一个总线传输。冯诺依曼结构处理器具有以下几个特点:用一个存储器存储程序和数据;   用一个控制器控制执行的执行;   一个运算器,用于完成算数运算和逻辑运算;   有输入和输出设备,用于进行人机通信.  

 但是,指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高.

与冯诺依曼结构相比,哈佛结构处理器特点:

1),使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和 数据并存.

2),使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联.

改进型的哈佛结构特点:

 1),使用连个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以实现并行处理.

2),具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块,公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输

 3),两条总线又程序存储器和数据存储器分时公用.

7.列举进程的常用实时调度策略。

实时调度方法大致可以划分为以下三类:

离线(off-line)和在线(on-line)调度

抢占(preemptive)和非抢占(non-preemptive)调度

静态(static)和动态(dynamic)调度

a 离线调度和在线调度

根据获得调度信息的时机,调度算法分为离线调度和在线调度两类。

离线调度算法的调度信息在系统运行之前就确定了,如时间驱动的调度(clock-driven scheduling)。离线调度算法具有确定性,但缺乏灵活性,适用于那些特性能够预先确定,且不容易发生变化的应用。

在线调度算法的调度信息则在系统运行过程中动态获得,如优先级驱动的调度(如EDFRMS等)。在线调度算法在形成最佳调度决策上具有较大的灵活性。

b. 抢占式调度和非抢占式调度

在抢占式调度算法中,正在运行的任务可能被其他任务所打断。在非抢占式调度算法中,一旦任务开始运行,该任务只有在运行完成而主动放弃CPU资源,或是因为等待其它资源被阻塞的情况下才会停止运行。

典型的抢占式调度算法是基于优先级的可抢占调度算法。

在基于优先级的可抢占调度方式中,如果出现具有更高优先级的任务处于就绪状态时,当前任务将停止运行,把CPU的控制权交给具有更高优先级的任务,使更高优先级的任务得到执行。

因此,实时内核需要确保CPU总是被具有最高优先级的就绪任务所控制。

抢占式调度的任务运行情况

非抢占式调度算法常用于那些任务需要按照预先确定的顺序进行执行,且只有当任务主动放弃CPU资源后,其他任务才能得到执行的情况。

常用的非抢占式调度算法是时间片轮转调度算法。

时间片轮转调度算法

当有两个或多个就绪任务具有相同的优先级,且它们是就绪任务中优先级最高的任务时,任务调度程序按照这组任务就绪的先后次序依次调度各任务,每个任务分别运行一段时间(时间片),直到该组最后一个任务也得以运行一个时间片后,再重新循环调度各任务。

时间片轮转调度方式下的任务运行情况

c.   静态调度和动态调度

根据任务优先级的确定时机,调度算法分为静态调度和动态调度两类。在静态调度算法中,任务的优先级需要在系统运行前进行确定,且在运行过程中不会发生变化。

 最经典的静态调度算法是比率单调调度算法(rate-monotonic scheduling algorithmRMS)。

RMS是基于以下假设基础上进行分析的:

① 所有任务都是周期任务;

② 任务的相对截止时间等于任务的周期;

③ 任务在每个周期内的计算时间都相等,保持为一个常量;

④ 任务之间不进行通信,也不需要同步;

⑤ 任务可以在计算的任何位置被抢占,不存在临界区。

在动态调度算法中,任务的优先级可根据需要进行改变,也可能随着时间按照一定的策略自动发生变化。

动态调度算法主要有两种:

最近执行者优先调度(earliest deadline firstEDF

最短空闲时间优先调度算法(least-laxity-first scheduling

最近执行者优先调度(earliest deadline firstEDF

EDF是在嵌入式操作系统设计时采用的一个著名的调度策略。EDF是以动态方式来分配进程优先级的,即在进程的执行期间,根据它的启动时间来改变其优先级。它可以达到比RMS更高的CPU利用率。

EDF调度策略也很简单:它以进程期限的顺序来指定进程优先级。优先级最高的进程是距离进程期限最近的进程,优先级最低的进程是距离进程期限最远的进程。每个进程结束后,调度器都必须对所有进程的优先级重新计算。

最短空闲时间优先调度算法

任务的优先级根据任务的空闲时间进行动态分配。任务的空闲时间越短,任务的优先级越高;任务的空闲时间越长,任务的优先级越低。

任务的空闲时间可通过下式来表示:

任务的空闲时间 = 任务的绝对截止时间 — 当前时间 — 任务的剩余执行时间

8.RGB的配色原理。(例如6.5万色,16万色标准的实现,红绿蓝白黑,在各标准下的表示)。

TFT液晶屏的每个点都由红(R)绿(G)(B) 三部分组成,每部分的“强度”都可由一系列二进制数表示。

(R)绿(G)(B) 三种颜色以不同比例相加,可以产生不同的颜色。

1600万色标准:也称24比特模式,每个像素由24位编码的二进制表示,每8位表示三原色中的一种颜色的强度

2550255#FF00FF品红色(00255#0000FF蓝色(0255255#00FFFF 青色

02550#00FF00绿色(2552550#FFFF00黄色(25500#FF0000红色

1280128#800080紫色(00128#000080深蓝色

0128128#008080鸭绿色(01280#008000深绿色

1281280#808000橄榄绿(12800#800000栗色

000#000000黑色

6.5万色标准:也称16比特模式,每个像素由16位编码的二进制表示,每5位表示三原色中的一种颜色的强度。因为人眼对绿色敏感,所以绿色通常会用6位二进制表示。

9.ARM的常用寻址方式,能写出一条。

寄存器寻址:LDR R1,R2

寄存器间接寻址:LDR R1,[R2]

寄存器偏移寻址:LDR R1,[R2,-R4,LSL#3]

立即寻址:LDR,R3,#34

多寄存寻址:LDMIA R0,{R1,R3,R4,R5}

1) 立即寻址

也叫立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。

 例如以下指令:

   ADD  R0R0#1 R0R01

   ADD  R0R0#0x3f R0R00x3f

2) 寄存器寻址

寄存器寻址就是利用寄存器中的数值作为操作数,指令中地址码给出的是寄存器编号。

  例如以下指令:

 ADD  R0R1R2    R0R1R2

3) 寄存器间接寻址

寄存器间接寻址就是以寄存器中的值作为操作数的地址(这个寄存器相当于指针的作用,在基址加变址的寻址方式中,它作为基址寄存器来存放基址地址),而操作数本身存放在存储器中。

  例如以下指令:

    ADD  R0R1[R2] R0R1[R2]

    LDR  R0[R1] R0[R1]

    STR  R0[R1] [R1]R0

4) 基址变址寻址

基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址,用于访问基址附近的存储器单元。

基址变址寻址

变址寻址方式可分为 :

前变址模式  

   LDR  R0[R1#4]    R0[R14]  

自动变址模式  

   LDR  R0[R1#4]!;R0[R14]R1R14

后变址模式

   LDR  R0[R1]#4    R0[R1]R1R14

偏移地址

   LDR  R0[R1R2]   R0[R1R2]

   LDR  R0[R1R2LSL#2]   R0[R1R2 * 4]

5) 多寄存器寻址

多寄存器寻址又称为块拷贝寻址,是多寄存器传送指令Load/Store的寻址方式,Load/Store指令可把存储器中的一个数据块加载到多个寄存器中,也可把多个寄存器中的内容保存到存储器中。    

例如以下指令:

  LDMIA  R0{R1R2R3R4} R1[R0]       R2[R04]                          R3[R08]                 ; R4[R012]

6) 堆栈寻址

堆栈是一种数据结构,按先进后出(First In Last OutFILO)的方式工作,使用一个称作堆栈指针(SP)的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶 。

堆栈寻址

ARM微处理器支持这四种类型的堆栈工作方式:

满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成;

满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成;

空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成;

空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成;

堆栈寻址

   ARM指令中,堆栈寻址也是通过Load/Store指令来实现的,例如:

 STMFD  SP{R1-R7LR}   ;将R1~R7LR入栈

 LDMFD  SP{R1-R7LR}  ;数据出栈,放入

   R1~R7LR寄存器

Thumb指令中,堆栈寻址通过PUSH/POP指令来实现,例如:

    PUSH   {R1-R7LR}   ;将R1~R7LR入栈

    POP     {R1-R7PC}   ;数据出栈,放入R1~R7

                                        PC寄存器

7) 相对寻址

与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。

相对寻址

以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:

   BL  NEXT ;跳转到子程序NEXT处执行

    ……

   NEXT ;子程序入口地址

    ……

   MOV  PCLR    ;从子程序返回

你可能感兴趣的:(习题,嵌入式)