从NAND闪存中启动U-BOOT的设计.doc

从NAND闪存中启动U-BOOT的设计.doc

ID:28359049

大小:63.00 KB

页数:4页

时间:2018-12-09

从NAND闪存中启动U-BOOT的设计.doc_第1页
从NAND闪存中启动U-BOOT的设计.doc_第2页
从NAND闪存中启动U-BOOT的设计.doc_第3页
从NAND闪存中启动U-BOOT的设计.doc_第4页
资源描述:

《从NAND闪存中启动U-BOOT的设计.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、从NAND闪存中启动U-BOOT的设计引言随着嵌入式系统的日趋复杂,它对大容量数据存储的需求越来越紧迫。而嵌入式设备低功耗、小体积以及低成本的要求,使硬盘无法得到广泛的应用。NAND闪存设备就是为了满足这种需求而迅速发展起来的。目前关于U-BOOT的移植解决方案主要面向的是微处理器中的NOR闪存,如果能在微处理器上的NAND闪存中实现U-BOOT的启动,则会给实际应用带来极大的方便。U-BOOT简介U-BOOT支持ARM、PowerPC等多种架构的处理器,也支持Linux、NetBSD和VxWork

2、s等多种操作系统,主要用来开发嵌入式系统初始化代码bootloader。bootloader是芯片复位后进入操作系统之前执行的一段代码,完成由硬件启动到操作系统启动的过渡,为运行操作系统提供基本的运行环境,如初始化CPU、堆栈、初始化存储器系统等,其功能类似于PC机的BIOS。U-BOOT执行流程图如图1所示。NAND闪存工作原理S3C2410开发板的NAND闪存由NAND闪存控制器(集成在S3C2410CPU中)和NAND闪存芯片(K9F1208U0A)两大部分组成。当要访问NAND闪存芯片中的数

3、据时,必须通过NAND闪存控制器发送命令才能完成。所以,NAND闪存相当于S3C2410的一个外设,而不位于它的内存地址区。NAND闪存(K9F1208U0A)的数据存储结构分层为:1设备(Device)=4096块(Block);1块=32页/行(Page/row);1页=528B=数据块(512B)+OOB块(16B)在每一页中,最后16个字节(又称OOB)在NAND闪存命令执行完毕后设置状态,剩余512个字节又分为前半部分和后半部分。可以通过NAND闪存命令00h/01h/50h分别对前半部、

4、后半部、OOB进行定位,通过NAND闪存内置的指针指向各自的首地址。NAND闪存的操作特点为:擦除操作的最小单位是块;NAND闪存芯片每一位只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前一定要将相应块擦除;OOB部分的第6字节为坏快标志,即如果不是坏块该值为FF,否则为坏块;除OOB第6字节外,通常用OOB的前3个字节存放NAND闪存的硬件ECC(校验寄存器)码;从NAND闪存启动U-BOOT的设计思路如果S3C2410被配置成从NAND闪存启动,上电后,S3C2410的NAND闪存控

5、制器会自动把NAND闪存中的前4K数据搬移到内部RAM中,并把0x00000000设置为内部RAM的起始地址,CPU从内部RAM的0x00000000位置开始启动。因此要把最核心的启动程序放在NAND闪存的前4K中。由于NAND闪存控制器从NAND闪存中搬移到内部RAM的代码是有限的,所以,在启动代码的前4K里,必须完成S3C2410的核心配置,并把启动代码的剩余部分搬到RAM中运行。在U-BOOT中,前4K完成的主要工作就是U-BOOT启动的第一个阶段(stage1)。根据U-BOOT的执行流程图

6、,可知要实现从NAND闪存中启动U-BOOT,首先需要初始化NAND闪存,并从NAND闪存中把U-BOOT搬移到RAM中,最后需要让U-BOOT支持NAND闪存的命令操作。开发环境本设计中目标板硬件环境如下:CPU为S3C2410,SDRAM为HY57V561620,NAND闪存为64MB的K9F1208U0A。主机软件环境为Redhat9.0、u-boot-1.1.3、gcc2.95.3。修改U-BOOT的Makefile,加入:wch2410_config:unconfig@./mkconfig

7、$(@:_config=)armarm920twch2410NULLs3c24x0即将开发板起名为wch2410,接下来依次进行如下操作:mkdirboard/wch2410cpboard/smdk2410board/wch2410mvsmdk2410.cwch2410.ccpinclude/configs/smdk2410.hinclude/configs/wch2410.hexportPATH=/usr/local/arm/2.95.3/bin:$PATH最后执行:makewch2410_con

8、figmakeallARCH=arm生成u-boot.bin,即通过了测试编译。具体设计支持NAND闪存的启动程序设计因为U-BOOT的入口程序是/cpu/arm920t/start.S,故需在该程序中添加NAND闪存的复位程序,以及实现从NAND闪存中把U-BOOT搬移到RAM中的功能程序。首先在/include/configs/wch2410.h中加入CONFIG_S3C2410_NAND_BOOT,如下:#defineCONFIG_S3C2410_NAND_BO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。