问答题[说明]
某公司是一个有资质的专业嵌入式软件测评中心,承担了一项嵌入式软件的测试任务。按用户要求,需要对被测软件进行单元测试、部件(集成)测试和系统测试。
问答题【说明】V模型是在快速应用开发模型基础上演变而来的,由于将开发过程构造成一个V字型而得名,V模型强调软件开发的协作和速度,将软件实现和验证有机结合起来,在保证较高的软件质量情况下缩短开发周期,下图为V模型的完整诠释。
问答题阅读以下关于LED接口电路的叙述,回答问题1至问题2,将答案填入对应栏内。[说明]某计算机系统采用内存和接口统一编址方式。内存可寻址空间为1MB,内存地址用A0~A19传送,读写信号分别为/MEMR和/MEMW;接口可寻址空间为64KB,接口地址用A0~A15传送,读写信号分别为/IOR和/IOW。在该计算机系统上设计的LED接口电路如下图所示,分配的接口地址为0000H。图中的74374为锁存器,其真值表见下表。Z表示高阻。
问答题[问题3]
代码一采用了一种繁忙等待(busywaiting)的策略,这种策略的缺点是什么?请用100字以内的文字简要说明。
问答题阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。
[说明]
有两个任务(编号分别为0和1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。
[代码一]
1: int flag[2]; /* flag 数组,初始化为FALSE */
2: Enter_Critical_Section(int my_task_id, int other_task_id)
3: {
4: while (flag[other_task_id] == TRUE); /* 空循环语句 */
5: flag[my_task_id] = TRUE;
6: }
7: Exit_Critical_Section(int my_task_id, int other_task_id)
8: {
9: flag[my_task_id] = FALSE;
10: }
当一个任务要访问临界资源时,就可以调用代码一给出的这两个函数。代码二给出了任务0的一个例子。
[代码二]
Enter_Critical_Section(0,1);
…使用这个资源…
Exit_Critical_Section(0,1);
…做其他事情…
问答题【说明】
下图为采用查询方式工作的输入接口,地址译码器中A15~A1直接接到或门的输入端。
问答题阅读下列说明和表,回答下列问题。
[说明]
看门狗(Watchdog)技术是嵌入式系统设计中保证系统可靠的常用技术。嵌入式控制系统运行时由于受到外部干扰或者内部系统错误,程序有时会出现“跑飞”现象,导致整个系统瘫痪。为了防止这一现象的发生,对系统可靠性要求较高的场合往往要加入看门狗电路。当系统“跑飞”时,看门狗电路能自动恢复系统的运行。
问答题[问题1]
什么是临界资源(critical resource)?请用100字以内文字简要说明。
问答题[问题4]
如果把Enter_Critical_Section()函数中的两条语句互换一下位置,会出现什么情况?
问答题[说明]
设有数组X和Y。X数组中有X1,X2、…、X10十个数,Y中有Y1、Y2、…、 Y10十个数。编制程序计算:
Z1=X1+Y1 Z2=X2+Y2 Z3=X3-Y3 Z4=X4-Y4
Z5=X5-Y5 Z6=X6+Y6 Z7=X7-Y7 Z8=X8-Y8
Z9=X9+Y9 Z10=X10+Y10
设置一个10位的标志尺:LOGIC_RULE,若它的每一位决定了当前按顺序该做加法(该位为0)或减法(该位为1)操作,则由上列等式可知LOGIC RULE中的低10位应是
________
。
[汇编程序代码]
datarea segment ;define data segment
x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10
y dw y1,y2,y3,y4,y5,y6,y7,y8,y8,y10
z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10
logic_ruledw
________
;LOGIC_RULE initialize
datarea ends
program segment ;define code segment
main proc far
assume cs:program, ds:datarea
start: ;starting execution address
________
;save old data segment
sub ax, ax ;put zero in AX
push ax ;save it on stack
;set DS register to current data segment
mov ax,datarea
mov ds,ax
;MAIN PART OF PROGRAM GOES HERE
mov bx,0
mov ex,10
mov dx,logic_rule
next:
mov ax,x[bx]
shr dx,1
jc subtract
________
jmp short result
subtract:
sub ax, y [bx]
result:
________
;result=>Zn
add bx,2
loop next
ret ;return to DOS
main endp
;end of main part of program
program ends
;end of code segment
end start ;end of assembly
附:指令及寄存器说明。
MOV 传送字或字节
PUSH 把字压入堆栈
SHR 逻辑右移
JC 有进位时转移
JMP 无条件转移指令
SUB 减法
ADD 加法
LOOP CX不为零时循环
JNE/JNZ 不等于时转移
CMP 比较
段寄存器2个:
CS: 代码段寄存器
DS: 数据段寄存器
数据寄存器4个:
AX: 累加器
BX: 基址寄存器
CX: 计数寄存器
DX: 数据寄存器
问答题下面是关于嵌入式软件测试方面的叙述,回答问题1和问题2,将解答填入答题纸的对应栏内。
[说明]
甲公司是一个专业的软件测评中心,承担了某机载软件测试任务。王工是该测试任务的负责人。用户指出,被测件是控制飞机飞行的关键软件,其安全性要求很高,必须按有关规定开展测评工作。
问答题[问题2]
代码一所示的方法能够实现共享资源的互斥访问吗?请用300字以内文字举例说明。
问答题阅读以下说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】王工在采用某16位嵌入式CPU进行AiD采集硬件电路设计时,利用8255控制器C口中的PC0输出控制信号,利用PC7读入AD574的状态信号,利用A口和B口读入AD574转换好的12位数据。图2-1为该A/D采集硬件系统设计的部分连接示意图。其中,AD574各个管脚功能定义如表2-1所述。AD574的控制功能状态表如表2-2所示。8255控制器各个管脚及地址控制描述如表2-3所示。
问答题阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某嵌入式控制软件中,通过采集传感器数值来计算输出控制率,同时为提高数据采集的可靠性,对采集数值使用三余度采集方法进行三个通道的数据采集。
1.三余度数据采集及处理要求:
(1)如果某通道采集值在[-3.0,3.0]v正常范围内,且与任一相邻通道间差值不大于0.5v,则该通道数据满足要求;
(2)如果某通道采集值超过[-3.0,3.0]v正常范围,或者此通道采集值与其他两个通道的差值均大于0.5v,则该通道数据不满足要求;
(3)如果三通道值均满足要求,则取三通道中差值较小的两通道数据平均值;
(4)如果三通道值均满足要求,且相邻两数值的差值相等,则取三个采集值的中间值;
(5)如果仅有一个通道数据不满足采集要求,取满足要求的两个通道数据平均值;
(6)如果大于一个通道数据不满足采集要求,取安全值0v。
2.对计算输出控制率的具体处理算法如下:
(1)如果依据采集数据计算的控制率C
1
与目前实际控制率C
0
差值不大于0.01,则使用本周期计算控制率C
1
进行输出控制,否则使用目前实际控制率C
0
输出控制,连续超过范围计数加1,不上报传感器故障;
(2)如果连续3个周期计算的控制率C
1
与目前实际控制率C
0
差值大于0.01,则上报传感器三级故障,连续超过范围计数清零,使用目前实际控制率C
0
输出控制;如果已经连续3个周期控制率差值超过范围,并已上报三级故障,但第4个周期计算的控制率C
1
与目前实际控制率C
0
差值不大于0.01,则清除三级故障上报,并使用C
1
进行输出控制;
(3)如果累计大于等于10个周期计算的控制率C
1
与目前实际控制率C
0
差值大于0.01,则上报传感器二级故障,使用目前实际控制率C
0
输出控制;
(4)如果累计大于等于100个周期计算的控制率C
1
与目前实际控制率C
0
差值大于0.01,则上报传感器一级故障,清除二级故障,并切断输出控制(输出安全值0);
(5)如果低级故障和高级故障同时发生,则按高级故障上报和处理。
问答题阅读以下关于嵌入式软件测试用例设计的叙述。[说明]某程序段的流程如图所示,x、y是两个变量,K、J表示一段程序执行体,如下表所示为本题可供选择的四组测试用例组。表测试用例组测试用例xy测试用例xy测试用例组I03测试用例组III-12测试用例组II12测试用例组IV31
问答题【问题1】
请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖的含义。
问答题【说明】
在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。
【C语言代码】
/*变量与类型说明*/
#include "stdio.h"
#include "stdlib.h"
extern int sys_status;
extern int Dev_drv1(int arg1, int arg2);
extern int Dev_drv2(int arg1, int arg2);
extern int Dev_drv3(int arg1, int arg2);
extern int Dev_drv4(int arg1, iht arg2);
#define NOERROR 0
type struct {
int _fd;
} TYP_DEV_TAB;
TYP DEV_TAB dev_tab[50]= {101,99, 80, 120,};
/*程序代码*/
void manage_device(int devid, int arg1, int arg2)
{ int place ;
int ret;
for(place=0 ; place<50 ; place++)
if dev_tab [place]. fd == devid) break;
if(place>=50)
printf(" NO DEVICE fd = %d/n ",devid);
switch(dev_tab [place]._fd) {
case 80:
ret = Dev_drv3(int arg1,int arg2);
break;
case 99:
ret = Dev_drv2(int arg1,int arg2);
break;
case 101:
ret = Dev_drv1(int arg1,int arg2);
break;
case 120:
ret = Dev_drv4(int arg1,int arg2);
break;
}
if (ret!=NOERROR)
printf(" DEVICE %d error!/n ", devid);
}
int Dev_drv1(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}
int Dev_drv2(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}
int Dev_drv3(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}
int Dev_drv4(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
问答题阅读下列说明,回答问题1至问题3,将答案填入答题纸的对应栏内。【说明】某公司承接了一个数据处理模块的项目,由沈工负责模块的方案设计,沈工的设计方案如图4-1所示。该数据处理模块以PowerPC处理器为核心,设计了存储器、以太网、温度传感器、调试接口等功能电路。处理器外接FLASH存储器用于存储上电初始化程序和应用程序。处理器通过12C接口连接测温电路,监控模块的工作温度。以太网、串口、调试离散量等用于软件调试和状态显示。测温电路选用ADT7461AR芯片,用于测试模块温度。ADT7461AR是一个双通道数字温度计,工作电压3v至5v,具有低/超温报警功能,采用IzC接口实现主机对远程/本地温度数据的采集,采集数据存储在高/低两个数据寄存器中,每个寄存器为16位,高寄存器表示整数值,低寄存器表示小数值。存储模块采用某公司的FLASH存储芯片。支持编程、擦除、复位等操作命令。该FLASH芯片的常用命令序列如表4-1所示。表中的地址和数据皆为16进制数。
阅读下列说明和图,回答下列问题。[说明]在某嵌入式系统设计中,使用8片RAM进行64KRAM的外部存储器扩展,如图所示。该CPU有16根地址线,8根数据线,在设计中,利用CPU的作为访问控制信号,该访问控制信号低电平有效。另外,R/W作为读写命令信号(高电平为读,低电平为写)。8片8Kx8位的RAM芯片与CPU相连,RAM芯片的片选内部为上拉电阻到电源,各个RAM芯片的片选信号和74138译码器的输出相连,译码器的地址选择端连接到CPU的A13,A14,A15地址线上。图嵌入式系统设计示意图
阅读下列说明和图,回答下问题。
[说明]
操作系统主要功能之一是处理机管理,处理机管理主要是实现处理机扩充,以支持多个进程的并行运行,提高计算机的计算效率。
进程是动态的概念,通常称进程为程序的一次执行。进程的主体部分是程序,包括程序和数据。进程在执行期间具备确定的状态。
线程是进程中某个单独执行的控制流,也称为轻量进程。