201011嵌入式下午真题
第 1 题
阅读以下关于某嵌入式系统设计方案的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
通常计算机按其体系结构分为冯•诺依曼(VonNeumann)结构和哈佛(Harvard)结构。冯•诺依曼结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构,哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。复杂系统的不同处理器可采用不同类型体系结构。
某嵌入式系统由数据处理模块、信号处理模块和光纤网络交换模块组成,如图1-1所示。其中数据处理模块的主处理器选用PPC7447,内部集成了二级Cache,并有SDAM存储器、FLASH、NvRAM、实时时钟、FC(Fabric Channel)通信接口、以太网接口和RS232接口;信号处理模块采用DSP TMS320C6000,并有FC通信接口、RS232接口,用于SPM与外部数据通信;光纤网络交换模块提供FC协议交换能力,主要由控制单元和交换单元两部分组成。
本嵌入式系统的数据处理模块主要接收外部命令、控制系统运行、与系统其他模块通信;信号处理模块主要进行图形图像处理,需要较大的运算量和较高的运算速度。
【问题1】(6分)
回答下列问题,将答案填写在答题纸对应的栏目中。
本嵌入式系统的数据处理模块采用(1)体系结构,信号处理模块采用(2)体系结构。在设计中断时,中断触发方式一般分为沿中断和电平中断。沿中断利用(3)或(4)作为中断触发信号,电平中断利用(5)或(6)作为中断触发信号。
【问题2】(5分)
在设计数据处理模块DPM时,假设某桥芯片内部集成一路递增定时器,定时器位宽为32位,最高位为控制使能位,输入时钟为25MHz。请回答下面三个问题,将答案填写在答题纸对应的栏目中(给出表达式即可)。
(1)该定时器最长定时时间是多少(单位ns)?
(2)设置10ms定时时间,则定时器的初值为多少?
(3)若改为一路递减定时器,设置10ms定时时间,则定时器的初值为多少?
【问题3】(4分)
嵌入式系统底层FC通信驱动对大数据采用DMA数据传输。图1-2是未完成的DMA数据传输工作流程图,请从下面①~⑧中选择正确的答案,完成该图,将答案填写在答题纸的对应栏中。
备选答案:
①字计数器计数
②DMA发送中断
③DMA响应
④DMA接收4个字节
⑤发送内存地址
⑥再次修改内存地址
⑦传送结束
⑧继续传送
答案与解析
- 试题难度:较难
- 知识点:嵌入式微处理器>其它
- 试题答案:
【问题1】
(1)冯•诺依曼或Von Neumann
(2)哈佛或Harvard
(3)、(4):答案次序无关。答案为:上升沿、下降沿
(5)、(6):答案次序无关。答案为:高电平、低电平
【问题2】【问题3】
(1)DMA响应,或③
(2)发送内存地址,或⑤
(3)字计数器计数,或①
(4)传送结束,或⑦ - 试题解析:
本题主要考查对嵌入式系统结构的认识
【问题1】
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
冯•诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
主控设备PPC7447面向的是控制及数据处理领域,无需独立的数据与指令总线,因此采用的是冯•诺依曼结构。
【问题2】
本题考查设置定时器的相关知识。
【问题3】
中断的处理过程一般按如下步骤进行:
(1)关中断:进入不可再次响应中断的状态,由硬件自动实现;
(2)保存断点:为了在中断处理结束后能正确地返回到中断点,在响应中断时,必须把当前的程序计数器PC中的内容(即断点)保存起来;
(3)识别中断源,转向中断服务程序:在多个中断源同时请求中断的情况下,本次实际响应的只能是优先权最高的那个中断源,所以,需要进一步判断中断源,并转入相应的中断服务程序入口;
(4)保存现场和屏蔽字:进入中断服务程序后,首先要保存现场,现场信息一般指的是程序状态字,中断屏蔽寄存器和CPU中某些寄存器的内容。保存旧的屏蔽字是为了中断返回前恢复屏蔽字,设置新的屏蔽字是为了实现屏蔽字改变中断优先级或控制中断的产生;
(5)开中断:因为接下去就要执行中断服务程序,开中断将允许更高级中断请求得到响应,实现中断嵌套;
(6)执行中断服务程序主体:不同中断源的中断服务程序是不同的,实际有效的中断处理工作是在此程序段中实现的;
(7)关中断:是为了在恢复现场和屏蔽字时不被中断打断;
(8)恢复现场和屏蔽字:将现场和屏蔽字恢复到进入中断前的状态;
(9)中断返回:中断返回是用一条IRET指令实现的,它完成恢复断点的功能,从而返回到原程序执行。
进入中断时执行的关中断、保存断点操作和识别中断源是由硬件实现的,它类似于一条指令,但它与一般的指令不同,不能被编写在程序中。
第 2 题
阅读以下关于AD574(12位的A/D转换器)的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
AD574可以通过简单的三态门、锁存器接口与微机系统的系统总线相连接,也可以通过可编程接口(如8255)与系统总线相连接。由表2-1可知,AD574可以工作在8位,也可以工作在12位。图2-1为以8255为接口芯片,将工作于12位下的AD574接到8位ISA系统总线上。
【问题1】(3分)
在图2-1中,通过8255的口地址选择信号线进行PA口、PB口、PC口的控制。回答下列问题,将答案填写在答题纸对应的栏目中。
【问题2】(4分)
简要回答下列关于74LS138器件的功能以及作用的问题,将答案填写在答题纸对应的栏目中。
(1)74LS138器件在图2-1中的功能是(1);
(2)在图2-1中,通过A2~A15来控制74LS138的输出端,要使得74LS138输出;有效,A2、A3、A4必须为(2)电平,A5,A6必须为(3)电平。
【问题3】(8分)
图2-1中的连接可以简化,将AD574的CE和管脚接为高电平,而使和,接地。此时只需要用R/C来启动AD574的变换,然后通过查询STS状态来判断变换是否完成(AD574的STS管脚由高变低表明AD574变换完成)。对应的采集变换程序如下,最终结果是将变换好的数据放在BX中。请补全下面程序中的空(1)~(4),将答案填写在答题纸对应的栏目中。
答案与解析
- 试题难度:一般
- 知识点:嵌入式系统输入输出设备>其它
- 试题答案:
【问题1】
(1)PA(2)PB(3)PC
【问题2】
(1)控制8255的片选,或者产生8255的片选
(2)低
(3)高
【问题3】
(1)00000001(注:只要答案中的最低位为1,均可按正确对待)
(2)80
(3)AL
(4)0F - 试题解析:
下午案例题以C语言为主,汇编语言考查的概率不大,了解即可。
在图2-1中,通过8255的A0、A1口地址选择信号线进行PA口、PB口、PC口的控制。如果A0为0,A1为0时控制PA口;A0为0,A1为1时控制PB口; A0为1,A1为0时控制PC口。
第 3 题
下面是关于嵌入式软件测试方面的叙述,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司是一个有资质的专业嵌入式软件测评中心,承担了一项嵌入式软件的测试任务。按用户要求,需要对被测软件进行单元测试、部件(集成)测试和系统测试。
【问题1】(6分)
软件测试中的单元测试、部件(集成)测试和系统测试都有各自的测试目标。以下描述中属于单元测试的是(1),属于部件(集成)测试的是(2),属于系统测试的是(3),请把以下8个选项的序号分别填入上述空白处,且不能重复。将答案填写在答题纸对应的栏目中。
①测试对象为单个模块或者函数
②测试对象包括整个软件系统,以及软件所依赖的硬件、外设等
③测试对象为多个模块或多个单元
④整个测试必须在系统实际运行环境中进行
⑤主要测试模块内部逻辑结构的正确性
⑥测试各个模块间的调用接口
⑦包括测试部分全局数据结构及变量
⑧主要测试局部数据结构及变量
【问题2】(5分)
被测软件研制方提出,为节约成本,由软件开发人员对所开发的软件进行测试,测评中心仅仅进行测试结果确认,并按测评中心规定编写各种测试文档并出具证明。此提议遭到测评中心的反对。软件研制方认为:
(1)自己编写的程序,结构熟悉,需求清楚,易发现问题;
(2)自己测试后,又经过第三方的确认,是可行的;
(3)知识产权可受保护。
测评中心反驳:
(1)程序不能由编写者自己测试,就像不能既当运动员又当裁判员一样;
(2)自己测试,有弄虚作假的嫌疑;
(3)软件测试不能丧失独立性,仅由测评中心确认,损害测评中心声誉,不行。
针对上述情况,应该由(1)进行测试。软件研制方的3条理由正确的有(2)条,错误的有(3)条;测评中心所说的正确的有(4)条,错误的有(5)条。
【问题3】(4分)
判断以下关于软件测试叙述的正确性,回答“错”或“对”,并将其填入答题纸的对应栏内。
(1)判定/条件覆盖使每个分支至少被执行一次,且判定中的每个条件都获得所有可能的逻辑值。
(2)在没有需求文档的条件下能够进行黑盒测试。
(3)在进行压力测试的同时可以进行单元测试。
(4)软件测试中设计的测试实例(test case)主要由输入数据和预期输出结果两部分组成。
答案与解析
- 试题难度:一般
- 知识点:嵌入式系统实施知识>软件测试
- 试题答案:
【问题1】每空答案中的序号不计次序
(1)①,⑤,⑧
(2)③,⑥,⑦
(3)②,④
【问题2】
(1)测评中心(2)0(3)3(4)3(5)0
【问题3】
(1)对(2)错(3)错(4)对 - 试题解析:
本题考查软件测试方面的基础知识。
软件测试中的单元测试、部件(集成)测试和系统测试都有各自的测试目标。以下描述中属于单元测试的是:测试对象为单个模块或者函数、测试对象为单个模块或者函数、主要测试局部数据结构及变量,属于部件(集成)测试的是:测试对象为多个模块或多个单元、测试各个模块间的调用接口、包括测试部分全局数据结构及变量,属于系统测试的是:测试对象包括整个软件系统,以及软件所依赖的硬件、外设等、整个测试必须在系统实际运行环境中进行。
第 4 题
阅读以下关于汇编语言方面的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替机器码,用地址符号或标号代替地址码,直接同计算机的底层软件甚至硬件进行交互,具有代码优化、运行效率高等特点。本题针对的是x86平台下Microsoft公司的MASM 6.x汇编语言。
【问题1】(6分)
汇编语言中的数值表达式一般是指由运算符连接的各种常数所构成的表达式。汇编程序在汇编过程中计算表达式,由于在程序运行之前就已经计算出了表达式,所以运行速度没有变慢,而程序的可读性却增强了。表4-1列出了MASM常见的一些运算符及其含义,请将表4-1中①~⑥处运算符的含义写在答题纸的对应栏中。
【问题2】(5分)
运算符具有优先级。表4-2按照优先级从高到低排列常见的一些运算符,请从以下备选的运算符中按照优先级选择(1)~(5)处的运算符,将其写在答题纸的对应栏中。
备选的运算符:XOR MOD HIGH AND GT
【问题3】(4分)
BIOS软件开发接口由_批子程序组成,负责管理系统内的输入输出设备,直接为操作系统和应用程序提供底层设备驱动服务。常用的BIOS服务及功能见表4-3所示。
若调用视频服务功能(10H)中的光标设置子功能(02H),将视频页上的光标移到3行14列,用如下汇编语言实现,请补充完整下面程序中的(1)~(4)处,将答案填写在答题纸的对应栏中。
MOVAH,(1)H;十六进制表示
MOVDH,(2)H
MOVDL,(3)H
INT(4)H
答案与解析
- 试题难度:一般
- 知识点:嵌入式软件程序设计>其它
- 试题答案:
【问题1】
①取余
②异或
③逻辑右移
④不相等或者不等
⑤小于等于或者不大于
⑥低字节
【问题2】
(1)HIGH
(2)MOD
(3)GT
(4)AND
(5)XOR
【问题3】
(1)02 或 2
(2)03 或 3
(3)0E 或 E
(4)10 - 试题解析:
本题考查汇编语言的基本语法和应用,目前下午题是以考查C语言为主,而汇编语言主要是在早期时候考查,现在考的概率不大。
汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。汇编程序是系统软件中用于进行语言处理的系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
第 5 题
阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式(Big-endian)、小端方式(Little-endian)的访问问题。
嵌入式系统中常要求用户对变量或寄存器进行位操作。下面的两个函数分别为设置和清除变量a的第5位。请使用下面的宏定义BIT5按要求对变量a进行相应的处理。在函数set_bit5中,用位或赋值操作(|=)设置变量a的第5位,在函数clear_bit5中,用位与赋值操作(&=)清除变量a的第5位。
【问题2】(5分)
图5-1所示代码的设计意图是计算1~100各数的平方。该段代码运行后,没有得到应有的结果,请说明出错原因,将答案填入答题纸的对应栏内。
图5-2是在不改变宏定义的情况下,对程序进行修改。请完成该段代码,将答案填入答题纸的对应栏内。
【问题3】(6分)
某嵌入式处理器工作在大端方式(Big-endian)下,其中unsigned int为32位,unsigned short为16位,unsigned char为8位。仔细阅读并分析下面的C语言代码,写出其打印输出的结果,将答案填入答题纸的对应栏内。
答案与解析
- 试题难度:一般
- 知识点:嵌入式软件程序设计>嵌入式程序设计>面向过程的语言
- 试题答案:
【问题1】,
①a |=BIT5
②a &=~BIT5
【问题2】
出错原因:
在宏定义中,参数a使用两次,而在引用宏时,使用了i++,从而导致出错。
①i
②i++或i=i+1或++i或i+=1
【问题3】
第一次输出:0x1234,0x12
第二次输出:0x12345555,0x12
第三次输出:0x 12aa5555,0x5555 - 试题解析:
【问题1】
根据define BIT5 (0X01 <<5) ,宏定义的是将0x01左移5位,为0001 0000。在函数set_bit5中,用位或赋值操作(|=)设置变量a的第5位,在函数clear_bit5中,用位与赋值操作(&=)清除变量a的第5位。所以,用a | = BIT5将a的第5位置1,其他位不变,a &=~BIT5将a的第5位置0,其他位不变。
【问题2】
在C语言中采用命令 #define 来定义宏。该命令允许把一个名称指定成任何所需的文本,例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉。
将宏替换后,计算平方的语句为result=SQUARE((i++) * (i++)),很明显这个语句是错误的,因为i++执行了2次,结构肯定是会不正确的。
【问题3】
小端模式是指数据的高位保存在内存的高地址中,而数据的低位则保存在内存的低地址中。
大端模式是指数据的高位保存在内存的低地址中,而数据的低位,保存在内存的高地址中,地址由小向大增加,而数据从高位往低位放。