1、2007年下半年软件水平考试(中级)嵌入式系统设计师下午(技术应用)试题真题试卷及答案与解析 一、试题一 1 阅读下面有关某项目自动化配送中心处理机控制系统的叙述,回答问题 1至问题3,将答案填入对应栏内。 【说明】 某企业大型配送控制中心通常采用自动化方式存取仓库内的货物,配送控制中心对货物的存取由两部分组成:其一,配送控制中心管理和调度多台配送车;其二,配送车根据指令从仓库货架上存取货物。 图 1-1为某企业大型仓库货物存取示意图。图中配送车上安装有智能控制设备,通过视频接口接收图像数据,实施对货架位置 的定位识别,然后将识别信息发送到配送控制中心。配送控制中心向配送车发送控制命令,将配送
2、车上的货物放置到指定的货架位置,或从指定的货架位置上取出货物,装载到该配送车。1 假设图 1-1中的智能设备采用 8051微处理器,该微处理器的定时器主频为12MHz。该智能设备中的数据采集周期分别为 10ms、 15ms、 1s,请给出: (1)设备中定时器应设置的最大计时单位; (2)8051定时器计数寄存器的初始值; (3)若8051采用外部时钟接入方式,请完成图 1-3中的连接方式。 2 根据图 1-2所示的配送 车取货的工作过程示意图,得到图 1-4所示的配送车取货软件流程图,请在图中的 (n)处填入适当的内容。 3 按照你对 8051微处理机的理解,填写表 1-1中的 (1) (5
3、)空格,完成表中给出的5种寻址方式的指令格式。注:MOV:将存储器的内容取到累加器中 A:累加器 Ri:通用寄存器 PC:指令寄存器 DPTR:间址寄存器 二、试题二 4 阅读以下关于嵌入式软件测试的叙述,回答问题 1至问题 3,将解答填入对应栏内。 【说明】 某嵌入式软件主要用于控制飞机起落架。飞机起落架的可靠性直接关系着机载人员 的人身安全。根据载机设备对软件可靠性要求,一般将软件分为 3级:关键级软件,主要级软件和一般软件。由于该嵌入式软件被定义为关键软件,要求按关键级软件进行测试。 4 请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖、判定 /条件覆盖、条件组合覆盖的含义。 5 根
4、据本题所示的软件关键级别,回答该软件需要做哪几项覆盖测试 ?要求的覆盖率指标是多少 ?如果是一般级软件,应做哪几项覆盖测试 ? 6 在软件单元测试中,主要测试对象是软件模块,如果被测程序中有多处调用了其他过程代码,测试中应如何处理这些功能的引用 ?软件的性能测试在测试工作的哪个阶段进行 ? 三、试题三 7 阅读以下关于中断的叙述,回答问题 1至问题 3,将答案填入对应栏内。 【说明】 某计算机中断系统有 4级中断 I1, I2, I3和 I4,中断响应的优先次序为I1I2I3I4 ,即先响应 I1,冉响应 I2, ,最后响应 I4。每级中断对应一个屏蔽码,屏蔽码中某位为 “1”表示禁止中断 (
5、关中断 ),若为 “0”则表示允许中断 (开中断 )。各级中断处理程序与屏蔽码的关系如表 3-1所示。7 若 ti时刻 I1、 I2和 I4级同时产生中断,在各中断处理完成后, tj(ti tj)时刻发出I3级中断申请, CPU为 I3服务时, I1级发出请求,在 CPU为 I1服务时, I2级发出请求。请参照图 3-1所示的格式,画出 CPU的运行轨迹。8 若将中断优先次序设置为 I1I4I3I2 ,即先响应 I1,再响应 I4, ,最后响应 I2。请重新设置各级的屏蔽码,填写表 3-2。9 设中断优先次序为 I1I4I3I2 。若 ti时刻 I1、 I2和 I4级同时产生中断,在各中断处理
6、完成后, tj(ti tj)时刻发出 I3级中断申请, CPU为 I3服务时, I1级发出请求,在 CPU为 I1服务时, I2级 发出请求。请画出这种情况下 CPU的运行轨迹。 四、试题四 10 阅读以下说明和 C语言代码,回答问题 1至问题 3,将解答填入对应栏内。 【说明】 在实时系统中,许多控制软件需要将数据封装到一个数据结构中,以节省存储空间。对于位操作,使用汇编语言实现其访问比较容易,但会增加编程难度,因此现在普遍采用 C语言实现。使用高级语言编程要特别注意结构的存储格式以及编译器的特性。本题所使用的编泽器对变量按声明顺序分配地址。分析图41所示的 C语言代码,回答以下问题。10
7、如果处理机按 16位以大端方式 (big_endian)编址,请在图 4-2所示的存储器图表中填入 myRarData数据的存储内容 (十六进制表示 )。11 在图 4-1所示的程序中,第 22行的语句执行完成后,下列语句的结果是多少 ?请将应填入 (n)处的内容写在对应栏中。 q- X=(1) q- Y=(2) q- Z=(3) q- U=(4) 若再执行一次 q+,则下列语句的结果又是多少 ?请将应填入 (n)处的内容写在对应栏中。 q- X=(5) q- Y=(6) q- Z=(7) q- U=(8) 12 内存空间常划分为代码段 (text)、数据段 (data)、 bss段 (bss
8、)、堆区 (heap)和栈区(stack),那么图 4-1中 myRadarData数组的存储空间应分配在哪个段中 ?指针变量p、 Q应分配在哪个段中 ? 2007年下半年软件水平考试(中级)嵌入式系统设计师下午(技术应用)试题真题试卷答案与解析 一、试题一 1 【正确答案】 (1)针对采样周期为 10ms、 15ms和 1s,最大计时单位应为 5ms。 (2)在定时器主频为 12MHz时, 5ms的定时器应设置为 5000/1/12=60000。 (3)外部时钟的连接方式 【试题解析】 本题是一道综合性较强的考题,需要考生具有关于嵌入式系统的相关软、硬件基础知识。考生需要仔细阅读本题目中给出
9、的相关内容,搞清楚配送车取货的工作过程流程。 本题要关注以下几点: (1)送配车是在送配中心的指挥下完成货物存取,送配中心的命令主要包括取货指令、位置确认和存货命令。 (2)送配车的定位靠送配车中的智能设备进行,当送配车到达预定位置时,将所处的坐标信息发送给配送中心,得到人工确认后,移动机械臂实施取货操作。 (3)最后,根据配送中心发出的目标地址,将货物放到目的地。 (4)送配车中的智能设备是典型的嵌入式实时系统,它要周期性地从摄像头中采集送配车的当前位置信息,完成当前位置与目标位置比对:并定时与配送中心保持联系。 本题主要考查考生对嵌入式控制系统中常用的软硬基础知识的掌握程度。题目中给出了智
10、能设备进行数据采集需要的三个基本周期要求,要求考生能够在分析需求的基础上,给出智能设备工作的时间控制单位。在一般的控制系统中;针对具有多个周期任务管理系统,往往要设置基础时间控制,对于本题,由于智能设备有 10ms、 15ms和 1s三种任务,最大计时单位应为三种周期最大公约数。当然,采用 1ms也能实施,但由于时间颗粒度越小,带来的系统开销越大,因此最合适的是 5ms。另外,在分析出本题需要的最大计时单位的基础上,根据定时器的主频参数 (12MHz),考生应该能够换算出具体实现中对定时器初始值的设置。这里主要考查考生的实际经验,知道如何将时间要求转换成具体控制参数,即频率和时间的转换关系,这
11、是本题的主要知识点。不同的定时器芯片可提供多种定时器通道,不同的通道对主频进行了再分频,本题没有涉及具体通道的再分频的换算。本题 还考查考生对定时器硬件连接方法的知识掌握程度,这点在相关参考书上有说明,只要考生详细复习了本内容,应该能正确回答。 2 【正确答案】 (1)是取货命令吗 ?或含义相同的其他语句。 (2)分析取货指令,或含义相同的其他语句。 (3)配送车定位,或含义相同的其他语句。 【试题解析】 本题将配送车取货的工作过程示意图内容转换成具体的软件流程图。考查考生正确掌握流程图的画法、各个图标的含义和流程图中的具体内容。只要考生正确理解了送配车的控制关系,就可正确地填写出流程图中的空
12、缺。由于流程图描述的是取货流程,根 据空 (1)两边的提示,如果是取货命令则执行左面操作,如果不是取货命令则执行其他操作,因此空 (1)处的条件语句应判别 “是取货命令吗 ”;空 (2)处应为获取取货命令后,对命令参数进行分析的操作,得到取货的具体位置:空 (3)处主要根据第二步分析出的具体位置,完成对送配车运行的控制,直到送配车达到相应的目的位置,即送配车定位。 3 【正确答案】 (1)OH FFH,或 0 255间的任意整数。 (2)Ri,其中 i可由 0 7之间的任意数字代替。 (3)Ri,其中 i可由 0、 1代替。 (4)#OH #FFH,或 #0 #255之间的任意整数。 (5)A
13、。 【试题解析】 本题主要考查考生对汇编语言的掌握程度。在嵌入式系统开发中,软件设计者必须熟练掌握和应用汇编语言。本题虽然涉及了具体的 CPU芯片语言,但是,常用的通用寻址方式必须掌握。本题要求考生分清几种常用寻址方式的具体含义,掌握汇编语言的书写格式,并对常用的寄存器描述形式有一定的了解。本题相关内容考生可参看参考书上的说明。 二、试题二 4 【正确答案】 【试题解析】 本题是一道有关军用嵌入式系统软件测试技术概念的考题。需要考生具有一定软件测试的相关基础知识。请考生仔细阅读本题中的相关内容,搞清楚军用软件重要级别的划分原则和不同级别软件具体含义,了解不同级别软件的测试项要求,在此基础上,才
14、能回答好以下问题。 本题要关注以下几点: (1)飞机起落架控制,关系着飞机安全起飞和着落。本系统中由于软件错误将会引起机毁人亡的悲剧。因此,软件的可靠性至关重要。 (2)提高软件的可靠性的主要方法之一,就是加强软件的测试工作。从目前软件测试方法的分类来 看,不同级别的软件,测试的要求不相同,对于关键软件必须增加大量的测试项。 本题主要考查考生对各个测试项的具体概念的理解。考生应能够区分各种测试项具体要求及其差别,掌握语句覆盖、判定覆盖、条件覆盖、判定 /条件覆盖和条件组合覆盖 5种测试项方法。 语句覆盖指每条可执行语句至少执行一次。判定覆盖指每个判定的每个分支至少执行一次。条件覆盖指每个判定的
15、每个条件应取到各种可能的值。判定 /条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。还有,路径覆盖使程序中每一条可能 的路径至少执行一次。 5 【正确答案】 (1)本软件为关键级软件,应进行语句覆盖、判定覆盖、条件覆盖、判定 /条件覆盖、条件组合覆盖,共 5项;要求的覆盖率指标是均达到 100%。 (2)如果是一般级软件,仅做语句覆盖和判定覆盖。 【试题解析】 本题主要考查对关键软件的测试要求,这里隐含着军用软件具体规范要求。对于关键软件要求必须做完上述 5项的测试工作,并要求对每项测试结果,其覆盖率达到 100%;而对于一般软件,仅仅要求做完语句覆盖和
16、判定覆盖两种,其覆盖率不一定达到 100%,但必须说明达不到的原因,即应 有缺陷分析。 6 【正确答案】 (1)用打桩技术处理这些功能的引用。 (2)性能测试在系统测试阶段进行。 【试题解析】 本题主要考查考生对具体测试技术的掌握程度。进行单元测试时,打桩技术是测试工作中常用的方法。在软件测试的各个阶段中没有性能测试阶段,这里主要检查考生对测试工作的基本概念。性能测试非常重要,只有在系统测试阶段,才能完成性能测试,其他阶段是无法进行性能检测的。 三、试题三 7 【正确答案】 【试题解析】 本题考查的是中断基础知识,中断是计算机中一个非常重要的概念,在嵌入式 计算机中的应用极为广泛。采用中断的优
17、点是既能提高 CPU的效率又能对突发事件作出实时处理。考生需要正确理解中断的概念,了解中断处理过程,包括中断请求、中断响应、中断处理如中断返回。同时还要正确理解中断的优先级概念, CPU对各中断级的处理一般原则是; (1)不同优先级的中断同时发生时,按优先级别高低依次处理。 (2)当 CPU在处理级别低的中断处理过程中,又出现级别更高的中断请求时,应立即暂停低级中断的处理程序而去优先处理高级中断,等高级中断处理完毕后,再返回到原来未处理完的低级别的中断处理程序,这 种中断处理方式称为多重 (级 )中断。 (3)在处理某一中断的过程中,出现比它级别低的或同级的中断请求,则应处理完当前的中断后,再
18、接着响应新的中断请求。 (4)中断优先级相同的不同设备同时请求中断时,则按事先规定的次序,逐个处理。 中断响应的优先次序可以由中断响应的硬件排队电路决定,然而, CPU处理中断服务的优先次序可以由屏蔽码来决定。通常把屏蔽码看成软排队,中断处理次序可以不同于中断响应的次序。通常屏蔽寄存器的编码由程序员填写。 屏蔽技术向用户提供了一种手段,可以用程序控制中断系统,动 态地调度多重中断优先处理的次序,从而提高了中断系统的灵活性。 问题 1分析 根据中断的知识以及表 3-1中断处理程序与屏蔽码的关系可以确定中断处理的次序与中断响应的优先次序一致,即 I1I2I3I4 。按照这个处理次序,可以画出CPU
19、的运行轨迹的示意图,连续处理中断时,回到正常程序的部分可以画也可以不画。 8 【正确答案】 若将中断处理次序设置为 I1I4I3I2 ,则:【试题解析】 若将中断处理优先次序设置为 I1I4I3I2 。屏蔽码中,按某位为 1表示禁止中断 (关中断 ),若 为 0则表示允许中断 (开中断 ),见参考答案。 9 【正确答案】 【试题解析】 在同样的中断请求的情况下,尽管 CPU中断响应的优先次序不变(I1I2I3I4) ,但是由于中断屏蔽码不同, CPU的运行轨迹发生了变化,详见参考答案。其中 ti时刻 I1、 I2和 I4三个请求同时到达, CPU首先响应 I1级请求,紧接着响应 I2级请求,但
20、是 I2级的屏蔽吗是对 I4级开放的,当 I2级的程序执行到开中断指令时,立即被 I4级中断, CPU转去执行 I4级程序,待服务完毕后,再返回处理 I2级。如果忽略上述细节,也可简单的画 出 CPU按 I1、 I4和 I2的处理次序执行。在 tj时刻, CPU处理完 I4级程序后, I3级发出申请, CPU响应并为其服务。在为 I3级服务的过程中,又来了 I1级请求, I3级可被 I1级中断,故 CPU转为 I1级服务。在 CPU为 I1级服务的过程中, I2级发出申请,但因I2级的处理级别最低,故 CPU不理睬 I2级的请求,直至 I3级服务完毕,再响应I2级请求。本题主要考查考生对多重中
21、断处理的理解,在画 CPU处理轨迹时,可以画回到正常程序,也可以不画回到正常程序。 四、试题四 10 【试题解析】 本题是一道有关 C语言编程 的考题。需要考生具有熟练的软件编程基础知识,了解 C语言指针变量的灵活使用方法和基本的程序编译的存储知识。考生需要仔细阅读和分析本题中的程序代码,搞清楚程序中各个语句的具体含义和程序构梨,通过思考和推算回答问题。 本题要关注以下几点: (1)根据 1到 14行的结构类型定义的含义,正确解释第 15行中数组初值的赋值关系。 (2)在回答问题时,考生应注意编译器的字对齐的特点,掌握处理器的大、小端方式。 (3)通过阅读程序,注意区分开全局变量和局部变量的内
22、容,并深入了解内存空间中代码段 (text)、数据段 (data)、 bss段 (bss)、堆区 (heap)和栈区 (stack)的具体含义和编译过程中存储分配的一般分配原则。 本题主要考查考生对高级程序语言定义的初值应如何存储,这里考生应关注问题1中的条件,即 “处理机按 16位以大端方式 (big_endian)编址 ”,这种条件决定了各个初值的存放位置、变量封装的含义以及对存储空间的编址。此外,从事嵌入式软件开发的人员,应灵活掌握数据的转换格式和十六进制的表示形式,计算机所能识别的字母 (如 a)表达方式。通过本问题的解答,可以考查考生对计算机软 件,尤其是嵌入式软件基础知识的掌握。本
23、问题涉及的知识在参考书上均有说明,希望考生能够从题目中发现隐含的知识。 11 【正确答案】 (1)0x0001 (2)0x6162 (3)0x6300 (4)0x0200 (5)0x0002 (6)0x7879 (7)0x7A00 (8)0x0400 【试题解析】 本题主要考查考生对程序执行体的分析能力和指针变量的映射关系。通过两种不同结构类型的映射,检查考生是否掌握了各个字段的映射关系,推导出正确的数值。此外,考核考生是否了解类型指针加一后,不是简单的空间地 址加一,而是要将整个结构数据项加一。这一点是高级语言必须具备的基础。 12 【正确答案】 (1)myRadarData数组的存储空间应
24、分配在数据段 (data)。 (2)指针变量 p、 q应分配在栈区 (stack)。 【试题解析】 本题主要考查考生是否掌握不同作用域的变量,其分配的地址空间的不同,从而深入理解代码段 (text)、数据段 (data)、 bss段 (bss)、堆区 (heap)和栈区 (stack)的具体含义。由于在所有过程 (或函数 )都能访问到全局变量,所以应在数据段中分配空间,在程序被加载到内存时 ,全局变量的存储空间及初值即被存储在数据段中;由于局部变量的作用域为过程 (或函数 )内,一旦程序退出过程体,局部变量将失效,因此,局部变量被分配在栈区。掌握变量的作用域范围,在程序中适当使用全局变量,可减少代码运行空间。