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

admin2017-11-27  34

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

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

沈工用C语言实现对FLASH的操作,需按照表4-1中定义的命令序列顺序执行即可。仔细阅读下列代码,请在(1)~(4)处将对应的C语言代码补全。
/*定义宏FLASH_BASE_ADDRESS为FLASH芯片的基地址*/:
    #define FLASH_BASE_ADDRESS XXXXXXXX(此处代码略)
    /*定义向FLASH空间写一个命令的宏*/
    #de fine FLASH_WRITE_BYTE(addr,data)XXXXXXXX(此处代码略)
    /*Reset Flash*/
    Void ResetFlash(VOid)
    {
    FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS,0xF0);
    return;
    }
    /*对FLASH的擦除是按扇区进行的,SectorErase函数每次可擦除一个扇区。假设某扇区的偏移地址为offset_addr,下面SectorErase函数体为擦除该扇区的命令序列*/
    void SectorErase(int offset_addr)
    {
    FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x555,0xAA);
    FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+(1),0x55);
    FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x555,(2));
    FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x555,0xAA);
    FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x2AA,0x55);
    FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+(3),(4));
    return;
    }

选项

答案(1)0x2AA (2)0x80 (3)offset_addr (4)0x30

解析 本题中采用的FLASH芯片为NOR FLASH,NOR FLASH是很常见的一种存储芯片,数据掉电不会丢失。NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存储在NOR FLASH上的程序不需要复制到RAM就可以直接运行)。因此,在嵌入式系统中,NOR FLASH很适合作为启动程序的存储介质。NOR FLASH的读取和RAM很类似(只要能够提供数据的地址,数据总线就能够正确的给出数据),但不可以直接进行写操作。对NOR FLASH的写操作需要遵循特定的命令序列,最终由芯片内部的控制单元完成写操作。
    FLASH一般都分为很多个SECTOR,每个SECTOR包括一定数量的存储单元,对有些大容量的FLASH,还分为不同的BANK,每个:BANK包括一定数目的SECTOR。FLASH的擦除操作一般都是以SECTOR、BANK或是整片FLASH为单位的。
    在对FLASH进行写操作的时候,每个位可以通过编程由1变为0,但不可以由0修改为1。为了保证写操作的正确性,在执行写操作前,都要执行擦除操作,擦除操作会把FLASH的一个SECTOR、一个BANK或是整片FLASH的值全修改为0xFF,这样写操作就可以正确完成了。
    FLASH芯片一般都支持编程、擦除、复位等操作命令,命令序列可参考芯片厂家提供的用户手册。本项目中根据芯片手册提供的常用命令序列表,可知SECTOR擦除操作共需要6个周期的总线写操作完成,命令序列如下:
    1)将OxAA写到FLASH芯片地址0x555;
    2)将0x55写到FLASH芯片地址0x2AA;
    3)将0x80写到FLASH芯片地址0x555;
    4)将OxAA写到FLASH芯片地址0x555;
    5)将0x55写到FLASH芯片地址0x2AA;
    6)将0x30写到要擦除的SECTOR对应的地址。
转载请注明原文地址:https://kaotiyun.com/show/wQWZ777K
0

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