s3c2440_uboot移植(五)支持Nand操作

本文介绍如何为 U-Boot 添加 NAND Flash 支持,包括宏定义、时序设置及芯片初始化等内容。通过具体步骤说明如何实现必要的硬件控制函数。

1. 让uboot 支持操作Nand Flash

1.1 uboot 的不足


在第三篇中,我们给uboot移植了Nand 启动的代码,并且成功启动了。不过uboot
程序仍然无法正常去操作Nand Flash,原因是我们并没有配置uboot 中关于Nand Flash操作的相关代码。

1.2 添加对Nand Flash 的操作

1.2.1 添加宏定义和s3c2440_nand.c 文件

  1. 要让uboot 支持Nand Flash 操作,我们首先需要给include/configs
    /s3c2440.h,添加CONFIG_CMD_NAND 的宏定义
    添加CMD_NAND配置

  2. 拷贝driver/mtd/nand/s3c2410_nand.c 为driver/mtd/nand/s3c2440_nand.
    c,仿造s3c2410_nand 来写我们的s3c2440_nand 文件。并且在driver/
    mtd/nand/Makefile 中添加s3c2440_nand.c
    ,将其编译进内核:
    
修改Makefile
    从图中我们可知,我们还需要往s3c2440.h 中添加宏定义CONFIG_NAND_S3C2440

完成上面两步操作后,我们就成功将Nand 的代码添加到我们的uboot 中了。

1.2.2 修改s3c2440_nand.c 使其适配我们的jz2440

我们使用的是s3c2410 的nand 代码,其并不适配我们的s3c2440 芯片。所以我们需要基于s3c2410 的代码上进行修改。

添加宏定义

为了方便进行操作,我们仿造s3c2410 定义一些s3c2440 芯片操作Nand Flash 控制器需要用到宏定义:

// 与时序设置有关,在设置时序时使用到了
#define S3C2440_NFCONF_TACLS(x)    ((x)<<12)
#define S3C2440_NFCONF_TWRPH0(x)   ((x)<<8)
#define S3C2440_NFCONF_TWRPH1(x)   ((x)<<4)

// 控制有关
#define S3C2440_NFCONT_nFCE		    (1<<1)
#define S3C2440_NFCONT_ENABLE	    (1)
#define S3C2440_NFCONT_INITECC	    (1<<4)
#define S3C2440_NFCONT_MAINECCLock  (1<<5)
#define S3C2440_NFCONT_SpareECCLock (1<<6)

// 寄存器地址
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值