欢迎来到天天文库
浏览记录
ID:37940172
大小:774.57 KB
页数:15页
时间:2019-06-03
《NiosII的奇幻漂流-Chap10-Flash-v1.0》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、NiosII的奇幻漂流Chap.10FlashbyVITO老虎社区www.tigerbd.cn处心积虑地让FPGA好学好用NiosII的奇幻漂流工具版本:Windows7+QuartusII12.0+Qsys+NiosIISBT12.0作者:VITOE-Mail:vito943@qq.com老虎社区版权所有http://www.tigerbd.cnAllRightReserved欢迎转载转载请保留版权信息2014.6FlashFlash本章主要介绍在NiosII中利用EPCS控制模块实现对Flash存储器芯片——EPCS64的读写,通过本章,你能学到(1)EPC
2、S控制模块的使用。(2)在NiosII中用SimpleFlashAccess方式读写Flash。(3)在NiosII中用Fine-GrainedFlashAccess方式读写Flash。本章分为四个部分:一、概述二、软件实现——SimpleFlashAccess三、软件实现——Fine-GrainedFlashAccess四、实验总结更多章节,请访问http://www.tigerbd.cn/forum-39-1.html1概述1.概述上一章介绍的SDRAM属于掉电易失的RAM,如果我们想把程序或数据长时间存储起来,RAM就无能为力了(总不能一直不断电吧~囧),
3、这时候,ROM存储器就派上用场了。这一章介绍常用的一种ROM——Flash。Flash存储器兼具RAM和ROM的优点,它能在掉电非易失的前提下,保持较高的读写速度,因此在嵌入式开发中广泛使用。Flash的种类很多,在NiosII中,Qsys提供了CFIFlash和EPCSFlash两种类型的Flash控制模块,只要是这两种类型的Flash芯片,我们就能通过模块轻松地实现读写,免去了繁琐的驱动程序。每个AlteraFPGA芯片都要配备一个配置芯片,这个配置芯片就是EPCSX芯片,我们知道,FPGA内部的存储器是掉电易失的SRAM,如果想要把FPGA程序或NiosI
4、I程序永久存储,就得需要EPCS芯片了。TIGERBOARD开发板上配备的是EPCS64,在本章,我们利用EPCS控制模块实现对EPCS64芯片的读写操作。AlteraHAL系统提供了两种Flash的访问方式,分别是SimpleFlashAccess(简单Flash访问)和Fine-GrainedFlashAccess(精细Flash访问)。SimpleFlashAccess包含了alt_flash_open_dev(),alt_write_flash(),alt_read_flash(),和alt_flash_close_dev()四个函数,作用分别是打开Fl
5、ash、写Flash、读Flash和关闭Flash,它的操作比较简单,但是存在一个问题:Altera的NiosIISoftwareDeveloper’sHandbook手册称之为BlockCorruption(块腐化)。EPCSFlash存储器是由若干个Block(块)组成的,如果采用简单Flash访问方式写Flash,在对某地址写数据之前会把对应地址所在的Block擦除(全部置1),这样容易导致此前存储的数据丢失,从而造成BlockCorruption,有些同学不明白这个道理,以为只要多次写入的数据地址不重合即可,却发现新写入数据后原来的数据莫名地消失(本人血
6、的教训!%>_<%)。为了避免BlockCorruption,Altera提供了Fine-GrainedFlashAccess,它包含了alt_get_flash_info(),alt_erase_flash_block()和alt_write_flash_block()三个函数,分别为获取Flash2概述信息,擦除FlashBlock和写FlashBlock,通过获取Flash信息函数,我们能了解到Flash的基本信息:包括Block的容量、数目、起始地址等,擦除FlashBlock函数和写FlashBlock函数能对指定Block的某些地址做擦除和写操作而不
7、改变其它地址的数据,有了这三个函数,我们就能把数据存储到指定的Block而避免BlockCorruption。3软件实现——SimpleFlashAccess2.软件实现——SimpleFlashAccess与上一章一样,我们的EPCS控制模块在建立Qsys模块时早已添加进去,所以硬件部分没什么要做的,直接软件实现搞起。这一节我们先来实现SimpleFlashAccess,新建一个NiosII工程,命名为flash_sfa,先打开system.h,找到EPCS控制模块,如下图所示,是EPCS控制模块的信息,要注意红框中的EPCS_NAME,我们一会得用到它。/*
8、*EPCSconfigu
此文档下载收益归作者所有