问答题阅读以下关于某嵌入式系统设计方案的叙述。[说明]某公司承接了开发周期为6个月的某机载嵌入式系统软件的研制任务。该机载嵌入式系统硬件由数据处理模块、大容量模块、信号处理模块、FC网络交换模块和电源模块组成,如图1-1所示。数据处理模块和大容量模块的处理器为PowerPC7447,数据处理模块主要对机载数据进行处理,完成数据融合;大容量模块主要存储系统数据,同时也有数据处理的能力;信号处理模块的处理器为专用的数字信号处理器DSP,完成雷达数据处理,并将处理后的数据发送给数据处理模块;FC网络交换模块为已开发的模块,本次不需要开发软件,主要负责系统的数据交换;电源模块主要负责给其他模块供电,电源模块上没有软件。PowerPC7447和DSP是32位处理器,内存按字节编址。PowerPC7447以大端方式(big_endian)存储数据,DSP以小端方式(littleendian)存储数据。
问答题[问题3](6分)
请简述什么是临界资源?什么是临界区?
请完成[程序3]和[程序4]的形式化定义,将应填入____(n)____处的内容写在答题纸的对应栏中。
问答题[问题5]
malloc函数申请的空间位于哪一个段?
问答题[问题3]
画出UML模型中常用关系符的图示:依赖、泛化、关联、聚合和实现。
问答题[问题4]
如果把Enter_Critical_Section()函数中的两条语句互换一下位置,会出现什么情况?
问答题阅读以下关于嵌入式操作系统软件编码优化的技术说明,根据要求回答问题1至问题5。【说明】由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。图6-22给出了两个算术运算的程序段(a)、(b)。
问答题[问题3](4分)
李工编写某嵌入式软件时,遇到了一些问题,请帮助李工解答下面2个问题,并将答案填写在答题纸中对应的栏目。
(1)李工在编译时,程序没有通过编译,经检查程序后将文件头的 # include 改为 # include"filename.h"后编译通过,请问 # include 和 # include"filename.h"的区别是什么?
(2)李工在编写一段C++程序时,需要调用一段已编译的C语言函数,为什么要加extem"C"?
问答题试题三(共15分)下面是关于嵌入式软件测试方面的叙述,回答问题1和问题2,将解答填入答题纸的对应栏内。【说明】甲公司是一个专业的软件测评中心,承担了某机载软件测试任务。王工是该测试任务的负责人。用户指出,被测件是控制飞机飞行的关键软件,其安全性要求很高,必须按有关规定开展测评工作。
问答题试题三(共15分)阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。[说明]操作系统主要功能之一是处理机管理,处理机管理主要是实现处理机扩充,以支持多个进程的并行运行,提高计算机的计算效率。进程是动态的概念,通常称进程为程序的一次执行。进程的主体部分是程序,包括程序和数据。进程在执行期间具备确定的状态。线程是进程中某个单独执行的控制流,也称为轻量进程。
问答题【问题2】 王工在编写某嵌入式程序时,用到对文件系统的操作,由于要保证系统的安全性,要求必须使用文件检测函数feof()和ferron(),完成【程序1】中的空(1)~(3),将答案写到答题纸相应的位置。
问答题[问题1]
代码段、数据段和bss段的大小是在什么时候确定的?
问答题请根据[说明]中的C语言代码,计算满足MC/DC覆盖要求的用例数量及条件取值范围。
问答题阅读以下有关软件工程开发的叙述,回答问题1至问题3,将答案填入对应栏内。【说明】V模型是在快速应用开发模型基础上演变而来的,由于将开发过程构造成一个V字型而得名,V模型强调软件开发的协作和速度,将软件实现和验证有机结合起来,在保证较高的软件质量情况下缩短开发周期,下图为V模型的完整诠释。
问答题 阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。
【说明】
在嵌入式操作系统设备管理的实现上,常使用到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)
{ /*局部变量声明,略*/
/*驱动程序代码,略*/
问答题[问题4]
在图16-4所示的程序中,变量gvCh、gvShort、gvInt、gvLong、array和p分别存放在哪一个段?
问答题 阅读以下有关80X86汇编语言的叙述,回答问题1和问题2,将解答填入对应栏内。
【说明】 本题由两部分组成,第一部分为计算AX寄存器的值,第二部分为判错题。
问答题阅读以下关于嵌入式系统I2C总线接口电路的技术说明,根据要求回答问题1至问题4。【说明】I2C总线是一种多主控器总线,对多个IC器件具有控制总线的能力。采用串行I2C总线技术设计接口电路,可节约嵌入式系统微处理器的I/O端口。图6-17给出了一种实现了键盘、时钟和实时参数存储三个功能模块的应用电路。图6-17中仅应用I2C总线构成单主控器的系统。此时时钟线SCL仅由微处理器驱动,因此可以用微处理器的一根I/O线作为SCL信号线,将其设置为输出方式,由软件控制产生串行时钟信号;用微处理器的另一根I/O线作为I2C总线的串行数据线,由软件控制在时钟的低电平期间读取或输出数据。在图6-17中采用ATMEL公司的E2PROMAT24C64(IC8)实现了系统初始化数据、仪表系数、用户设置的参数或某些重要的实时数据参数的存储。DS1302时钟芯片可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。8位并行I/O口扩展器件PCF8574具有口输出锁存功能,可直接驱动大电流LED管,同时还带有一个中断请求输出端INT(漏极开路方式)。在图6-17中,将PCF8574器件的8位准双向口外挂了一个4×4键盘矩阵。
问答题[问题3]
代码一采用了一种繁忙等待(busywaiting)的策略,这种策略的缺点是什么?请用100字以内的文字简要说明。
问答题阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。表6-3所示为 x86系统指令及寄存器说明表。 [说明] 在计算机控制中,有些数据补偿、计算及转换等参数的计算非常复杂,编程难,程序长且运算费时,但是用数表却比较容易实现。 设有256个字节的数据,已按从小到大的顺序存放在以BINTAB为首地址的数据区单元中,现要求查找其中值为126的数据,用对分查表法查询的汇编程序如下: [汇编程序代码]DATA SEGMENTBINTAB 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 256FLAG DW ?KEY EQU (1) DATA ENDSSTAK SEGMENTSTPN DB 20 DUP(?)STAK ENDSCODE SEGMENT ASSUME CS,CODE, DS,DATA, ES:DATA, SS:STAKBINSEAT PROC FARSTART, 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, KEYLOP0, 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 NEXTLESS, (3) NEXT, (4) JMP LOP0NFOUND: MOV AX, DX ;未找到,标志全1送DXFOUND: MOV AX, DX MOV FLAG, AX RETBINSEAT ENDPCODE ENDS (5)
问答题试题四(共15分)阅读以下关于汇编语言方面的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。【说明】 汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替机器码,用地址符号或标号代替地址码,直接同计算机的底层软件甚至硬件进行交互,具有代码优化、运行效率高等特点。本题针对的是x86平台下Microsoft公司的MASM6.x汇编语言。
