试题一(共 15分)
阅读以下关于某嵌入式系统设计方案的叙述,回答问题 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】
(1)(5分)此 A/D 变换器的量化间隔为多少 mV(量化间隔为 A/D 变换器最低有效位 1 位所代表的模拟电压值)?
(2)如果规定下限阈值为 4.092V,要使用中断检测这个电压,此时 A/D 变换器的比较寄存器应为多少?
(3)如果采用查询方式实现电源电压超限报警功能,程序如何判断 A/D 变换器完成了单次数据转换?
【问题2】(5分)
李工负责该系统软件的研发。在软件策划过程中,为了加快软件的开发,确保进度,李工将软件分解为若干软件配置项,每个软件配置项指定一人开发。每个配置项的开发过程包括:软件需求分析、软件概要设计、软件详细设计、软件编码、软件单元测试和部件级测试六个阶段。李工的做法符合软件工程的要求吗?为什么?
【问题3】(5分)
田工负责编写信号处理模块与数据处理模块2 的通信程序,约定好的数据组织方式如表1-1所示。

以下是信号处理模块端的一段程序:
unsigned int msgid= 0x01; // 表示从信号处理模块发送到数据处理模块 2 的消息 ID
typedef struct FCSND_Data_struct{
unsigned char A;
unsigned int B;
unsigned short C;
unsigned char D[16];
} FCSND_DATA;
FCSND_ DATA send Data;
……
……
FillfcData(&sendData); //将待发送数据赋值到 sendData 数据结构中
sendfc((msgid, &sendData, sizeof(FCSND_DATA)); //发送数据
以下是数据处理模块2端的一段程序:
unsigned int msgid= 0x00; //接收到的消息 ID
typedef struct FCRCV_Data_struct{
unsigned char A;
unsigned int B;
unsigned short C;
unsigned char D[16];
} FCRCV_DATA;
FCRCV_DATA recvData;
……
……
recvfc((msgid, &recvData, sizeof(FCRCV _DATA));//接收数据
请问以上程序是否存在问题?如果存在问题,请分析原因。