在board/samsung/mini2440加入NAND Flash读函数文件,这个文件主要支持uboot从nand中拷贝自身到ram中。uboot中代码搬移部分,所使用的语句
@ copy U-Boot to RAM
ldr r0, =TEXT_BASE
mov r1, #0x0
mov r2, #LENGTH_UBOOT
bl nand_read_ll
tst r0, #0x0
beq ok_nand_read
实现代码从nand到ram的拷贝,使用到了nand读函数。拷贝vivi中的nand_read.c文件board/samsung/mini2440即可,基本上大陆上移植的都是这样做的,在此把该文件的内容贴出来,目的是对一些难理解的代码进行解析:参考
http://home.eeworld.com.cn/my/space.php?uid=135723&do=blog&id=25347
对于这部分代码的理解:s3c2440里面已经集成了对nand flash操作的相关寄存器,只要你的nand flash接线符合s3c2440 datasheet的接法,就可以随便使用s3c2440 对于nandflash的相关寄存器,例如如果你想像nand flash写一个命令,那么只要对命令寄存器写入你的命令就可以了,s3c2440 可以自动帮你完成所有的时序动作,写地址也是一样。反过来说如果没有了对nand flash的支持,那么我们对nand falsh的操作就会增加好多对I/O口的控制,例如对CLE,ALE的控制。s3c2440已经帮我们完成了这部分工作了
/*下面nand_read_ll 的三个参数来自start.S里面调用nand_read_ll 前的r0、r1、r2*/
注意一点就是,修改了nand_read.c 文件之后,应该相应修改board/samsung/mini2440下的Makefile,在里面加入nand_read.o目标,如下:
COBJS := mini2440.o nand_read.o flash.o
SOBJS := lowlevel_init.o<