问答题 .阅读下列说明,回答下列问题
    【说明】
    某直升机的显示控制计算机是其座舱显控系统的核心部件,将来自飞行员的参数和控制命令与载机的飞行参数信息进行融合处理后,在显示器上显示。该显示控制计算机由一个显示控制单元和一个输入输出单元组成,它们之间通过双口RAM进行数据交换,如下图所示。
   
问答题 1.  【问题1】
    系统FLASH存储器的存储容量是8MB,用于存储CPU模块引导程序、BIT测试程序,FLASH在板编程程序,网口操作系统,用户程序。系统FLASH地址分配在存储空间的高端,地址空间为______~0xFFFFFFFF。
    用户FLASH存储器的存储容量是为______,用于记录数据的存储。FLASH地址分配在存储空间的高端,地址空间为0x78000000~0x7BFFFFFF。
    SDRAM的存储容量是256MB,用于运行操作系统和应用软件,地址空间位于存储器的低端0x00000000~______。
    请完成以上填空,并将答案填写在对应栏中。
【正确答案】0xFF800000或者FF800000H
   64MB
   0x0FFFFFFF或者0FFFFFFFH
【答案解析】
问答题 2.  【问题2】
    根据ARINC429数据的标号(D8-D1)可知该数据为高度表数据。根据系统定义,高度表数据的分辨率为0.1米,即D9为1表示0.1米,D10为1表示0.2米,D11为1表示0.4米,依此类推。
    若接收数据帧中D28-D9位是0000.0000.0111.1101.0000,则当前的高度是______米。
    若当前的高度是100米,则数据帧中D28-D9位应为______。
    请完成上边的填空,并将答案填写对应栏中。
【正确答案】200
   0000.0000.0011.1110.1000
【答案解析】
问答题 3.  【问题3】
    显示控制单元和输入输出单元通过双口交换信息,两个处理器上的软件采用相固定义的结构体来定义双口单元,方便交换信息。以下是双口结构体定义:
    typedef struct
    {
    char ctrlWord;    /*通道工作方式控制字*/
    char head;    /*FIFO控制头指针*/
    char tail;    /*FIFO控制尾指针*/
    short fifo [32];    /*FIFO缓冲区*/
    }SPM_CHAN_RX429;    /*ARINC429接收通道定义*/
    为了避免由于不同的编译环境对上述数据结构产生不同的编译结果,建议对上述数据结构通过设置紧缩属性(packed属性),强迫编译器采用字节对齐方式,在该模式下,SPM_CHAN_RX429结构体占用______字节的存储空间。
    ARINC429接收通道设计为由一个首尾相连的FIFO数组形成的环形队列。输入输出单元根据头指针向环形队列写入数据,头指针始终指向下一个要写入的位置,并且限制写入数据最多为31个,即队尾与队首之间至少保留一个元素的空间。
    显示控制单元根据尾指针从环形队列读取数据,尾指针始终指向下一个要读取的位置。初始化环形队列的C语言为:
    SPM_CHAN_RX429 *pBuf;
    pBuf=(SPM_CHAN_RX429*)ADDR_DRAM_PPC;    /*双口地址的宏定义*/
    pBuf->ctrlWord=0;
    pBuf->head=0;
    pBuf->tail=0;
    判断队列为空的C语言为______。
    判断队列为满的C语言为______。
    请完成上边的填空,并将答案填写在对应栏中。
【正确答案】67
   pBuf->head==pBuf->tail
   pBuf->tail==(pBuf->head+1)%32
【答案解析】 本题考查嵌入式系统中计算机存储容量、ARINC429数据解算、环形队列等方面的相关知识。
   【问题1】
   存储容量是指计算机存储器所能存储的二进制信息的总量,它反映了计算机处理信息时容纳数据量的能力。存储容量以字节为单位,每1024字节称为“1KB”,每1024KB字节称为“1MB”,每1024MB字节称为“1GB”。因此,计算机的内存存储容量的计量单位是字节。
   系统FLASH存储器的存储容量是8MB,二进制表示为0x800000,地址分配在存储空间的高端,地址空间为0xFF800000_~0xFFFFFFFF。
   用户FLASH存储器的地址空间为0x78000000~0x7BFFFFFF,存储容量是为0x4000000,即64MB。
   SDRAM的存储容量是256MB,二进制表示为0x10000000,地址分配在存储空间的低端,地址空间为0x00000000~0x0FFFFFFF。
   【问题2】
   ARINC429总线协议是美国航空电子工程委员会(Airlines Engineering Committee)于1977年7月提出的,并于同年同月发表并获得批准使用。它的全称是数字式信息传输系统DITS。协议标准规定了航空电子设备及有关系统间的数字信息传输要求。ARNC429广泛应用在先进的民航客机中,如B-737、B757、B-767,它采用异步双极性归零码进行数据的编码,并通过双绞线传输,具有很强的抗干扰性能。
   ARINC429数据总线协议规定一个数据字由32位组成,一个32位的数据字由五部分组成:
   1.标志位(LABEL),用于标识传输数据的信息类型;
   2.源/目的标识码(S/D),用于判断在一个多系统中的源系统;
   3.数据区(DATA);
   4.符号/状态位(SSM),用于标识数据字的特征或数据发生器的状态;
   5.奇偶校验位(PARITY),ARINC429数字信息传输使用奇校验。
   本题中接收数据帧的D28-D9位是数据区,二进制为0000.0000.0111.1101.0000,即2000。根据系统定义,高度表数据的分辨率为0.1米,即D9为1表示0.1米,则当前的高度是2000*0.1=200米。
   反之,若当前的高度是100米,则数据帧中数据区的值应为100/0.1=1000,则D28-D9位应为0000.0000.0011.1110.1000。
   【问题3】
   在C语言中,结构体(struct)是一种聚合数据类型(aggregate data type)。根据不同编译器以及编译选项的属性,系统为它分配的存储空间会有所不同,在存储该结构体时会按照不同的内存对齐规则进行相关处理。本题中为了避免由于不同的编译环境对数据结构产生不同的编译结果,采用了紧缩属性强迫编译器按照字节对齐方式,在该模式下,SPM_CHAN_RX429结构体占用的存储空间为1+1+1+32*2=67。
   环形队列是在工程应用中使用极为广泛的数据结构,它是一个首尾相连的FIFO的数据结构,具有较多优点:数据组织简单,能很快知道队列是否满为空;能以很快速度的来存取数据。因为有简单高效的原因,甚至在硬件都实现了环形队列。内存上没有环形的结构,因此环形队列实际上是用数组的线性空间来实现。并将数组元素fifo[0]与fifo[MAXN-1]连接,形成一个存放队列的环形空间。为了方便读写,还要用数组下标来指明队列的读写位置,定义Head/tail两个变量,分别指向可以读的位置和可以写的位置。
   环形队列的关键是判断队列为空还是为满。本题中限制写入数据最多为31个,即队尾与队首之间至少保留一个元素的空间,即当读写指针相同时,表示队列为空,当写指针+1等于读指针时,表示队列为满。
   实际使用中,还要考虑当数据到了尾部如何处理,它将转回到0位置来,通过数组下标索引取模操作(Index% MAXN)来实现的。