201111嵌入式下午真题
第 1 题
阅读以下关于某嵌入式系统设计方案的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
某公司承接了开发周期为6个月的某机载嵌入式系统软件的研制任务。该机载嵌入式系统硬件由数据处理模块、大容量模块、信号处理模块、FC网络交换模块和电源模块组成,如图1-1所示。数据处理模块和大容量模块的处理器为PowerPC7447,数据处理模块主要对机载数据进行处理,完成数据融合;大容量模块主要存储系统数据,同时也有数据处理的能力:信号处理模块的处理器为专用的数字信号处理器DSP,完成雷达数据处理,并将处理后的数据发送给数据处理模块;FC网络交换模块为已开发的模块,本次不需要开发软件,主要负责系统的数据交换;电源模块主要负责给其他模块供电,电源模块上没有软件。
PowerPC7447和DSP是32位处理器,内存按字节编址。PowerPC7447以大端方式(big endian)存储数据,DSP以小端方式(little_endian)存储数据。
【问题1】(5分)
在数据处理模块1中,需要使用A/D变换器对外部电源模块的电压进行检测。当前数据处理模块中的A/D变换器为10位,当A/D变换器的输入模拟电压最大为5.115V时,A/D输出为3FFH。
通过配置A/D变换器的中断寄存器及比较寄存器(比较寄存器的值是用来和A/D转换结果进行比较),可以将A/D变换器配置为输入电压大于一定值时产生中断,也可以配置为输入电压小于一定值时产生中断,通过此种方式向系统报警。
请回答以下三个问题。
(1)此A/D变换器的量化间隔为多少mV?(量化间隔为A/D变换器最低有效位1位所代表的模拟电压值)
(2)如果规定下限阈值为4.092V,要使用中断检测这个电压,此时A/D变换器的比较寄存器应配置为多少?
(3)如果采用查询方式实现电源电压超限报警功能,程序如何判断A/D变换器完成了单次数据转换?
【问题2】(5分)
李工负责该系统软件的研发。在软件策划过程中,为了加快软件的开发,确保进度,李工将软件分解为若干软件配置项,每个软件配置项指定一人开发。每个配置项的开发过程包括:软件需求分析、软件概要设计、软件详细设计、软件编码、软件单元测试和部件级测试六个阶段。李工的做法符合软件工程的要求吗?为什么?
【问题3】(5分)
田工负责编写信号处理模块与数据处理模块的通信程序,约定好的数据组织方式如表1-1所示。
以下是信号处理模块端的一段程序:
以下是数据处理模块2端的一段程序:
请问以上程序是否存在问题?如果存在问题,请分析原因。
答案与解析
- 试题难度:一般
- 知识点:嵌入式系统输入输出设备>其它
- 试题答案:
【问题1】
(1)5mV
(2)0x332,或818
(3)通过查询状态寄存器的对应状态位判断
【问题2】
李工的安排不合理。
软件开发和软件测试不能为同一个人。
一般情况下,每个软件配置项的软件需求分析、软件设计与编码、软件测试的人员需要分开,不能由一人全部完成,以确保软件的质量。
【问题3】
有问题。
(1)数据结构定义有边界对齐问题;
(2)接收和发送端的处理程序没有对大小端转换进行处理。 - 试题解析:
本题考查嵌入式系统设计基础知识和软件工程知识的综合应用。
第 2 题
阅读以下关于某嵌入式处理器和8255的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
图2-1为使用某嵌入式处理器和8255对打印机进行控制的电路图,其中8255的中断请求PC3接到处理器的中断请求输入端元上,打印机的数据口接在8255的PA0~PA7上,打印机的输出电平接在8255的PC6上。
为了使用嵌入式处理器对打印机进行控制,在程序设计时,需要将8255的PA口设置为工作方式1;PB口设置在工作方式0,配置为输入;PC口的PC0、PC1、PC2、PC3和PC4定义为输出。
为了在打印机输出为低电平时通过8255的PC3产生有效的中断请求信号INTRA,必须使得A口的中断请求使能,实际上就是通过C口的按位复位操作将PC6置1,整个程序分为四部分:依次是8255的初始化,嵌入式处理器的中断初始化,嵌入式处理器的主程序和打印字符的中断处理程序。其中8255的端口配置功能如表2-1所示。嵌入式处理器的中断使能控制字含义如表2-2所示,该处理器的典型汇编指令如表2-3所示。
EA:全部中断,0=关中断,1 =开中断
ES:串口中断,0=关中断,1=开中断
ET1:定时器1中断,0=关中断,1=开中断
EX1:外部INT1中断,0=关中断,1=开中断
ET0:定时器0中断,0=关中断,1=开中断
EX0:外部INT0中断,0=关中断,1=开中断
【问题1】(6分)
根据图2-1所示,通过嵌入式处理器访问8255的PA口、PB口和PC口对应的地址分别是什么?(请用十六进制描述)
对应的地址:
PA口:(1)
PB口:(2)
PC口:(3)
【问题2】(4分)
在嵌入式处理器的汇编语言中,最简单的指令寻址方式为立即寻址和直接寻址,请回答下面两个汇编语言语句所描述的含义,将答案填写在答题纸的对应栏中。
MOV A,#3AH:(1)
MOV R4,3AH:(2)
【问题3】(5分)
以下汇编程序用于打印机输出控制,请将下面汇编程序的空(1)~(5)补充完整,并将解答填入答题纸的对应栏中。
答案与解析
- 试题难度:一般
- 知识点:嵌入式硬件设计>其它
- 试题答案:
【问题1】
(1)8000H(2)8001H(3)8002H
【问题2】
(1)将3AH立即数传送到A中
(2)将3AH存储单元的内容传送到R4中
【问题3】
(1)#09FH
(2)@R0
(3)20H
(4)#09EH
(5)R0 - 试题解析:
本题考查嵌入式处理器硬件及汇编语言相关知识。在案例题中,汇编语言的相关知识考的概率比较低,现在都是以C语言考查为主。
汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。汇编程序是系统软件中用于进行语言处理的系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
第 3 题
阅读以下关于嵌入式软件测试用例设计的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
某程序段的流程如图3-1所示,x、y是两个变量,K、J表示一段程序执行体,表3-1所示为本题可供选择的四组测试用例组。
【问题1】(3分)
简答以下问题。
(1)条件覆盖的含义是什么?
(2)路径覆盖的含义是什么?
【问题2】(2分)
在程序测试用例设计中,有语句覆盖、条件覆盖、判定覆盖(分支覆盖)和路径覆盖等。其中,( )是最强的覆盖准则。
请把以下4个选项中正确的选项序号填入上述空白处。
①语句覆盖
②条件覆盖
③判定覆盖(分支覆盖)
④路径覆盖
【问题3】(10分)
为了对图3-1所示的程序段进行覆盖测试,必须适当地选取测试用例组。实现判定覆盖至少应采用的测试用例组是(1)和(2),实现条件覆盖至少应采用的测试用例组是(3);实现路径覆盖至少应采用的测试用例组是(4)和(5)。
请把以下8个选项中正确的选项序号填入上述空白处。
①测试用例组Ⅰ和Ⅱ
②测试用例组Ⅱ和Ⅲ
③测试用例组Ⅲ和Ⅳ
④测试用例组Ⅰ和Ⅳ
⑤测试用例组Ⅰ、Ⅱ和Ⅲ
⑥测试用例组Ⅱ、Ⅲ和Ⅳ
⑦测试用例组Ⅰ、Ⅲ和Ⅳ
⑧测试用例组Ⅰ、Ⅱ和Ⅳ
答案与解析
- 试题难度:一般
- 知识点:嵌入式系统实施知识>软件测试
- 试题答案:
【问题1】
(1)条件覆盖是指设计足够的测试用例,使得被测程序每一个判定中的每个条件的所有可能结果至少出现一次。
(2)路径覆盖是指设计足够的测试用例,使得被测程序中每条路径至少执行一次。
【问题2】
(1)④(路径覆盖)
【问题3】
(1)⑤(2)⑧(3)⑦(4)⑤(5)⑧
其中,第(1)、(2)题的答案顺序可互换,第(4)、(5)题的答案顺序可互换。 - 试题解析:
本题考查软件测试的基本知识。
1.语句覆盖
设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。在本例中,可执行语句是指语句块1到语句块4中的语句。
2.判定覆盖
设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
3.条件覆盖
设计足够多的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次。
4.条件判定覆盖
设计足够多的测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。
5.条件组合覆盖
设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少被满足一次。
6.路径覆盖
设计足够多的测试用例,使得被测试程序中的每条路径至少被覆盖一次。
7.修正条件判定覆盖
要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。
第 4 题
阅读以下关于中断的叙述,回答问题1至问题4,将答案填入答题纸的对应栏内。
【说明】
在某嵌入式系统中,王工设计的计算机模块如图4-1所示。它要求CPU在执行完当前指令后转而对中断请求进行处理。假定:TDC为查询链中每个设备的延迟时间,Ta、Tb、Tc分别为设备A、B、C的中断服务程序所需的执行时间,TS和TR为保存现场和恢复现场所需的时间。
【问题1】(2分)
一般计算机系统根据对中断处理的策略不同,可分为单级中断系统和多级中断系统。本项目中王工设计的系统属于哪一类中断系统?请将设备A、设备B、设备C三个设备的中断优先级按照从高到低的次序排列。
【问题2】(5分)
本系统不允许中断嵌套,如果CPU响应中断,则中断处理过程按照如下流程执行,将(1)~(5)的内容填入答题纸上相应的位置。
中断处理过程流程:
a)CPU检查响应中断的条件是否满足;
b)如果CPU响应中断,则(1);
c)(2);
d)分析中断原因;
e)(3);
f)退出中断,(4);
g)(5),CPU继续执行。
【问题3】(4分)
当设备A、设备B、设备C同时发出中断请求时,请计算出处理器处理设备A、B、C的时间TA、TB和TC。如果处理三个设备所需要的总时间为T,那么本系统所设计的中断极限频率f是多少?
【问题4】(4分)
嵌入式系统中多用I/O设备管理软件来管理外设。I/O设备管理软件一般分为4层,层次关系和每一层的主要功能说明如图4-2所示。请给出4层软件的名称,将(1)~(4)的内容填入答题纸上相应的位置。
答案与解析
- 试题难度:一般
- 知识点:嵌入式微处理器>其它
- 试题答案:
【问题1】
(1)单级、或单级中断系统
(2)设备C,设备B,设备A。
【问题2】
(1)CPU关中断
(2)保存中断现场
(3)执行中断处理程序
(4)恢复现场
(5)开中断
【问题3】
(1)TA=3TDC +TS+Ta+TR
(2)TB= 2TDC +TS+Tb+TR
(3)TC=TDC+TS+Tc+TR
(4)f=1/T
【问题4】
(1)用户进程或应用程序
(2)设备无关的系统软件或设备管理程序
(3)设备驱动程序
(4)中断处理程序 - 试题解析:
本题考查中断处理相关知识的应用。
本系统不允许中断嵌套,如果CPU响应中断,则中断处理过程按照如下流程执行:
a)CPU检查响应中断的条件是否满足;
b)如果CPU响应中断,则CPU关中断;
c)保存中断现场;
d)分析中断原因;
e)执行中断处理程序;
f)退出中断,恢复现场;
g)开中断,CPU继续执行。
嵌入式系统中多用I/O设备管理软件来管理外设。I/O设备管理软件一般分为4层,层次关系和每一层的主要功能说明如下图所示。
第 5 题
阅读以下关于C语言及C代码的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中:
【C代码1】是李工为了在嵌入式平台上开发一段可变参数函数,在X86平台上实现的一个参数个数可变函数实例。
【C代码2】是王工在编写软件时,自己编写的内存拷贝函数。
【C代码3】是赵工编写的一段数据处理的程序,其中fim( )的含义为从已创建的一个单向链表中查找倒数第index个结点。他的设计思路为:首先创建两个指针ptr2,ptr2,并且都指向链表头,然后ptr1向前走index步,这样ptr1和ptr2之间就间隔index个结点,然后ptr1和ptr2同时向前步进,当ptrl到达最后一个结点时,ptr2就是倒数第index个结点了。ReverseList()为赵工编写的对已有单向链表进行逆序重排的函数。
【问题1】(3分)
执行C代码1后,Sum的值应为多少?请用十进制表示。
【问题2】(7分)
请问C代码2中static的作用是什么?const的作用是什么?王工自己编写的内存拷贝函数安全吗?如存在缺陷,请指出缺陷在哪里。
【问题3】(5分)
仔细阅读并分析C代码3,填补其中的空(1)~(5)。
答案与解析
- 试题难度:一般
- 知识点:嵌入式软件程序设计>嵌入式程序设计>面向过程的语言
- 试题答案:
【问题1】
Sum=6
【问题2】
1)static的作用:是将变量修饰成静态变量,静态变量的存储地址在整个程序的运行执行期间均保留,不会被别的变量占据。
2)const的作用:是用于冻结一个变量,使其值在程序中不能被进一步改变。
3)不安全,有缺陷。
4)应对形参的有效性进行检查,应判形参dest、src指针是否为空,形参n是否大于0,还应保证dest所指向的内存空间不越界。
【问题3】
(1)ptr1=ptr1->next
(2)ptr2=ptr2->next
(3)ptr2
(4)temp2->next = tempi
(5)temp3 - 试题解析:
本题考查嵌入式C语言编程基础知识。
static在C语言中主要是两种用法:
1、修饰局部变量
2、修饰函数和全局变量
static修饰局部变量时该变量是存放在静态存储区,生命周期是整个程序结束。static局部变量初次定义时就要初始化,且只能初始化一次。如果在定义的时候不初始化,编译器就会自动赋值为0;当static修饰全局变量或者函数时,不是为了限制其存储方式,而主要是为了限制该全局变量或者函数的作用域仅限于本文件,所以又称为内部函数。此时,对于外部(全局)变量,不论是否有static限制,它的存储区域都是在静态存储区,生存期都是全局的。此时的static只是起作用域限制作用,限定作用域在本模块(文)内部。
关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,const修饰符有以下的优点:1、预编译指令只是对值进行简单的替换,不能进行类型检查;
2、可以保护被修饰的东西,防止意外修改,增强程序的健壮性;
3、编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。