《嵌入式系统设计》复习题1、根据嵌入式系统的实时性强弱,嵌入式系统是如何分类的?结合具体的应用场合,对它们的特点分别加以描述。
实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。
如果未满足系统的时间约束,则认为系统失效。
非实时系统(如PDA),对计算或者外接变换响应的时间没有确定性的要求。
软实时系统(如消费类产品)软实时系统就是那些从统计的角度来说,一个任务能够得到有确保的处理时间,到达系统的事件也能够在截止期限到来之前得到处理,但违反截止期限并不会带来致命的错误。
例如在网络中仅仅是轻微地降低了系统的吞吐量。
硬实时系统(工业实时控制系统)硬实时系统指系统要有确保的最坏情况下的服务时间,即对于事件的响应时间的截止期限是无论如何都必须得到满足。
例如中高档汽车中使用的气囊,晚一秒钟展开气囊比没有气囊的情况更糟糕。
强实时系统, 其系统响应时间在毫秒或微秒级。
一般实时系统, 其系统响应时间在几秒的数量级上,其实时性的要求比强实时系统要差一些。
弱实时系统, 其系统响应时间约为数十秒或更长。
这种系统的响应时间可能随系统负载的轻重而变化。
2、结合嵌入式系统的组成结构,详细描述嵌入式系统开发的具体工作有哪些?在嵌入式硬件和嵌入式软件之间有一个接口层次,这个接口层为什么层?其具体的开发特点是什么?1)系统定义与需求分析; 2)系统设计方案的初步确立; 3)初步设计方案性价比评估与方案评审论证; 4)完善初步方案、初步方案实施; 5)软硬件集成测试; 6)系统功能性能测试及可靠性测试。
嵌入式系统的组成部分是嵌入式系统硬件平台、嵌入式操作系统(RTOS)和嵌入式系统应用。
操作系统与硬件的接口嵌入式系统硬件平台是以嵌入式处理器为核心,由存储器、I/O单元电路、通信模块、外部设备等必要的辅助接口组成的。
嵌入式软件:包括嵌入式操作系统及应用软件嵌入式操作系统是嵌入式系统中最基本的软件,它负责分配、回收,控制和协调全部软硬件资源的并发活动,并且提供应用程序的运行环境和接口,是应用程序运行的基础。
嵌入式应用软件嵌入式应用软件是服务于某种专用应用领域,基于某一特定的嵌入式硬件平台,用来达到用户预期任务的计算机软件。
由于引入了一个中间层,屏蔽了底层硬件的多样性,操作系统不再面对具体的硬件环境,而是面对由这个中间层次所代表的、逻辑上的硬件环境,因此,把中间层次叫做硬件抽象层(Hardware Abstraction Layer, HAL)。
HAL的引入大大推动了嵌入式实时系统的通用化,从而为嵌入式系统的广泛应用提供了可能。
板级支持包(Board Support Package,BSP)是现有的大多数商用嵌入式操作系统实现可移植性所采用的一种方案,是硬件抽象层的一种实现。
BSP隔离了所支持的嵌入式操作系统与底层硬件平台之间的相关性,是嵌入式操作系统能够通用与BPS所支持的硬件平台,从而实现嵌入式操作系统的可移植性和跨平台性,以及嵌入式操作系统的通用性、复用性。
3、嵌入式处理器的种类有哪些?如能给出具体的代表性芯片请给出芯片的型号及生产厂家。
嵌入式微控制器8051英特尔嵌入式微处理器ARM、MIPS、Aml86/88(Innovasic)、386EX(intel)、PowerPC(IBM)、68000系列(Motorola)DSP处理器TI公司TMS320C2000/5000/6000高度集成的片上系统4、 嵌入式交叉开发环境的组成是怎样的?嵌入式系统开发为什么需要这样的交叉开发环境而通用计算机的开发不需要?嵌入式系统通常是一个资源受限的系统,因此直 接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。
模式的特点:目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可 以运行的二进制代码格式,最后再下载到目标平台上的 特定位置上运行。
交叉开发环境一般由运行于宿主机上的交叉开发软件、宿主机到目标机的调试通道组成。
运行于宿主机上的交叉开发软件最少必须包含编译调试模块,其编译器为交叉编译器。
作为宿主机的一般为基于x86体系的桌上型计算机,而编译出的代码必须在目标机处理器体系结构上运行。
在宿主机上编译好目标代码后,通过宿主机到目标机的调试通道将代码下载到目标机,然后由运行于宿主机的调试软件控制代码在目标机上运行调试。
嵌入式系统应用软件的开发属于跨平台开发,因此需要一个交叉开发环境。
5、 11、ARM 有哪些工作状态?如何进行状态切换?T 变种的ARM 处理器有两种工作状态:ARM 状态: 32位,这种状态下执行字对准的ARM 指令;Thumb 状态:16位,这种状态下执行半字对准的Thumb 指令。
ARM 处理器在两种工作状态之间可以利用BX 指令方便地进行切换。
(1)进入Thumb 状态。
当操作数寄存器的状态位(位[0])为1时,执行BX 指令进入Thumb 状态。
(2)进入ARM 状态。
当操作数寄存器的状态位(位[0])为0时,执行BX 指令进入ARM 状态。
6、 ARM 有哪7种工作模式?各自的用途是什么?其中哪些是特权模式?哪些是异常模式?系统开机时应该为这些工作模式做哪些准备?ARM 微处理器支持7种运行模式,分别为:用户模式(usr ): ARM 处理器正常的程序执行状态。
系统模式(sys ):运行具有特权的操作系统任务。
快速中断模式(fiq ):用于高速数据传输或通道处理。
外部中断模式(irq ):用于通用的中断处理。
管理模式(svc ):操作系统使用的保护模式。
数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
未定义指令中止模式(und ):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
除用户模式外,其它模式均为特权模式。
ARM 内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。
此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
后五种为异常模式,它们除了可以通过程序切换进入外,也可以由特定的异常进入。
当特定的异常出现时,处理器进入相应的模式。
每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。
管理模式SVC ,复位后缺省模式;多种特权模式变化,主要完成各模式的堆栈设置,注意不要进入用户模式;用户程序的运行模式,一般为用户模式User 。
7、 一个程序执行时间的计算公式:其中:N inst :指令数CPI :每条指令的平均时钟周期数。
f clk :时钟频率。
clk inst prog f CPI N T ⨯=请结合该公式分析提高嵌入式系统工作效率的途径有哪些?优化代码,提高时钟频率,降低cpi,提高cpu指令执行效率8、“ARM处理器指令大部分可以作为条件指令来执行,大部分的指令也可以影响条件,但是都不是强制的”,这里所说“条件”具体指的是什么?“不是强制的”是什么意思?如何才能让一条指令影响条件标志?又如何才能使一条指令变成条件执行指令。
ARM体系结构包含一个当前程序状态寄存器(CPSR),CPSR中的ALU状态标志N、Z、C、V均为条件码标志位。
它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。
在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位,在数据处理指令中使用S后缀来实现该功能。
但有一些指令的执行总是会影响条件代码标志。
每条ARM指令的条件码域包含4位条件码,共16种。
几乎所有指令均根据CPSR中条件码的状态和指令条件码域的设置有条件地执行。
当指令执行条件满足时,指令被执行,否则被忽略。
在Thumb模式,大多数操作总是更新状态标志位,并且只能使用条件转移指令(B)来实现条件执行。
该指令(B)的后缀和在ARM模式下是一样的。
其他指令不能使用条件执行。
每条ARM指令的条件码域包含4位条件码,共16种。
几乎所有指令均根据CPSR中条件码的状态和指令条件码域的设置有条件地执行。
当指令执行条件满足时,指令被执行,否则被忽略。
9、什么是“有效立即数”,有效立即数在ARM指令中的表示方法是怎样的?为什么采用这样的表示方法?有效立即数由一个8位的常数循环移位偶数位得到,在12位的shifter_operand中,8位存数据,4位存移位的次数。
shifter_operand占的位数为12位。
要用一个12位的编码来表示任意的32位数是绝对不可能的,只有在表示数的数量上做限制,通过编码来实现用12位的编码来表示32位数,8位存数据,4位存移位的次数10、ARM处理器指令大多都是采用寄存器作为其操作数,以提高指令的执行效率,为此ARM处理器设置了大量的寄存器,可是数据的最初来源和最终归宿都是存储器,ARM是如何来解决这一问题的?11、ARM处理器的堆栈有哪些类型?在ARM状态和Thumb状态下分别如何实现堆栈操作。
ARM微处理器支持这四种类型的堆栈工作方式,即:满递增方式FA(Full Ascending):堆栈指针指向最后入栈的数据位置,且由低地址向高地址生成。
满递减方式FD(Full Decending):堆栈指针指向最后入栈的数据位置,且由高地址向低地址生成。
空递增方式EA(Empty Ascending):堆栈指针指向下一个入栈数据的空位置,且由低地址向高地址生成。
空递减方式ED(Empty Decending):堆栈指针指向下一个入栈数据的空位置,且由高地址向低地址生成。
LDM(或STM){条件} {类型} 基址寄存器{!},寄存器列表LDM(或STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。
其中,{类型}为以下几种情况:FD 满递减堆栈;ED 空递减堆栈;FA 满递增堆栈;EA 空递增堆栈;LDM和STM指令可以将任何范围为R0~R7的寄存器子集加载或存储,PUSH和POP指令使用堆栈指针R13作为基址实现满递减堆栈,除R0~R7外,PUSH指令还可以存储链接寄存器R14,并且POP指令可以加载程序指令PC。
PUSH和POP指令格式:PUSH {低寄存器的全部或其子集}POP {低寄存器的全部或其子集}这两条指令是栈操作指令,用于在寄存器和堆栈之间进行成组的数据传送,PUSH指令用于把寄存器列表中的寄存器数据推进堆栈;POP指令用于把栈区的数据弹出列表的寄存器中。
12、在ARM“伪指令”和“汇编指令”中都有LDR指令,如何区分指令中的LDR为“伪指令”还是“汇编指令”?请举例说明。
单一数据加载/存储指令LDR格式为:LDR{条件} 目的寄存器,<存储器地址>LDR指令是字加载指令,用于从存储器中将一个32位的字数据传送到目的寄存器中。