DSP对AM29LV400BFlash存储器的烧写、擦除操作

上传人:冷*** 文档编号:19689293 上传时间:2021-01-12 格式:DOCX 页数:3 大小:13.73KB
返回 下载 相关 举报
DSP对AM29LV400BFlash存储器的烧写、擦除操作_第1页
第1页 / 共3页
DSP对AM29LV400BFlash存储器的烧写、擦除操作_第2页
第2页 / 共3页
DSP对AM29LV400BFlash存储器的烧写、擦除操作_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
DSP对AM29LV400BFlash存储器的烧写、擦除操作 1.引言 Flash是一种可在线进行电擦写,掉电后数据不丢失的EEPROM存储器。它具有功耗低、容量大、烧写和擦除速度快等优点,并且内部嵌入算法完成对芯片的操作,简化了软件的工作量,因而在数字信号处理系统中得到了广泛的应用。DSP是一种高速数字信号处理器。它具有高稳定性、可重复性、可大规模集成,特别是易编程性和易于实现自处理等特点,使得信号处理手段更灵活、功能更复杂、运算速度更快,在数字信号处理领域得到广泛地应用。本文通过完整的实例,介绍以TMS320VC33(简称VC33)为嵌入式系统对AM29LV400B Flash存储器进行烧写和擦除的实现方法。2.AMD公司AM29LV400B Flash存储器AM29LV400B是AMD公司推出的Flash存储器,它是4兆位(8×512K/16×256K位)的CMOS工艺扇区擦除、字节编程的电可擦除只读存储器EEPROM。它的主要特点包括如下几个方面:3.3V单电压供电;内部嵌入编程、擦除操作算法,只需向命令寄存器写入标准的微处理器指令,并且可通过查询特定的引脚或数据线来监控操作是否完成;对任一扇区进行烧写擦除操作时不影响其它的扇区数据;可进行100000次的烧写擦除操作,数据保存10年以上。本文中Flash的数据映射到DSP的0x0400000空间,Flash的一个字节对应一个DSP的低8位数据,高24位为无效数据,可以直接按字节进行读写操作。3.Flash存储器的基本操作命令以及程序设计流程Flash存储器AM29LV400B的基地址为0x400000,每个偏移地址乘以4是因为Flash字节仅占用DSP空间低8位,而DSP的地址是字节地址,所以地址增量为4。3.1 Flash存储器的操作结束检测Flash AM29LV400B内部的编程或擦除算法可自动完成相应操作,但必须了解其内部的操作检测机制,以便知道操作是否完成或正确。常用的检测方法有两种:跳变位(DQ6 )检测法、数据检测位(DQ7)检测法。本文中用的是第1种方法,即检测跳变位DQ6。DQ6指的是当前操作地址的D6位,在Flash写操作过程中,对相应地址的连续读均引起DQ6的0;、1;跳变,只有当写操作结束的时候,DQ6才会停止跳变,此时说明Flash内部操作成功结束,程序代码如下:对读回的DQ6的数值做0x7fffff次比较,如果在所有的比较里该位都产生跳变,则说明Flash内部操作失败;如果DQ6停止跳变,flag标志写1,跳出while循环,Flash操作成功结束。3.2 Flash存储器擦写操作命令Flash存储器的擦写操作命令通常是启动Flash设备的存储器操作函数,由内嵌的算法完成具体的编程和擦除操作,所以向Flash的特定地址写入操作命令和数据,就可以对Flash存储器进行编程和擦除。表1介绍了Flash擦写命令的具体操作地址和命令代码。在CC3000开发系统下,实现Flash擦写操作命令的C代码如下所示:执行写上述操作时,应注意以下事项:计算要擦除扇区的开始地址时,默认为Flash的开始地址(第一个扇区)。由于编程指令不能使0;写成1;,只能使1;写成0;,而擦除指令可使0;写成1;,所以写数据之前要先擦除完成后再编程烧写。4.烧写Flash存储器一般情况下,Flash是通过编程器把以文件形式存储的数据(比如生成的DSP引导程序代码bin二进制文件)烧写到Flash中,但这种方法烧写速度慢,并且需要把Flash芯片放到编程器上,调试过程中频繁的插拔Flash芯片会降低芯片寿命,因此选择在开发系统下通过JTAG接口和仿真器将比较大的数据文件烧写到Flash的指定存储区域中。下面具体介绍在CC3000开发系统下实现软件打开文件并将文件数据烧写到Flash中的实现过程。5.开发系统CC3000以及编译链接环境的设置选用TI的CC3000作为DSP的集成开发工具,它支持标准C和C+语言,并且能够嵌入汇编语言。编译程序之前,应先对CC3000的编译链接选项进行设置,并编写命令链接文件(.cmd文件),为程序和数据分配存储空间。5.1 命令链接文件(.cmd文件)的编写命令链接文件定义了DSP存储空间分配情况,用于在程序链接加载过程中将编译生成的各个代码段定位到DSP程序和数据存储区上,以本文的项目为例,cmd文件如下:MEMORY命令完成DSP存储空间的分配。本文中将DSP的存储空间分成九部分:ROM区域表示4K的内部ROM区;EXT0区域表示外部存储区;Flash表示的是Flash存储区;VECTOR区域表示存放中断向量表的存储区。SECTIONS命令说明编译生成的各个输出段如何定位到存储器。由于在CC3000开发系统下烧写文件到Flash涉及对文件的打开与读写操作与动态存储分配操作,所以应该在SECTIONS里定义.sysmem和.cio两个段,而一般情况下这两个段在编译过程中是不产生的。.sysmem段是提供动态存储分配空间的数据区,主要由malloc、calloc和realloc等动态分配函数所使用,这些函数封装在CC3000提供的系统库函数rts30.lib中。.cio是有关文件IO操作的段,程序中涉及到对文件的打开读写等操作的时候编译才会生成该段。这两个段都是作为程序的数据定义到RAM数据存储器里。5.2 烧写文件数据到Flash的实现在CC3000下打开文件,读取文件数据,并将数据通过VC33写到Flash。下面以小于64K文件的烧写为例,说明在CC3000下烧写Flash的过程,程序代码如下:在CC3000开发系统下,根据文件大小计算将文件数据分成多少个64K大小的块和最后一块小于64K块的长度,并对DSP进行初始化;然后以rb为参数调用fopen函数,即已只读的二进制文件格式打开制定的文件,如果fopen参数里没有写出文件的路径,系统默认为与CC3000生成的.out格式文件在同一个目录下,如果打开成功,获得文件句柄fp;按照块的顺序,依次以字节大小读取文件数据到0x08030000x0808000,并调用写Flash函数flash_write(),依次将数据写到Flash存储器(注意每次写操作结束后,Flash地址应该相应的增加);最后关闭文件,退出程序,操作完成。6.结束语用软件方式,在CC3000开发系统下,由VC33控制Flash写操作,从而实现了文件数据到Flash存储器的下载过程。与编程器写Flash的方式相比,其软件烧写Flash速度快,而且无需卸下Flash芯片放在编程器上,便于调试。通过上述方法可完成VC33对AM29LV400B的烧写。其他型号Flash芯片也可按此类方法烧写。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!