微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(三)

嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(三)

时间:11-20 来源:互联网 点击:

开发板配置文件include/configs/my2440.h文件中定义支持Nand操作的相关宏,如下:

#gedit include/configs/my2440.h

#define CONFIG_CMD_NAND
#define CONFIG_CMDLINE_EDITING

#ifdef CONFIG_CMDLINE_EDITING
#undef CONFIG_AUTO_COMPLETE
#else
#define CONFIG_AUTO_COMPLETE
#endif

#if defined(CONFIG_CMD_NAND)
#define CONFIG_SYS_NAND_BASE0x4E000000//Nand配置寄存器基地址
#define CONFIG_SYS_MAX_NAND_DEVICE1
#define CONFIG_MTD_NAND_VERIFY_WRITE 1
//#define NAND_SAMSUNG_LP_OPTIONS1//注意:我们这里是64M的Nand Flash,所以不用,如果是128M的大块Nand Flash,则需加上
#endif

然后,在drivers/mtd/nand/Makefile文件中添加s3c2440_nand.c的编译项,如下:

# gedit drivers/mtd/nand/Makefile

COBJS-y+=s3c2440_nand.o
COBJS-$(CONFIG_NAND_S3C2440)+=s3c2440_nand.o

最后,重新编译u-boot并使用supervivi的a命令下载到Nand Flash中,把开发板调到Nand档从Nand启动,启动结果图如下:

从上图可以看出,现在u-boot已经对我们开发板上64M的Nand Flash完全支持了。Nand相关的基本命令也都可以正常使用了。

补充内容:

从以上的启动信息看,有一个警告信息“*** Warning - bad CRC or NAND, using default environment”,我们知道,这是因为我们还没有将u-boot的环境变量保存nand中的缘故,那现在我们就用u-boot的saveenv命令来保存环境变量,如下:

从上图可以看到保存环境变量并没有成功,而且从信息看他将把环境变量保存到Flash中,显然这不正确,我们是要保存到Nand中。原来,u-boot在默认的情况下把环境变量都是保存到Nor Flash中的,所以我们要修改代码,让他保存到Nand中,如下:

#gedit include/configs/my2440.h

//注释掉环境变量保存到Flash的宏(注意:如果你要使用上一篇中的从Nor启动的saveenv命令,则要恢复这些Flash宏定义)

//#define CONFIG_ENV_IS_IN_FLASH 1
//#define CONFIG_ENV_SIZE 0x10000

//添加环境变量保存到Nand的宏(注意:如果你要使用上一篇中的从Nor启动的saveenv命令,则不要这些Nand宏定义)

#define CONFIG_ENV_IS_IN_NAND 1
#define CONFIG_ENV_OFFSET 0x30000//将环境变量保存到nand中的0x30000位置
#define CONFIG_ENV_SIZE 0x10000

重新编译u-boot,下载到nand中,启动开发板再来保存环境变量,如下:

可以看到,现在成功保存到Nand中了,为了验证,我们重新启动开发板,那条警告信息现在没有了,如下:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top