一、u-boot找不到nandflash
我用的开发板是fl2440的,里面没有norflash只有nandflash。我用了s3c2410的u-boot改的,所以要把内核从norflash启动改成适合我fl2440的从nandflash启动。我开始做u-boot的,make不会出错但烧录的时候总是报错说u-boot不能找到nandflash。这个问题只是我在fl2440.h的头文件中没有去掉s3c2410头文件的支持。
在这里我虽然定义了S3C2440与FL2440的头文件,可是同时在没有去掉S3C2410与SMDK2410的头文件定义,因此在nand_read.c的文件中如下地方:
make时系统就会将norflash支持的代码编译进u-boot而不会编译nandflash支持的代码。
这时我们只需要把S3C2440与FL2440的头文件从fl2440.h中去掉就可以了。不过要注意的是,改动fl2440.h之后要先make distclean再make fl2440_config,然后才能make编译。
二、添加u-boot的环境变量:
我做出来的u-boot烧录进去之后并没有开机启动倒数,也就是说u-boot并不能找到内核启动的地址,也就是u-boot中并没有设置bootcmd来告诉u-boot内核所在的地址:
如图是我做出来的u-boot环境变量:
如图是有bootcmd的u-boot环境变量:
首先我们要在common/env_common.c文件中添加环境变量支持:
然后在include/configs/fl2440.h的头文件中添加宏定义支持:
改了头文件按上面的步骤:make distclean --> make fl2440_config --> make
烧录之后就有内核的倒数3秒启动内核了。
总结一下我们要改环境变量就先在common/env_common.c文件中添加环境变量的支持,然后再去include/configs/fl2440.h下添加宏定义。