基于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分钟,这一点无论从速度上,还是经济上都优于通用编程器件。
- μC/OS-II下通用驱动框架的设计与实现(07-23)
- DSP和PBL3717A构成的步进电机的控制系统(04-01)
- 基于DSP的新型弹载控制计算机(04-05)
- 基于DSP的谐波控制器的研制(04-09)
- 数字信号控制器在变频家电中的应用(05-15)
- 基于DSP的磁流变阻尼器的控制方法(04-14)