1、嵌入式系统设计师-69 及答案解析(总分:30.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读以下说明,回答下列问题。 说明 在某嵌入式处理器上,编写以下两段程序(编译选项中,存储采用 4字节对齐方式)。 程序段 1: struct student1 char name10; long sno; char sex; float score4; *p1, a1, b1; 程序段 2: union student2 char name10; long sno; char sex; float score4; *p2, a2, b2; 汉诺塔问题说明:有 n个盘子在 A处
2、,盘子从小到大,最上面的盘子最小,程序要把这 n个盘子从 A处搬到 C处,可以在 B处暂存,但任何时候都不能出现大的盘子压在小的盘子上面的情况。 下列是一段求解汉诺塔问题的 C语言程序。 #include stdio.h void move(int n, char a, char c) static int Step=1; printf(“Step %2d: Disk %d %c- %cn“,Step,n,a,c); Step+; void Hanoi(int n, char a, char b, char c) if (n1) Hanoi(n-1, a, c, b); move(n, a,
3、c); Hanoi(n-1, b, a, c) ; else move(n, a, c); void main() Hanoi(3,“A“, “B“, “C“); (分数:15.00)(1).C语言函数的一般格式为: 函数类型 函数名 (参数列表) 函数体; 简答下述问题。 (1)函数类型的含义是什么? (2)参数列表的含义是什么? (3)C语言函数之间的参数如何传递?(分数:5.00)_(2).回答问题。 (1)sizeof(struct student1)结果是多少? (2)sizeof(union student2)结果是多少? (3)变量 a2在程序段 2中定义,写出执行以下语句后的输
4、出结果。 strcpy(a2. name, “zhangwei“); a2. Sex=“f“; printf(“%s“, a2.name);(分数:5.00)_(3).仔细阅读求解汉诺塔问题的 C语言程序,完成其中空白填空。 运行结果为: Step 1:Disk 1 A-C Step 2:_ Step 3:Disk 1 C-B Step 4:_ Step 5:_ Step 6:Disk 2 B-C Step 7:_(分数:5.00)_二、试题二(总题数:1,分数:15.00)阅读以下关于某嵌入式系统 BIT的说明,回答下列问题。 说明 某公司负责研制一个嵌入式计算机系统,如图 1所示。该系统以
5、 PowerPC处理器为核心,通过 AD进行实时数据采集,并将采集来的数据进行预处理后,通过 RS422总线发送给后端计算中心。 (分数:15.00)(1).王工负责对该系统进行故障模式分析,识别出了该系统可能出现的故障模式,如表 1所示。请将属于CPU和 RAM的故障找出来。 表 1 某嵌入式系统的故障列表 序 号 故障列表 1 存储单元无法访问 2 指令译码故障 3 发送寄存器有固定位错误 4 浮点处理单元故障 5 不可编程与阵列故障 6 存储单元一直为 0或 1 7 逻辑物理地址转换错 8 输入电压超出精度范围 9 数据校验错 (分数:5.00)_(2).王工设计了三种 BIT测试程序,
6、分别是上电 BIT、周期 BIT、维护 BIT。运行流程如图 2所示。 (分数:5.00)_(3).李工负责设计 CPU单元的 BIT测试算法,通过对每组指令分别设计一组测试用例,定义不同的操作数、操作码和预期值,在指令运行后比较结果与预期值。由于该系统选用的处理器集成了多级 Cache(高速缓存),并且指令缓存和数据缓存是分开的,执行指令功能测试前需要刷新指令 Cache,以保证与内存中的测试代码一致。每个测试项的测试结果正确为 0,故障为 1。 以 32位字比较指令 cmpw测试为例,cmpw 将寄存器 rA和 rB内数据比较的结果(大于、小于、等于)放入条件寄存器 crx,其操作码为 0
7、x7C000000,测试用例数据如表 2所示。 表 2 字比较指令 cmpw测试用例数据 用例输入 cmpw 操作码 操作数 Ra 操作数 rB 预期输出 用例 1 Ox7C000000 123 123 0x02 用例 2 0x7C000000 123 133 0x08 用例 3 0x7C000000 123 113 0x04 cmpw指令功能测试的算法流程示意如图 3所示。请补全流程图 3中的执行操作。 (分数:5.00)_嵌入式系统设计师-69 答案解析(总分:30.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读以下说明,回答下列问题。 说明 在某嵌入式处理器上
8、,编写以下两段程序(编译选项中,存储采用 4字节对齐方式)。 程序段 1: struct student1 char name10; long sno; char sex; float score4; *p1, a1, b1; 程序段 2: union student2 char name10; long sno; char sex; float score4; *p2, a2, b2; 汉诺塔问题说明:有 n个盘子在 A处,盘子从小到大,最上面的盘子最小,程序要把这 n个盘子从 A处搬到 C处,可以在 B处暂存,但任何时候都不能出现大的盘子压在小的盘子上面的情况。 下列是一段求解汉诺塔问题的
9、 C语言程序。 #include stdio.h void move(int n, char a, char c) static int Step=1; printf(“Step %2d: Disk %d %c- %cn“,Step,n,a,c); Step+; void Hanoi(int n, char a, char b, char c) if (n1) Hanoi(n-1, a, c, b); move(n, a, c); Hanoi(n-1, b, a, c) ; else move(n, a, c); void main() Hanoi(3,“A“, “B“, “C“); (分数:
10、15.00)(1).C语言函数的一般格式为: 函数类型 函数名 (参数列表) 函数体; 简答下述问题。 (1)函数类型的含义是什么? (2)参数列表的含义是什么? (3)C语言函数之间的参数如何传递?(分数:5.00)_正确答案:()解析:(1)的含义是:函数返回值的类型,无返回值时应写为 void。 (2)的含义是:函数的接口参数,可以为空,即表示没有参数,但函数名后面的()不能省略。 (3)C语言函数之间的参数传递是传值,是通过栈来传递的。 本题考查 C语言应用知识。 C语言函数的一般格式为: 函数类型 函数名 (参数列表) 函数体; 其中函数类型为函数返回值的类型,无返回值时应写 voi
11、d;参数列表为函数的接口参数,可以为空,即表示没有参数,但函数名后面的()不能省略。 C语言函数之间的参数传递是传值,是通过栈来传递的。调用时所有参数在栈中新开辟相应类型的单元并将实参值填入,函数中对参数的任何操作都是对栈中单元的操作,调用结束,栈中开辟的相应单元都会释放,并不影响实参变量的值。(2).回答问题。 (1)sizeof(struct student1)结果是多少? (2)sizeof(union student2)结果是多少? (3)变量 a2在程序段 2中定义,写出执行以下语句后的输出结果。 strcpy(a2. name, “zhangwei“); a2. Sex=“f“;
12、printf(“%s“, a2.name);(分数:5.00)_正确答案:()解析:(1)sizeof(struct student1)结果为:31 (2)sizeof(union student2)结果为:16 (3)执行语句后的结果为:“fhangwei” student1 是一个结构体,sizeof(struct student1)结果为所有元素字节数之和,因此 sizeof(struct student1)结果为:10+4+1+16=31 字节。 student2是联合体(或共用体),sizeof(union student2)结果为其中最长一个元素的字节数。因此sizeof(unio
13、n student2)结果为:16 字节。 变量 a2在程序段 2中定义,执行以下语句: strcpy(a2. name, “zhangwei“); a2. sex=“f“; printf(“%s“, a2. name); 结果为:“fhangwei“(3).仔细阅读求解汉诺塔问题的 C语言程序,完成其中空白填空。 运行结果为: Step 1:Disk 1 A-C Step 2:_ Step 3:Disk 1 C-B Step 4:_ Step 5:_ Step 6:Disk 2 B-C Step 7:_(分数:5.00)_正确答案:()解析:Disk 2 A-B Disk 3 A-C Dis
14、k 1 B-A Disk 1 A-C 汉诺塔问题是指有 n个盘子在 A处,盘子从大到小,最上面的盘子最小,现在要把这 n个盘子从 A出搬到 C处,可以在 B处暂存,但任何时候不能出现大的盘子压在小的盘子上面的情况。算法如下: (1)若 n=1,则可以将盘子直接从 A处搬到 C处; (2)假设 n-1时,指导如何解; (3)则 n时,根据(2)的假设,可以先把前 n-1个盘子从 A处通过 C处搬到 B处,就可以把第 n个盘子直接从 A处搬到 C处,再把前 n-1个盘子从 B处通过 A处搬到 C处,则完成了全部盘子搬动。 因此,运行结果为: Step 1:Disk 1 A-C Step 2:Dis
15、k 2 A-B Step 3:Disk 1 C-B Step 4:Disk 3 A-C Step 5:Disk 1 B-A Step 6:Disk 2 B-C Step 7:Disk 1 A-C二、试题二(总题数:1,分数:15.00)阅读以下关于某嵌入式系统 BIT的说明,回答下列问题。 说明 某公司负责研制一个嵌入式计算机系统,如图 1所示。该系统以 PowerPC处理器为核心,通过 AD进行实时数据采集,并将采集来的数据进行预处理后,通过 RS422总线发送给后端计算中心。 (分数:15.00)(1).王工负责对该系统进行故障模式分析,识别出了该系统可能出现的故障模式,如表 1所示。请将
16、属于CPU和 RAM的故障找出来。 表 1 某嵌入式系统的故障列表 序 号 故障列表 1 存储单元无法访问 2 指令译码故障 3 发送寄存器有固定位错误 4 浮点处理单元故障 5 不可编程与阵列故障 6 存储单元一直为0或 1 7 逻辑物理地址转换错 8 输入电压超出精度范围 9 数据校验错 (分数:5.00)_正确答案:()解析:CPU 故障:2,4,7 RAM故障:1,6,9 本题考查嵌入式系统中为提高产品的安全性和可靠性,广泛采用的机内自测试(Built In Test, BIT)技术的相关知识。 产品的可测试性与安全性和可靠性具有密切的关系,在制定故障诊断方案、分配测试性需求时,都以故
17、障模式及影响分析(FMEA)的结果为基础。故障是指产品已处于一种不合格的状态,是对产品正确状态的任何一种可识别的偏离,而这种偏离对特定使用者要求来说是不合格的,已经不能完成其规定的功能。 对于电路系统来说,它的元器件由于一些物理或化学上的因素,使得其元件违反技术规定,无法正常工作时,称元件存在着缺陷,如元件的损坏、虚焊、短路、开路、漏电、老化等。有缺陷的元件、信号线断路、信号线对电源线或地线短路、信号线之间短路或延迟时间太长以及外界电磁干扰等因素都会造成电路故障,并且违背设计原则也能引起电路故障。 CPU常见故障类型有: 1寄存器译码功能故障; 2数据存储模块故障; 3数据传输模块故障,是指在
18、 CPU内部各条传输信号线上发生的故障,在执行传输指令时,指令传输通道中某条信号线发生固定“0”或固定“1”故障; 4数据处理模块故障,包括: a)整型和浮点型的加法、减法、乘法、除法操作发生故障,造成算术运算结果出错; b)进位标志、辅助进位标志无法正常复位和置位; c)或、与、非等逻辑操作发生故障,造成逻辑运算结果出错; d)布尔操作发生故障,造成“位”操作结果出错。 5指令译码和指令序列的译码故障; 6Cache 故障; 7MMU 单元中逻辑物理地址转换错。 RAM的常见故障类型有: 1固定故障(stuck-at faults),存储单元 i的值固定为“0”或“1”; 2跳变故障(tra
19、nsition faults),存储单元 i在没有受到另外一个单元的组合故障的影响或者是存储单元 i本身的写操作,存储单元直接发生了跳变; 3组合故障(coupling faults),由于存储单元 i中的写操作导致存储单元 j中的值的变化; 4地址译码故障(Address decoder fauks),用来选择存储单元的译码器发生了故障; 5数据保持故障(dataretention faults),指的是存储单元在一定的时间内不能保持其逻辑值不变。(2).王工设计了三种 BIT测试程序,分别是上电 BIT、周期 BIT、维护 BIT。运行流程如图 2所示。 (分数:5.00)_正确答案:()
20、解析:(1)周期 BIT (2)维护 BIT (3)上电 BIT BIT根据运行的时机和目的不同,分为多种类型,如上电 BIT、周期 BIT、维护 BIT。 上电 BIT在系统加电引导过程中完成,确保了待测设备单元在使用前都被测试。 周期 BIT负责检测和隔离系统运行中的故障和异常,并记录了故障的发生与持续时间。它要求在任务期间执行但不影响和破坏任务的正常运行。 维护 BIT在任务停止的时候被执行,具有最完备的测试用例集合,可用于某些疑难故障的检测和隔离。(3).李工负责设计 CPU单元的 BIT测试算法,通过对每组指令分别设计一组测试用例,定义不同的操作数、操作码和预期值,在指令运行后比较结
21、果与预期值。由于该系统选用的处理器集成了多级 Cache(高速缓存),并且指令缓存和数据缓存是分开的,执行指令功能测试前需要刷新指令 Cache,以保证与内存中的测试代码一致。每个测试项的测试结果正确为 0,故障为 1。 以 32位字比较指令 cmpw测试为例,cmpw 将寄存器 rA和 rB内数据比较的结果(大于、小于、等于)放入条件寄存器 crx,其操作码为 0x7C000000,测试用例数据如表 2所示。 表 2 字比较指令 cmpw测试用例数据 用例输入 cmpw 操作码操作数Ra 操作数rB 预期输出用例1 Ox7C0123 123 0x02 00000 用例2 0x7C000000
22、 123 133 0x08 用例3 0x7C000000 123 113 0x04 cmpw指令功能测试的算法流程示意如图 3所示。请补全流程图 3中的执行操作。 (分数:5.00)_正确答案:()解析:(1)刷新指令 Cache(高速缓存) (2)将 res与测试用例表中的预期结果进行比较 (3)测试结果 ret=1 根据 cmpw指令功能测试的算法流程示意图,结合题干中的描述信息,可以得出该测试算法的流程如下: a)初始化测试结果为正确; b)从测试用例表中获取一个测试用例数据; c)根据测试用例动态生成测试过程汇编代码; d)由于该系统选用的处理器集成了多级 Cache(高速缓存),并且指令缓存和数据缓存是分开的,执行指令功能测试前需要刷新指令 Cache,以保证与内存中的测试代码一致; e)执行测试过程,比较测试用例中的两个操作数,并返回比较结果; f)将测试用例执行的结果与测试用例表中的预期结果进行比较,判断是否相等; g)如果相等,继续从测试用例表中获取下一个测试用例数据,进行执行,直至全部执行完所有测试用例; h)如果不相等,则置测试结果为故障; i)返回测试结果。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1