新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DSP外部Flash存储器在线编程的软硬件设计

DSP外部Flash存储器在线编程的软硬件设计

作者:时间:2010-08-09来源:网络收藏

由于的接口采用软件握手,在对进行或擦除时,的总线周期中不会由硬件自动插入等待周期,如果此时仍采用2.1节的函数对Flash进行,则会得到错误的编程结果。编程结束后会发现Flash存储器中有一部分内容仍然是0xFFFF,处于编程前的状态。虽然对Flash存储器进行了编程操作,但由于Flash存储器上一次编程操作还未完成,本次的编程操作无效,数据根本写不进Flash存储器。在CCS3.1中用“View/Memery”功能查看Flash存储器,就会发现Flash存储器中的数据等间隔地出现编程正确和编程不正确的现象。笔者在自己的TMS320C6711D-250嵌入式模块(带有AM29LV400B Flash存储器)上,通过断开与Flash存储器的硬件Ready信号进行编程测试,无等待状态的测试结果见表1,有等待状态的测试结果见表2。

本文引用地址:http://www.eepw.com.cn/article/151696.htm

可见,在没有硬件握手的情况下,需要通过软件来判断当前Flash存储器编程或擦除的状态来进行编程操作。如果Flash存储器正处于编程或擦除过程中,则无法继续对Flash存储器进行编程,需等到Flash存储器上一次数据编程(写入)完成时才能进行下一次数据编程(写入)。否则,会得到错误的编程结果,造成编程后数据校验失败。
大多数Flash存储器都提供了一个或几个状态位来表示当前Flash存储器编程或擦除的状态,大多支持通过其数据总线D7数据位的状态来判断Flash存储器当前编程或擦除的状态。这是大多数Flash存储器数据手册推荐的编程轮询算法,但经过笔者测试,这种算法比较繁琐,会造成部分编程内容不正确,可采用将编程数据读出、与写入数据进行比较的简单方法,实现软件等待状态的插入。
说明:TMS320C6711D与AM29LV400B Flash存储器采用16位数据连接,DSP EMIF CEl存储器空间初始化为32位总线宽度(CEl端口连接16位Flash存储器),读取/写入Flash存储器的32位数据中高16位无效。
带有软握手的Flash存储器编程函数如下:

3 两种编程方式的区别
在硬件上加入硬件握手的Flash存储器编程方式简单,在应用中只须考虑擦除和编程,而无须考虑Flash存储器的当前状态。当Flash存储器正处于擦除和编程状态而未完成时,Flash存储器产生的忙信号通过Flash存储器与DSP之间的硬件连接直接送入DSP,由DSP硬件在其总线访问周期中自动插入等待周期,暂停DSP处理器的执行;当Flash擦除和编程状态完成时,由Flash存储器产生的就绪信号通过Flash存储器与DSP之间的直接硬件连接将就绪信号送入DSP,解除DSP的等待状态,继续程序的执行。而采用软件握手的Flash编程方式需要程序员在软件中判断Flash存储器的当前状态。只有当Flash存储器擦除过程完成时,才能对其进行编程;当Flash存储器的一次编程(数据写入)过程完成时,才能进行下一次的编程(数据写入)。软件繁琐,且要经过多次调试。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭