基于DSP PNX1501的NandFlash在线烧录系统
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分钟,这一点无论从速度上,还是经济上都优于通用编程器件。
DSP NandFlash PNX1501 在线烧录 相关文章:
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)