这个问题断断续续花费了几天时间才算彻底解决。用这么长时间解决这么个小问题,什么原因?分析一下,归咎与我代码阅读能力及调试能力太差。以前裁的UBOOT都是运行在nor的,而且裁了几次uboot都是照抄别人的手册,实在收获甚微。过去的惯性驱使我再次参照别人的手册修改代码,这次可没那么顺利。
在此要感谢tekkamanninja ,我是参照这个superman的手册修改的uboot 2008.10, tekkamanninja的文档没有这个版本的uboot,而uboot 2008.10版本较老,个别文件和新版uboot无法对应。抄起来还是有点难度的。
其中在tekkamanninja 文档中提到的s3c2410_nand.c文件,在uboot 2008.10版本里没有的,只好搜寻相关函数的踪迹,没s3c2410_nand.c至少也得找到到里面的函数吧,最后发现uboot 2008.10版本cpu/arm920t/s3c24X0/nand.c 文件里有相关函数的定义。。。
抄完手册,启动No NAND device found!!! 0 MiB god!失败
又重新对照手册,correct 启动仍旧打印
No NAND device found!!! 0 MiB
开始找这个问题原因很是茫然,百度,谷歌也没找到相关有效解决问题,哪里出问题了呢?最先想到的是
include/configs/micro2440.h 这个配置文件出了问题,于是仔细修改了一下,如下
#define CONFIG_CMD_NAND
#define CONFIG_ENV_IS_IN_NAND 1
//#define CONFIG_ENV_IS_IN_FLASH 1
#define CONFIG_ENV_OFFSET 0X60000
#define CONFIG_ENV_SIZE 0x20000