位置:51电子网 » 技术资料 » 存 储 器

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

发布时间:2008/5/26 0:00:00 访问次数:640

        

    

    

    来源:电子设计应用 作者:南昌大学信息工程学院 刘晔 汪灿华 范静辉

    

    摘 要:本文介绍了s3c2410中nand闪存的工作原理,分析了从nand闪存启动u-boot的设计思路,并着重描述了nand闪存支持u-boot的程序设计,移植后u-boot在嵌入式系统中运行良好。

    关键词:u-boot;nand闪存;s3c2410;嵌入式系统

    

    引言

    随着嵌入式系统的日趋复杂,它对大容量数据存储的需求越来越紧迫。而嵌入式设备低功耗、小体积以及低成本的要求,使硬盘无法得到广泛的应用。nand闪存设备就是为了满足这种需求而迅速发展起来的。目前关于u-boot的移植解决方案主要面向的是微处理器中的nor 闪存,如果能在微处理器上的nand 闪存中实现u-boot的启动,则会给实际应用带来极大的方便。

    

    u-boot简介

    u-boot 支持arm、 powerpc等多种架构的处理器,也支持linux、netbsd和vxworks等多种操作系统,主要用来开发嵌入式系统初始化代码bootloader。bootloader是芯片复位后进入操作系统之前执行的一段代码,完成由硬件启动到操作系统启动的过渡,为运行操作系统提供基本的运行环境,如初始化cpu、堆栈、初始化存储器系统等,其功能类似于pc机的bios。

    

    nand闪存工作原理

    s3c2410开发板的nand闪存由nand闪存控制器(集成在s3c2410 cpu中)和nand闪存芯片(k9f1208u0a)两大部分组成。当要访问nand闪存芯片中的数据时,必须通过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分别对前半部、后半部、oob进行定位,通过nand闪存内置的指针指向各自的首地址。

    nand闪存的操作特点为:擦除操作的最小单位是块;nand闪存芯片每一位只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前一定要将相应块擦除;oob部分的第6字节为坏快标志,即如果不是坏块该值为ff,否则为坏块;除oob第6字节外,通常用oob的前3个字节存放nand闪存的硬件ecc(校验寄存器)码;

    

    从nand闪存启动u-boot的设计思路

    如果s3c2410被配置成从nand闪存启动,上电后,s3c2410的nand闪存控制器会自动把nand闪存中的前4k数据搬移到内部ram中, 并把0x00000000设置为内部ram的起始地址, cpu从内部ram的0x00000000位置开始启动。因此要把最核心的启动程序放在nand闪存的前4k中。

    

    由于nand闪存控制器从nand闪存中搬移到内部ram的代码是有限的,所以, 在启动代码的前4k里,必须完成s3c2410的核心配置,并把启动代码的剩余部分搬到ram中运行。在u-boot中, 前4k完成的主要工作就是u-boot启动的第一个阶段(stage1)。

    根据u-boot的执行流程图,可知要实现从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、gcc 2.95.3。修改u-boot的makefile,加入:

    wch2410_config : unconfig

    @./mkconfig $(@:_config=) arm arm920t wch2410 null s3c24x0

    

    即将开发板起名为wch2410,接下来依次进行如下操作:

    mkdir board/wch2410

    cp board/smdk2410 board/wch2410

    mv smdk2410.c wch2410.c

    cp include/co

        

    

    

    来源:电子设计应用 作者:南昌大学信息工程学院 刘晔 汪灿华 范静辉

    

    摘 要:本文介绍了s3c2410中nand闪存的工作原理,分析了从nand闪存启动u-boot的设计思路,并着重描述了nand闪存支持u-boot的程序设计,移植后u-boot在嵌入式系统中运行良好。

    关键词:u-boot;nand闪存;s3c2410;嵌入式系统

    

    引言

    随着嵌入式系统的日趋复杂,它对大容量数据存储的需求越来越紧迫。而嵌入式设备低功耗、小体积以及低成本的要求,使硬盘无法得到广泛的应用。nand闪存设备就是为了满足这种需求而迅速发展起来的。目前关于u-boot的移植解决方案主要面向的是微处理器中的nor 闪存,如果能在微处理器上的nand 闪存中实现u-boot的启动,则会给实际应用带来极大的方便。

    

    u-boot简介

    u-boot 支持arm、 powerpc等多种架构的处理器,也支持linux、netbsd和vxworks等多种操作系统,主要用来开发嵌入式系统初始化代码bootloader。bootloader是芯片复位后进入操作系统之前执行的一段代码,完成由硬件启动到操作系统启动的过渡,为运行操作系统提供基本的运行环境,如初始化cpu、堆栈、初始化存储器系统等,其功能类似于pc机的bios。

    

    nand闪存工作原理

    s3c2410开发板的nand闪存由nand闪存控制器(集成在s3c2410 cpu中)和nand闪存芯片(k9f1208u0a)两大部分组成。当要访问nand闪存芯片中的数据时,必须通过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分别对前半部、后半部、oob进行定位,通过nand闪存内置的指针指向各自的首地址。

    nand闪存的操作特点为:擦除操作的最小单位是块;nand闪存芯片每一位只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前一定要将相应块擦除;oob部分的第6字节为坏快标志,即如果不是坏块该值为ff,否则为坏块;除oob第6字节外,通常用oob的前3个字节存放nand闪存的硬件ecc(校验寄存器)码;

    

    从nand闪存启动u-boot的设计思路

    如果s3c2410被配置成从nand闪存启动,上电后,s3c2410的nand闪存控制器会自动把nand闪存中的前4k数据搬移到内部ram中, 并把0x00000000设置为内部ram的起始地址, cpu从内部ram的0x00000000位置开始启动。因此要把最核心的启动程序放在nand闪存的前4k中。

    

    由于nand闪存控制器从nand闪存中搬移到内部ram的代码是有限的,所以, 在启动代码的前4k里,必须完成s3c2410的核心配置,并把启动代码的剩余部分搬到ram中运行。在u-boot中, 前4k完成的主要工作就是u-boot启动的第一个阶段(stage1)。

    根据u-boot的执行流程图,可知要实现从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、gcc 2.95.3。修改u-boot的makefile,加入:

    wch2410_config : unconfig

    @./mkconfig $(@:_config=) arm arm920t wch2410 null s3c24x0

    

    即将开发板起名为wch2410,接下来依次进行如下操作:

    mkdir board/wch2410

    cp board/smdk2410 board/wch2410

    mv smdk2410.c wch2410.c

    cp include/co

相关IC型号

热门点击

 

推荐技术资料

循线机器人是机器人入门和
    循线机器人是机器人入门和比赛最常用的控制方式,E48S... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!