新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 并行NOR Flash在SOPC开发中的应用设计

并行NOR Flash在SOPC开发中的应用设计

作者: 时间:2010-07-28 来源:网络 收藏

  4 存储非易失数据或参数

  有时候系统需要存储非易失的数据或参数,这就需要通过编写程序直接对J3D进行读/写操作。当然,前提是先要在EDK中为J3D添加一个XPS MCH EMC接口。这个接口对并行 和SRAM来说都是适用的,如果用于SRAM则可以直接读/写,不需要驱动,而用于并行则需要自己编写相应的驱动程序。下面为自行编写的一个执行块擦除、单字写、单字读操作的程序。需要注意的是: 写操作前一定要先进行擦除操作,写命令或写数据之后一定要对状态寄存器进行判断是否完成相应操作;读操作则很简单,像SRAM的读/写一样。

  Xuint16 data=0xF0F0;

  Xuint16 Status,ReadData;

  /*块擦除程序*/

  XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,0x2020 );//指定地址块的擦除设置

  XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,0xD0D0 );//指定地址块的擦除确认

  do{

  Status = XIo_In16(XPAR_GENERIC_EXTERNAL_MEMORY_MEM0_BASEADDR);

  }while ((Status 0x0080) != 0x0080);//读状态寄存器直至块擦除完成

  /*单字写程序*/

  XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,0x4040 );//指定地址处单字写操作设置

  XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,data );//向指定地址处写入一个字长的数据

  do{

  Status = XIo_In16(XPAR_GENERIC_EXTERNAL_MEMORY_MEM0_BASEADDR);

  }while ((Status 0x0080) != 0x0080);//读状态寄存器直至写操作完成

  /*单字读程序*/

  ReadData=XIo_In16(XPAR_FLASH_16MX8_MEM0_BASEADDR );//读相应地址处的数据

  还有一种情况是在系统运行前就把数据写入中。首先,把数据写入一个二进制文件中。注意,MicroBlaze的存储格式是BigEndian(即高字节数据保存在低地址,低字节数据保存在高地址),PC机的存储格式则是LittleEndian(即高字节数据保存在高地址,低字节数据保存在低地址),因此如果是用VC++产生的二进制文件,一定要进行高、低字节交换。在Matlab中生成数据文件则可以在相应的文件操作函数中添加参数’b’(表示以BigEndian格式存储),如FileID=fopen(’data.bin’,’w+’,’b’)。产生的二进制文件可以通过Program Flash Memory对话框下载到J3D中,注意不要选中Autoconvert file to SREC format when programming flash和Create Flash Bootloader Application选项。

  结语

  本文讨论了在以Xilinx Spartan XC3S1600E为基础的设计中,Intel J3D并行 Flash的4种不同用途及其使用方法与技巧,尤其对一些技术关键问题予以详细的阐述,其中融入了笔者在项目开发中的实际经验,具有较高的参考价值。J3D既可以用于存储配置比特流,又可以存储软处理器程序代码,也可以存储非易失的数据和参数,甚至三者可以并存于同一片J3D中。本文只是以Intel J3D并行 Flash为例讨论其在开发中的用法,这些方法同样适用于其他厂家具有CFI(Common Flash Interface)接口的并行NOR Flash。灵活地综合运用这些方法,对于开发具有重要意义。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 4 下一页

关键词: FPGA SOPC NOR Flash 嵌入式

评论


相关推荐

技术专区

关闭