全国计算机技术与软件专业技术资格(全国计算机技术与软件专业技术资格(水平)水平)考试 考试
2010年下半年 年下半年 嵌入式系统设计师 嵌入式系统设计师 嵌入式系统设计师 下午试卷 下午试卷 下午试卷
(考试时间 14:00~16:30 共150分钟)
请按下述要求正确填写答题纸 请按下述要求正确填写答题纸
1. 在答题纸的指定位置填写你所在的省、自治区、直辖市、计划单列市的名称。 2. 在答题纸的指定位置填写准考证号、出生年月日和姓名。 3. 答题纸上除填写上述内容外只能写解答。 4. 本试卷共5道题,全部是必答题,满分75分。 5. 解答时字迹务必清楚,字迹不清时,将不评分。 6. 仿照下面例题,将解答写在答题纸的对应栏内。 例题 例题
2010年下半年全国计算机技术与软件专业技术资格(水平)考试日期是 (1) 月 (2) 日。
因为正确的解答是“11月13日”,故在答题纸的对应栏内写上“11”和“13”(参看下表)。
例题 (1) (2)
解答栏 11 13
2010年下半年 嵌入式系统设计师 下午试卷 第 1 页 (共 13 页)
试题一(试题一(共15分)
阅读以下关于某嵌入式系统设计方案的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
通常计算机按其体系结构分为冯·诺依曼(Von neumann)结构和哈佛(Harvard)结构。冯·诺伊曼结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。复杂系统的不同处理器可采用不同类型体系结构。
某嵌入式系统由数据处理模块、信号处理模块和光纤网络交换模块组成,如图1-1所示。其中数据处理模块的主处理器选用PPC7447,内部集成了二级CACHE,并有SDAM存储器、FLASH、NvRAM、实时时钟、FC(Fabric Channel)通信接口、以太网接口和RS232接口;信号处理模块采用DSP TMS320C6000,并有 FC通信接口、RS232接口,用于SPM与外部数据通信;光纤网络交换模块提供FC协议交换能力,主要由控制单元和交换单元两部分组成。
本嵌入式系统的数据处理模块主要接收外部命令、控制系统运行、与系统其它模块通讯;信号处理模块主要进行图形图像处理,需要较大的运算量和较高的运算速度。
数据处理模块数据处理模块数据处理模块信号处理模块信号处理模块光纤网络交换模块 图1-1 某嵌入式系统组成
【问题1】(6分)
回答下列问题,将答案填写在答题纸对应的栏目中。
本嵌入式系统的数据处理模块采用 (1) 体系结构,信号处理模块采用 (2) 体系结构。
在设计中断时,中断触发方式一般分为沿中断和电平中断。沿中断利用 (3) 或 (4) 作为中断触发信号, 电平中断利用 (5) 或 (6) 作为中断触发信号。
【问题2】(5分)
在设计数据处理模块DPM时,假设某桥芯片内部集成一路递增定时器,定时器位
2010年下半年 嵌入式系统设计师 下午试卷 第 2 页 (共 13 页)
宽为32位,最高位为控制使能位,输入时钟为25MHz。请回答下面三个问题,将答案填写在答题纸对应的栏目中(给出表达式即可)。 (1)该定时器最长定时时间是多少(单位ns)? (2)设置10ms定时时间,则定时器的初值为多少?
(3)若改为一路递减定时器,设置10ms定时时间,则定时器的初值为多少?
【问题3】(4分)
嵌入式系统底层FC通讯驱动对大数据采用DMA数据传输。图1-2是未完成的DMA数据传输工作流程图,请从下面题纸的对应栏中。
备选答案:
① 字计数器计数④ DMA接收⑦ 传送结束2010年下半年①~⑧中选择正确的答案,完成该图,将答案填写在答DMA请求(1)(2)传送一个字数据修改内存地址(3)N(4)?Y结束DMA 图1-2 DMA数据传输工作流程图
② DMA发送中断
③ DMA4个字节 ⑤ 发送内存地址
⑥ 再次修改内存地址
⑧ 继续传送
嵌入式系统设计师 下午试卷 第 3 页 (共 13 页)
响应
试题二(试题二(共15分)
阅读以下关于AD574(12位的A/D转换器)的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。 【说明】
AD574可以通过简单的三态门、锁存器接口与微机系统的系统总线相连接,也可以
通过可编程接口(如8255)与系统总线相连接。由表2-1可知,AD574可以工作在8位,也可以工作在12位。图2-1为以8255为接口芯片,将工作于12位下的AD574接到8位ISA系统总线上。
表2-1 AD574的控制功能
CE CS R/C 12/8 A0 0 1 X 0 1 功能说明 12位转换 8位转换 12位输出 8位高有效输出 4位低有效输出 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 8255X X 1 0 0 D0D7D0D7RDWRRSTA0A1AD574IORPA0PA1D0D1D7D810VIND9D10D11CE12/8R/CSTSIOWRSTA0A1A15A14A13A12A11A10A9A8A7A6A5A4A3A2PA7PB0PB1PB2PB3PC0PC7-5~5V5V≥1G2AA0CSY0CS&G2BG1CBA74LS138 图2-1 AD574经过8255与8位ISA系统总线相连接
2010年下半年 嵌入式系统设计师 下午试卷 第 4 页 (共 13 页)
【问题1】(3分)
在图2-1中,通过8255的A0、A1口地址选择信号线进行PA口、PB口、PC口的(1)A0为0,A1为0时控制(1)口。
控制。回答下列问题,将答案填写在答题纸对应的栏目中。
【问题2】(4分)
简要回答下列关于74LS138器件的功能以及作用的问题,将答案填写在答题纸对应
的栏目中。 (1)74LS138器件在图2-1中的功能是 (1) ;
(2)在图2-1中,通过A2~A15来控制74LS138的输出端出Y0有效,A2、A3、A4必须为 (2) 电平,A5、A6必须为
【问题3】(8分)
图2-1中的连接可以简化,将AD574的CE和12/8管脚接为高电平,而使A0接地。此时只需要用R/C来启动AD574的变换,然后通过查询是否完成(AD574的STS管脚由高变低表明AD574变换完成)如下,最终结果是将变换好的数据放在BX中。请补全下面程序中的空(将答案填写在答题纸对应的栏目中。
;对8255初始化,此段程序放在应用程序开始的位置上INTI55: MOV DX, 0063H
MOV AL, 10011010B ;8255的A口的高4位均设置为输入,位设置为输出 OUT DX, AL ;控制字写入 MOV AL, 00000001B
OUT DX, AL ;使用位控方式将
;以下是对输入信号进行一次变换的程序 ACQUQ:MOV DX, 0062H MOV AL, 00000000B OUT DX, AL MOV AL, (1) B ;二进制表示 OUT DX, AL ;由PC0输出低电平到高电平启动变换2010年下半年 嵌入式系统设计师 下午试卷 第 5 页Y0,要使得 (3) 电平。STS状态来判断变换
。对应的采集变换程序
8位,B口
8255的控制寄存器PC0置位 (共 13 页)74LS138输
CS和1)~(4),8位,以及C
C口的低4
口
NOP NOP
WAITS: IN AL,DX ;取出AD574的STS状态
AND AL, (2) H ;判断变换是否结束, 十六进制表示 JNZ WAITS
MOV DX,0060H IN MOV MOV IN AND MOV RET
2010年下半年AL,DX BL, (3) DX,0061H
AL,DX AL, (4) H BH,AL
嵌入式系统设计师 A口取得A/D变换的低A口获取的低8位放在B口数据
AD574数据的高4 第 6 页 (共 13 8位 BL中 , 十六进制表示
;读取 ;将 ;读取取位 ;
下午试卷页)
试题三(试题三(共15分)
下面是关于嵌入式软件测试方面的叙述,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司是一个有资质的专业嵌入式软件测评中心,承担了一项嵌入式软件的测试任务。按用户要求,需要对被测软件进行单元测试、部件(集成)测试和系统测试。 【问题1】(6分)
软件测试中的单元测试、部件(集成)测试和系统测试都有各自的测试目标。以下描述中属于单元测试的是 (1) ,属于部件(集成)测试的是 (测试的是 (3) ,请把以下8个选项的序号分别填入上述空白处,且不能重复。将答案填写在答题纸对应的栏目中。
① 测试对象为单个模块或者函数
② 测试对象包括整个软件系统,以及软件所依赖的硬件,外设等 ③ 测试对象为多个模块或多个单元
④ 整个测试必须在系统实际运行环境中进行 ⑤ 主要测试模块内部逻辑结构的正确性 ⑥ 测试各个模块间的调用接口
⑦ 包括测试部分全局数据结构及变量 ⑧ 主要测试局部数据结构及变量
【问题2】(5分)
被测软件研制方提出,为节约成本,由软件开发人员对所开发的软件进行测试,测评中心仅仅进行测试结果确认,并按测评中心规定编写各种测试文档并出具证明。此提议遭到测评中心的反对。软件研制方认为:
(1)自己编写的程序,结构熟悉,需求清楚(2)自己测试后,又经过第三方的确认,是可行的;(3)知识产权可受保护。 测评中心反驳:
(1)程序不能由编写者自己测试,就像不能(2)自己测试,有弄虚作假的嫌疑;
(3)软件测试不能丧失独立性,仅由测评中心确认,针对上述情况,应该由 (1) 进行测试。条,错误的有 (3) 条;测评中心所说的正确的有 (条。
2010年下半年 嵌入式系统设计师 2) ,属于系统现问题; 又当裁判员一样损害测评中心声誉3条理由正确的有 4) 条,错误的有 ( 7 页 (共 13 页)
(2) 5) ,易发既当运动员;,不行。 软件研制方的下午试卷 第
【问题3】(4分)
判断以下关于软件测试叙述的正确性,回答“错”或“对”, 并将其填入答题纸的对应栏内。
(1)判定/条件覆盖使每个分支至少被执行一次,且判定中的每个条件都获得所有可能的逻辑值。
(2)在没需求文档的条件下能够进行黑盒测试。 (3)在进行压力测试的同时可以进行单元测试。
(4)软件测试中设计的测试实例(test case)主要由输入数据和预期输出结果两部分组成。
2010年下半年 嵌入式系统设计师 下午试卷 8 页 (共 13 页)
第
试题四(试题四(共 15分)
阅读以下关于汇编语言方面的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替机器码,用地址符号或标号代替地址码,直接同计算机的底层软件甚至硬件进行交互,具有代码优化、运行效率高等特点。本题针对的是x86平台下Microsoft公司的MASM6.x汇编语言。
【问题1】(6分)
汇编语言中的数值表达式一般是指由运算符连接的各种常数所构成的表达式。汇编程序在汇编过程中计算表达式,由于在程序运行之前就已经计算出了表达式,所以运行速度没有变慢,而程序的可读性却增强了。表4-1列出了MASM常见的一些运算符及其含义,请将表4-1中①~⑥处运算符的含义写在答题纸的对应栏中。
表4-1 运算符及含义
运算符类型
算术运算符 逻辑运算符 移位运算符 关系运算符 高低运算符
运算符号与说明
+(加) -(减) *(乘) /(除) MOD( ① ) AND(与) OR(或) XOR( ② ) NOT(非) SHL(逻辑左移) SHR( ③ )
EQ(相等) NE( ④ ) GT(大于) LT(小于) GE(大于等于) LE( ⑤ )
HIGH(高字节) LOW( ⑥ ) HIGHWORD(高字) LOWWORD(低字)
【问题2】(5分)
运算符具有优先级。表4-2按照优先级从高到低排列常见的一些运算符,请从以下备选的运算符中按照优先级选择(1)~(5)处的运算符,将其写在答题纸的对应栏中。
备选的运算符: XOR MOD HIGH AND GT
2010年下半年 嵌入式系统设计师 下午试卷 第 9 页 (共 13 页)
表4-2 运算符的优先级
优先级 1 2 3 4 5 6 7 8 9 10
运算符
( ) < > [ ]
PTR OFFSET SEG TYPE THIS : (1) LOW * / (2) SHL SHR + -
EQ NE (3) LT GE LE NOT (4) OR (5) SHORT
(4分) 【问题3】
BIOS软件开发接口由一批子程序组成,负责管理系统内的输入输出设备,直接为操作系统和应用程序提供底层设备驱动服务。常用的BIOS服务及功能见表4-3所示。
表4-3 常用的BIOS服务功能
BIOS服务 打印屏幕服务 视频服务 软盘服务 串行通讯服务 键盘服务 日期服务
功能号 05H 10H 13H 14H 16H 1AH
功能
将当前屏幕内容送到默认打印机 为显示适配器提供I/O支持
提供软盘的读、写、格式化、初始化、诊断 为串行适配器提供字符输入输出 为键盘提供I/O支持 设置和读取时间、日期
若调用视频服务功能(10H)中的光标设置子功能(02H),将视频页上的光标移到3行14列,用如下汇编语言实现,请补充完整下面程序中的(1)~(4)处,将答案填写在答题纸的对应栏中。
MOV AH, (1) H ;十六进制表示 MOV DH, (2) H MOV DL, (3) H INT (4) H
2010年下半年 嵌入式系统设计师 下午试卷 第 10 页 (共 13 页)
试题五(试题五(共15分)
阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入答题纸的对应栏内。 【说明】
嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式(Big-endian)、小端方式(Little-endian)的访问问题。
【问题1】(4(4分)
嵌入式系统中常要求用户对变量或寄存器进行位操作。下面的两个函数分别为设置和清除变量a的第5位。请使用下面的宏定义BIT5按要求对变量a进行相应的处理。在函数set_bit5中,用位或赋值操作(|=)设置变量a的第5位,在函数clear_bit5中,用位与赋值操作(&=)清除变量a的第5位。
#define BIT5 (0x01<<5) static int a;
void set_bit5(void) { ① ; /* 设置变量a的第5位 */ }
void clear_bit5(void) { ② ; /* 清除变量a的第5位 */ }
【问题2】(5分)
图5-1所示代码的设计意图是计算1~100各数的平方。该段代码运行后,没有得到应有的结果,请说明出错原因,将答案填入答题纸的对应栏内。
#define SQUARE( a ) ((a) * (a)) int i; int result; i=1; do { result = SQUARE( i++ ); printf(\"result = %d\\n\} while(i<101); 图5-1 计算1到100平方数的代码
2010年下半年 嵌入式系统设计师 下午试卷 第 11 页 (共 13 页)
图5-2是在不改变宏定义的情况下,对程序进行修改。请完成该段代码,将答案填入答题纸的对应栏内。
#define SQUARE( a ) ((a) * (a)) int i; int result; i = 1; do { result = SQUARE( ① ); ② ; printf(\"result = %d\\n\} while(i<101); 图5-2 计算1到100平方数的代码
【问题3】(6分)
某嵌入式处理器工作在大端方式(Big-endian)下,其中unsigned int为32位,unsigned short为16位,unsigned char为8位。仔细阅读并分析下面的C语言代码,写出其打印输出的结果,将答案填入答题纸的对应栏内。
#include \"stdio.h\" #include \"stdlib.h\" void *MEM_ADDR;
void mem_test(void) {
unsigned int *pint_addr = NULL; unsigned short *pshort_addr = NULL; unsigned char *pchar_addr = NULL;
MEM_ADDR = (void *)malloc(sizeof(int)); pint_addr = (unsigned int *)MEM_ADDR; pshort_addr = (unsigned short *)MEM_ADDR; pchar_addr = (unsigned char *)MEM_ADDR;
2010年下半年 嵌入式系统设计师 下午试卷 第 12 页 (共 13 页)
*pint_addr = 0x12345678;
printf(\"0x%x, 0x%x\\n\ /* 第一次输出 */
pshort_addr++;
*pshort_addr = 0x5555;
printf(\"0x%x, 0x%x\\n\ /* 第二次输出 */
pchar_addr++;
*pchar_addr = 0xAA;
printf(\"0x%x, 0x%x\\n\/* 第三次输出 */ }
2010年下半年 嵌入式系统设计师 下午试卷 第页 (共 13 13 页)
因篇幅问题不能全部显示,请点此查看更多更全内容