2013年上半年软考《嵌入式系统设计师》下午模拟试卷二
-
编译器对程序进行一定的优化是非常有必要的,高级语言的程序可以被转化为汇编语言的指令形式。通常优化的方法有(1)、循环优化、废代码的清除等。
对嵌入式系统进行性能测试可以衡量系统的实时性,分析嵌入式软件的优劣,同时分析程序的执行时间可以帮助分析CPU功耗等特性。最坏执行时间是指(2)。
-
在嵌入式系统中,由于软/硬件资源有限,且系统对实时性和可靠性要求较高,因此在进行嵌入式软件开发时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。请具体说明在编写代码时,需要做到哪几点编码准则?
-
在一台采用S3C44BOX微处理器(32位RISC结构)的嵌入式系统中,将图6-22所示的(a)、(b)程序段分别重复11 000次,(a)程序段需要2.13 ms;(b)程序段需要1.01 ms。
由此可见,在进行算术运算编码时遵守哪些编码准则?
-
假如加油机内油量足够,油价为5元/升,用户的账户金额为800元,那么在基本流 A4输入油量的过程中,请运用边界值分析方法为A4选取合适的输人数据(即油量,单位为升)。
-
图6-22所示的(a)、(b)程序段的功能是完全一样的,都是对一个结构体数组的各个元素进行初始化,但采用两种不同的方法来实现。请在200字以内归纳这两个算术运算程序段所采用的实现方法。
-
阅读以下关于嵌入式操作系统软件编码优化的技术说明,根据要求回答问题1至问题5。
【说明】
由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。图6-22给出了两个算术运算的程序段(a)、(b)。
在嵌入式系统设计过程中,给定一份软件设计规格说明书后,下一步的工作就是编写代码。通常编码工作包含哪些步骤?
-
对于基本流A来说,表6-6所示中哪些测试用例属于正面测试用例,哪些测试用例属于负面测试用例。请用表6-6中相应的“测试用例ID号”回答问题。
-
请在150字以内简要说明以表6—6所示的方法创建测试用例矩阵的优点。
-
场景中的每一个场景都需要确定测试用例,一般采用矩阵或决策表来确定和管理测试用例。表6-5是一种通用格式,表中各行代表各个测试用例,而各列代表测试用例的信息。本例中的测试用例包含测试用例ID号、场景(或说明/条件)、测试用例中涉及的所有数据元素(作为输人或已经存在于数据库中)以及预期结果等项目。
测试用例的设计步骤通常是:首先确定执行用例场景所需的数据元素(本例中包括账号、是否黑名单卡、输入油量、账面金额以及加油机油量),然后构建矩阵,最后确定包含执行场景所需的适当条件的测试用例。在表6-6的测试矩阵中,V表示有效数据元素,I表示无效数据元素,n/a表示不适用,例如CW01表示“成功加油”基本流。请按上述规定为其他应用场景设计测试用例矩阵。
-
编译程序的功能是什么?解释程序与编译程序的主要区别是什么?请在150字以内简要说明。
-
阅读以下利用场景法设计测试用例的技术说明,回答问题1至问题5。
[说明]
现在的软件几乎都是由事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。这种在软件设计方面的思想也可被引入到软件测试中,生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时测试用例也更容易得到理解和执行。
用例场景是通过描述流经用例的路径来确定的过程,这个流经过程要从用例开始到结束遍历其中所有基本流(基本事件)和备选流(分支事件)。以下表6-4是对某IC卡加油机应用系统基本流的描述,表6-5是对该IC卡加油机应用系统备选流的描述。
图6-9是对该IC卡加油机应用系统的基本流路径和备选流路径的描述,请用题干中描述的相应字每将图中(1)~(6)空缺处的内容填写完整。
-
阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。
【说明】
在某嵌入式安全监测系统中,对某任务的加工操作需通过数据采集(Collect_task)、计算(Calculate_task)这两个不同的程序段来完成,并且执行程序段Collect_task和Calculate _task的顺序及次数有如下约定:
Collect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calculate_task(2次)
表6-22 所示为x86系统部分指令及寄存器说明。
采用逻辑尺控制法实现以上要求的汇编程序如下:
【汇编程序代码】
N EQU (1)
RULE EQU (2)
CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,RULE
MOV CL,N
LOP: SAL AX,1
JC (3)
Collect: CALL Collect_task ;执行Collect_task程序段
JMP (4)
Calculate:CALL Calculate_task ;执行Calculate_task程序段
NEXT: (5)
JNZ (6)
MOV AH,4CH ;功能号送入AH寄存器
INT (7) ;结束程序运行,中断返回
(8)
END START
请根据试题的要求,将汇编程序代码中(1)~(8)空缺处的内容填写完整。
-
请根据试题的要求,将汇编程序代码中(1)~(8)空缺处的内容填写完整。
-
请用MOV语句实现汇编程序代码中“LEASI,BINTAB”语句的功能。
-
该汇编程序执行后,FLAG存储单元中的数值是什么?使用对分查表法查询位于这 256个字节数据表中的数据时,“CMPAL,[BX]”最多被执行几次?
-
阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。表6-3所示为 x86系统指令及寄存器说明表。
[说明]
在计算机控制中,有些数据补偿、计算及转换等参数的计算非常复杂,编程难,程序长且运算费时,但是用数表却比较容易实现。
设有256个字节的数据,已按从小到大的顺序存放在以BINTAB为首地址的数据区单元中,现要求查找其中值为126的数据,用对分查表法查询的汇编程序如下:
[汇编程序代码]
DATA SEGMENT
BINTAB DBl8,25,32,46,56,78,… ;第1~100个数据
DB 90,95,99,100,106,126,… ;第101~200个数据
DB 189,195,197,202,206,216,… ;第201~256个数据
COUNT EQU 256
FLAG DW ?
KEY EQU (1)
DATA ENDS
STAK SEGMENT
STPN DB 20 DUP(?)
STAK ENDS
CODE SEGMENT
ASSUME CS,CODE, DS,DATA, ES:DATA, SS:STAK
BINSEAT PROC FAR
START, MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, BINTAB
MOV CX, COUNT
MOV DX, 1
MOV AX, SI
ADD AX, CX
MOV DI, AX
MOV AL, KEY
LOP0, MOV BX, SI
ADD BX, DI
SHR BX, 1
CMP AL, [BX]
JZ FOUND
PUSHF
(2)
JZ NFOUND
POPF
JL LESS
MOV SI, BX
JMP NEXT
LESS, (3)
NEXT, (4)
JMP LOP0
NFOUND: MOV AX, DX ;未找到,标志全1送DX
FOUND: MOV AX, DX
MOV FLAG, AX
RET
BINSEAT ENDP
CODE ENDS
(5)
请根据试题的要求,将汇编程序代码中(1)~(5)空缺处的内容填写完整。
-
以下是利用MCS-51系列单片机汇编语言实现模拟I2C总线接收N个字节数据的程序段(RDNBYTE),请将汇编程序代码中(9)~(13)空缺处的内容填写完整。表6-21所示为MCS-51系列单片机部分汇编指令及寄存器说明。
程序中已定义了标号为START的启动位子程序、标号为STOP的停止位子程序、标号为MACK的发送应答位子程序、标号为MNACK的发送非应答位子程序、标号为 CACK的应答位检查子程序、标号为WRBYT的向VSDA线上发送1个数据字节的子程序、标号为RDBYT的从VSDA线上读取1个数据字节的子程序。调用RDNBYTE程序的归一化操作命令是 MOV SLA,#SLAR MOV NUMBYTE,#N LCALL RDNBYT 【汇编程序代码】 VSDA EQU P1.6 ;虚拟I2C总线数据线 VSCL EQU P1.5 ;虚拟I2C总线时钟线 SLA EQU 50H ;寻址字节存放单元 NUMBYTE EQU 51H ;传送字节数存放单元 MTD EQU 30H ;发送数据缓冲区 MRD EQU 40H ;接收数据缓冲区 SLAW0 EQU 0AOH ;写AT24C64(器件地址为0AOH) SLAR0 EQU 0A1H ;读24C64 SLAW1 EQU 40H ;写PCF8574(器件地址为040H) SLAR1 EQU 41H ;读PCF8574 ;模拟I2C总线接收N个字节数据 RDNBYTE:MOV R3,NUMBYTE LCALL START ;发送启动位 MOV A,SLA ;发送寻址字节(读) (9) (10) JB F0,RDNBYTE RDN: MOV R1,#MRD RDN1: (11) MOV @R1,A DJNZ R3,ACK ;N个字节读完否?未完转 (12) LCALL STOP ;发送停止位 RET ACK:(13) INC R1 SJMP RDN1 ;转读下一个字节数据 (9)~(13)空缺处供选择的答案 A.LCALL START B.LCALL MACK
C.LCALL CACK D.LCALL RDBYT
E.LCALL WRBYT F.LCALL MNACK G.LCALL STOP
-
图6-18给出了I2C总线开始条件与停止条件的时序图。通常I2C总线的开始条件、停止条件总是由(1)产生。在开始条件产生后,总线被认为处于(2),在完成数据传输产生停止条件后,总线被认为处于空闲状态。在时钟信号的高电子期间,SDA传输线上的电平必须稳定,只有在SCL传输线上的时钟信号为(3),数据线上的高低电子才允许发生变化,此时传送的数据才有效。每一个写到SDA传输线上的数据字节必须为8位长度,每一次传输的字节数没有限制,每传输一个字节必须跟一个(4),传输字节时最高位在前。
-
I2C总线的寻址过程是在(5)后发送第1个字节,该字节地址决定主控器选择哪一个从器件,还可以通过 (6) 方式同时寻址所有的I2C器件,但当某个I2C器件不需要进行数据传输时,将忽略该寻址方式而不作任何应答。如果某个I2C器件需要获取数据,则将发出(7)信号并作为一个(8)。
-
阅读以下关于嵌入式系统I2C总线接口电路的技术说明,根据要求回答问题。
【说明】
I2C总线是一种多主控器总线,对多个IC器件具有控制总线的能力。采用串行I2C总线技术设计接口电路,可节约嵌入式系统微处理器的I/O端口。图6-17给出了一种实现了键盘、时钟和实时参数存储三个功能模块的应用电路。图6-17中仅应用I2C总线构成单主控器的系统。此时时钟线SCL仅由微处理器驱动,因此可以用微处理器的一根I/O线作为SCL信号线,将其设置为输出方式,由软件控制产生串行时钟信号;用微处理器的另一根I/O线作为I2C总线的串行数据线,由软件控制在时钟的低电平期间读取或输出数据。
在图6-17中采用ATMEL公司的E2PROM AT24C64(IC8)实现了系统初始化数据、仪表系数、用户设置的参数或某些重要的实时数据参数的存储。DS1302时钟芯片可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5 V。8位并行I/O口扩展器件PCF8574具有口输出锁存功能,可直接驱动大电流LED管,同时还带有一个中断请求输出端INT(漏极开路方式)。在图6-17中,将PCF8574器件的8位准双向口外挂了一个4×4键盘矩阵。
电阻R36、R37在图6-17电路中有何作用。请在100字以内简要说明。