分享

UBOOT移植(NANDFLASH的支持)——初步移植(一)

 赵帅蹲守图书馆 2014-02-12

这里就仿造《TQ2440的学习—UBOOT移植(NAND FLASH的支持)——初步分析》中展示的S3C2410NAND FLASH驱动实现S3C2440NAND FLASH驱动。还是一步步的来,先实现基本的读写系统。至于硬件ECC校验就先不实现。

UBOOT下编写设备支持程序,还是遵循先配置头文件再修改的相关初始化代码的思路来进行。

配置头文件(include/configs/fzb2440.h

01
04 #define CONFIG_MTD_DEVICE
05 #define CONFIG_NAND_S3C2440
06
07 #define CONFIG_SYS_MAX_NAND_DEVICE 1
08 #define CONFIG_SYS_NAND_MAX_CHIPS 1
09
14 //#define CONFIG_SYS_NAND_BASE_LIST = {NAND_BASE_REG,...}
15
19 #define CONFIG_SYS_NAND_BASE 0x4e000000
20
26
29 #define CONFIG_S3C24XX_CUSTOM_NAND_TIMING
30
31 #ifdef CONFIG_S3C24XX_CUSTOM_NAND_TIMING
32 #define CONFIG_S3C24XX_TACLS 0
33 #define CONFIG_S3C24XX_TWRPH0 4
34 #define CONFIG_S3C24XX_TWRPH1 2
35 #endif
36
39 #define CONFIG_SYS_NAND_PAGE_SIZE 2048
40 //#define CONCIG_SYS_NAND_BLOCK_SIZE 4096
41 //#define CONFIG_SYS_NAND_PAGE_COUNT
42
45 #ifdef CONFIG_S3C2440_NAND_HWECC
46 #define CONFIG_SYS_NAND_ECCSIZE CONFIG_SYS_NAND_PAGE_SIZE
47 #define CONFIG_SYS_NAND_ECCBYTES 4
48 #endif
49
50 #define CONFIG_MTD_NAND_VERIFY_WRITE 1

关于NAND FLASH的宏配置,有一部分是通用的,一部分是只存在于特定驱动中的。

通用配置

CONFIG_CMD_NAND ——开启NAND FLASH支持主要就是支持相关的操作命令,这个可以说是总开关(默认已经包含在config_cmd_default.h中)。

CONFIG_MTD_DEVICE——在使用MTD驱动的规范的时候必须要定义这个宏。

CONFIG_SYS_MAX_NAND_DEVICE——描述有几个NAND FLASH设备。S3C2440上只有一个接口,所以就只有一个设备。

CONFIG_SYS_NAND_MAX_CHIPS——描述这个NAND FLASH设备上有几个NAND FLASH芯片。TQ2440上只使用了一个NAND FLASH芯片,所以就只有一个芯片。

CONFIG_SYS_NAND_BASE——描述NAND操作模块的基地址,S3C2440上是0x4e000000起始的。

CONFIG_SYS_NAND_PAGE_SIZE——描述所使用的NAND FLASH的页大小,TQ2440使用的2K页的芯片(如果不指定,MTD驱动也会自动尝试获取相关的信息,这里只是为开启硬件校验而定义,最好将其归类于硬件校验支持所需要的宏)。

CONFIG_SYS_NAND_ECCSIZE——这个是表明ECC校验的数据区的大小尺寸(软件校验默认256字节,硬件校验由于S3C2440的这部分功能是针对一个页实现的,所以既然使用2K页的NAND FLASH所以这部分也就和CONFIG_SYS_NAND_PAGE_SIZE相等)。

CONFIG_SYS_NAND_ECCBYTES——一次校验操作生成校验码的大小,S3C2440的硬件校验是生成4字节(软件校验默认一次3字节,2048字节页会进行8次操作)。

CONFIG_MTD_NAND_VERIFY_WRITE——在向NAND FLASH写数据的时候开启写校验功能,可以帮助发现写入不成功的情况。

特定配置(针对S3C2440

CONFIG_NAND_S3C2440——开启S3C2440NAND FLASH驱动的总开关。

CONFIG_S3C24XX_CUSTOM_NAND_TIMING——是否自行配置NAND FLASH的工作时序,驱动默认会配置一个。这里使用自己的配置。

CONFIG_S3C24XX_TACLS——NAND FLASHTACLS时序参数。

CONFIG_S3C24XX_TWRPH0——NAND FLASHTWRPH0时序参数。

CONFIG_S3C24XX_TWRPH1——NAND FLASHTWRPH1时序参数。

CONFIG_S3C2440_NAND_HWECC——是否开启S3C2440的硬件ECC校验,这里不开启。

有了配置头文件后,现在就要开始调试NAND FLASH的初始化过程,对相关部分进行修改。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多