微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP PNX1501的NandFlash在线烧录系统

基于DSP PNX1501的NandFlash在线烧录系统

时间:07-13 来源:3721RD 点击:

512字节数据计算新的ECC,同时和该页Spare区存储的ECC进行比较,这样,可以纠正1 Bit位翻转,或检测2 Bit以上的翻转。

本系统中的烧录文件按照飞利浦的协议采用6字节的ECC,由于NandFlash以块和页来管理数据,因此,对于PC端,首先应将数据按照Nand-Flash结构进行映射,其代码如下:

\

之后便可将烧录文件数据填入DataBuf中,每填完512字节后计算ECC和其它Spare区间内容,填满32页就可开辟新的数据结构并挂入链表中。

PC和DSP通信是该系统的关键。设计时可以采用消息方式,也可以在接收端DSP的外挂DDR中开辟一段共享区问,然后由PC直接将数据写入,再发送命令进行烧录。本系统采用第二种方式。对于飞利浦公司的DSP而言,该DSP在驱动中已经将其全部DDR空间映射到PC的物理空间了,因而可直接在驱动SDK中增加简单接口函数,以将有DSP开辟的共享区间的地址通过消息方式传送给PC,这样,PC就能直接对该区问进行读写了。该操作的具体代码如下:

\

\

这样,当DSP接到PC发送的烧录命令时,系统便可读取共享缓冲区的内容并开始烧录Flash。其具体的流程如图2所示,部分函数源码如下:

\

\

设计时的具体时序可参照芯片资料所提供的时序电路来控制MMIO寄存器以实现GPIO的控制,在此不再赘述。需要注意的是,NandFlash在烧录或擦除过程中,可能会失败并产生坏块。对于坏块的处理。不同系统有不同的方法,主要有直接Skip(跳过)和Reserved Block Area (使用保留块)等,本系统使用前一种方式。此外,为了可靠起见,在时间允许的情况下还应对烧录成功的块数据进行ECC校验,即读取全部数据来计算ECC并和烧录之前计算的ECC进行比较,以判断是否发生了位翻转,从而确定烧录是否正确。如果发生两位以上的翻转,则说明该块烧录错误,应重新选择新块烧录并将原块标记为坏块。

4 结束语

对DSP外部Flash编程虽然不是一项关键技术,但是它在整个DSP嵌入式系统开发过程之中却起着至关重要的作用,如何方便、快速地实现对引导文件(BootLodaer)和文件系统的烧录,更是直接影响产品的生产与更新的重要环节。通过本系统可以迅速快捷地实现前期所有启动文件的烧录,实际测试证明:烧录40 MB的文件系统只需要不到3分钟,这一点无论从速度上,还是经济上都优于通用编程器件。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top