阅读下列说明,回答问题1至问题3,将答案填入答题纸的对应栏内。 【说明】 某公司承接了一个数据处理模块的项目,由沈工负责模块的方案设计,沈工的设计方案如图4-1所示。该数据处理模块以PowerPC处理器为核心,设计了存储器、以太网、温度传感器、调试

admin2017-11-27  33

问题 阅读下列说明,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
    某公司承接了一个数据处理模块的项目,由沈工负责模块的方案设计,沈工的设计方案如图4-1所示。该数据处理模块以PowerPC处理器为核心,设计了存储器、以太网、温度传感器、调试接口等功能电路。
    处理器外接FLASH存储器用于存储上电初始化程序和应用程序。处理器通过12C接口连接测温电路,监控模块的工作温度。以太网、串口、调试离散量等用于软件调试和状态显示。
    测温电路选用ADT7461AR芯片,用于测试模块温度。ADT7461AR是一个双通道数字温度计,工作电压3v至5v,具有低/超温报警功能,采用IzC接口实现主机对远程/本地温度数据的采集,采集数据存储在高/低两个数据寄存器中,每个寄存器为16位,高寄存器表示整数值,低寄存器表示小数值。

   存储模块采用某公司的FLASH存储芯片。支持编程、擦除、复位等操作命令。该FLASH芯片的常用命令序列如表4-1所示。表中的地址和数据皆为16进制数。

该嵌入式系统对处理的性能要求较高,沈工在完成软件设计后,需要对每一个函数的执行性能进行测试,检测其是否满足系统设计的要求。沈工通过PowerPC处理器内部的高精度时钟寄存器(TimeBase)进行计时,该寄存器由高低两个32位的寄存器组成,根据总线频率自动递增,当低32位寄存器递增到0xFFFFFFFF时,向高32位寄存器进位。计数值可以换算成时间值,精确到微秒级。
    在功能函数functionlO的执行体前后,进行时间统计,最后计算出该函数的执行时间值,请在(1)~(2)处将对应的C语言代码补全。
    S truct timeBase
    {
    uns igned int upper;
    unsigned int lower;
    };
Void function1(Void)
    {   
    struct timeBase tb0,tb1,tb2;
    long  Value;
    /*获取TimeBase寄存器中的计数值*/
    TimeBaseGet(&tb0.upper,&tb0.lower);/
    /*
    函数执行体….
    */
    /*再次获取TimeBase寄存器中的计数值*/
    TimeBaseGet(&tb1.upper,&tbl.lower);
    tb2.upper=tb1.upper—tb0.upper;
    /*当低32位计数值未反转,则直接进行计算,否则需借用高位进行计算*/
    if  (  tb1.lower  >=  tb0.lower  )
    {
    tb2.lower=(1);
    }
    else
    {
    tb2.upper一=1;
    tb2.lower=(2);
    }
    /*根据总线频率,将时钟节拍转换为时间值*/
    value=CountToUs  (tb2);
    printf(”%s cost time%dus.\n”,__function__,Value);
  }

选项

答案(1)tb1.lower-tb0.lower (2)0xFFFFFFFF-tb0.lower+tb1.lower+1

解析 Power Architecture的处理器提供了一个名为Time Base(TB)的计数寄存器,它用来记录系统时间。TB寄存器会以一种依赖于实现的总线频率周期性地增加,这个频率可能不是恒定的。操作系统(OS)要负责确定更新频率是否发生了变化,以及对内部结构进行必要的调整,从而将计数值换算为绝对时间值。一般TB寄存器的计时精度可以达到微妙级。
    本项目中用一个包含高低两个32位整型数的结构体来存储TB寄存器的值。当低32位寄存器发生溢出时,处理器会自动向高32寄存器加1。通过插桩的方式测量函数的执行时间时,需要在功能函数functionl()的执行体前后,分别两次获取TB寄存器的值,最后计算两次的差值,即为该函数的执行时间值。本题中tb0为函数进入时的TB值,tb1为函数退出前的TB值,tb2为tb1和tb0的差值,即函数的执行时间。
    当tb1的低32位大于等于tb0的低32位时,tb2的高位等于tb1的高位与tb0的高位的差值,tb2的低位等于tb1的低位与tb0的低位的差值。
    当tb1的低32位小于tb0的低32位时,则需借用高位进行计算。tb2的高位等于tb1高位与tb0高位的差值再减1,tb2的低位等于0xFFFFFFFF-tb0的低位+tb1的低位再加1。
转载请注明原文地址:https://kaotiyun.com/show/5QWZ777K
0

相关试题推荐
最新回复(0)