欢迎来到天天文库
浏览记录
ID:49934752
大小:188.00 KB
页数:6页
时间:2020-03-03
《Nand Flash 启动过程详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NandFlash启动如果内部没有ROM或ROM没有专门的bootloarder,应该是只能从norflash启动。三星的2410可以从NF启动程序,它会把第一块的前4KB复制到内部SRAM中然后从SRAM执行,也就是说,你需要编写一个长度小于4K的引导程序,作用是将主程序拷贝到SDRAM中运行(NF地址不是线性的,程序不能直接运行,必须拷贝到线性RAM中).NORFLASH地址线和数据线分开,来了地址和控制信号,数据就出来。NANDFlash地址线和数据线在一起,需要用程序来控制,才能出数据。通俗的说,就是光给地址不行,要
2、先命令,再给地址,才能读到NAND的数据。而且都是在一个总线完成的。nboot是从NANDflash读image到内存并执行,eboot是从以太网(用tftp)下载image到内存并执行。将nboot.nb0烧到第0块,将eboot.nb0烧到第2块。启动时nboot从flash读出eboot并执行之,如何就可以通过pb把nk.bin下载到目标板上执行了,开发机和目标板可以用交叉线直接连接。nboot是nandflashbootloader的意思。S3C2410可以直接从nandflash启动,但是不能超过4k。nboot是
3、系统启动后最先执行的代码,它有两种,一种是跳转到eboot;一种是跳转到nk。主要的功能其实是在eboot里。随着消费类电子产品包括PDA,MP3、智能手机等手持设备的市场需求逐步扩大,产品间的竞争也愈发激烈,降低产品的设计成本,提升产品的市场竞争力成为嵌入式系统开发者所面临的重大挑战。NANDFLASH和NORFLASH作为两种主要的非易失性存储器,被应用于各种嵌入式系统。其中NANDFLASH主要优点在于存储密度高、容量大,有更占优势的存储性价比。但是NANDFLASH由于其独特的页式读写方式,并不适合程序的直接执行。因
4、此,从NANDFLASH启动需要片上存储器作为代码执行的中转区。本文所讨论的一种系统启动方式,是在缺少片上存储器支持的情况下,实现系统直接从NANDFLASH启动。论文中充分考虑了如何实现软、硬件之间的协同工作,以完成SOC系统的设计。2NANDFLASH控制器的结构本文所讨论的NANDFLASH控制器是针对一款基于ARM7TDMI的SoC芯片,该控制器在芯片中的位置如图1所示,作为AMBA总线上的一个从设备集成于AHB上。主要模块包括总线接口模块、FIFO缓冲模块、ECC编码模块以及逻辑控制模块。总线接口模块主要的功能是转
5、换AMBA总线上的控制和数据信号:将总线上的数据送入FIFO或将数据从FIFO读出到总线上,将总线上的控制信号转换时序后送到控制模块。NAND控制器包含一个宽度为32b,深度为4的缓冲FIFO,用于解决高速总线与低速设备之间数据传输速度的匹配问题。为提高总线的传输效率,以及控制器设计的便利性,NANDFLASH在总线上的数据传输采用DMA的方式来完成。譬如在读取FLASH一页数据时,数据持续写入控制器FIFO,FIFO满时发出DMA传输的请求,同时暂停FLASH的数据读取,控制信号nRE拉高,直至DMA响应请求即FIFO不满
6、时,FLASH的数据传输重新开始。当选择应用的FLASH位宽为8,页大小为(512+16)B时,控制器需要发出(32+1)次4拍字宽度的DMA传输请求来完成数据和校验信息的读取。控制模块的上作主要是将总线接口转换的控制信号,按照NANDFLASH的接口协议.将片选、地址、命令、读写使能按照所配置的时序要求,发送到NANDFLASH中,并且控制数据的传输个数,以及DMA请求、数据传输完成中断、数据错误中断等系统信号。NANDFLASH可靠性相对较差,存储器芯片中有坏块的存在,会导致存储数据出错。ECC校验模块针对NANDFLA
7、SH的可靠性问题,提供了一种查错、纠错的机制。ECC校验码在数据读人时,由硬件计算完成后写入到FLASH的校验位中,当此页数据读出时,校验码再次生成与存储器校验位中的数据进行比较,若相同则没有损坏位,若不同,则给出出错中断,软件通过检查比较结果,判断出错位的位置进行纠错处理。纠错功能仅针对单bit位的出错,当一个以上位同时在一页中出现时,ECC校验不能给出出错位正确的位置。3NANDFLASH工作的软件流程按照上节对控制器结构以及传输机理的分析,NANDFLASH的使用需要在FLASH控制器模块以及DMA控制器模块的协同下完
8、成,工作的软件流程如图2所示。软件驱动的主要工作是配置DMA模块以及FLASH控制模块,当传输完成,检测到中断后,软件查询状态寄存器,其中的状态位来自FLASH。当一次操作完成后,控制器自动向FLASH发出查询状态的命令0x70,读出的状态字保存在控制器的状态寄存器中。4NANDFLASH
此文档下载收益归作者所有