下面开始让uboot从nand启动
把这里打开
/*#ifndef CONFIG_SKIP_LOWLEVEL_INIT //在start.S文件中屏蔽u-boot对CPU、RAM的初始化
bl cpu_init_crit
#endif*/
原理部分参考http://blog.chinaunix.net/u3/101649/showart_2119943.html
但我其实用的是tekkaman的代码。
代码就不贴了,反正和他们写的一样,我自己没什么改动。但其实这里我卡了很久。这部分debug可以采用点led的方式,就是是这样
ldr r3, =GPBDAT
ldr r4, =0x20
str r4, [r3]
然后看led亮的情况确定卡在哪里。 因为这块板子我只有viv的源码,所以当初我copy了一些viv中的东西过来,结果卡在一个打印函数的地方(打印函数里有循环),搞了我很久,debug时我把代码改的很乱,所以就不贴了。
另外要注意smdk2440.h里的宏。 我发现按照tekkmen的代码,开一些宏启动不起来,一些涉及到mem flash的宏不能乱开,要看自己的板子配置。
网卡移植参考http://blog.chinaunix.net/u3/101649/showart_2126764.html
注意网卡是接到哪个bank上,要修改board/samsung/smdk2440/lowlevel_init.S这个文件
我的网卡直接在 bank3上,修改如下
#define B3_BWSCON (DW16)//(DW16 + WAIT + UBLB) 用默认的(DW16 + WAIT + UBLB)工作不正常
时序也可以调下
#define B3_Tacs 0x0//0x0 /* 0clk */
#define B3_Tcos 0x0//0x3 /* 4clk */
#define B3_Tacc 0x7//0x7 /* 14clk */
#define B3_Tcoh 0x0 /* 1clk */
#define B3_Tah 0x0 /* 0clk */
#define B3_Tacp 0x0//0x3 /* 6clk */
#define B3_PMC 0x0 /* normal */
但我没研究
smdk2440.h中也要修改
#define CONFIG_DM9000_BASE 0x18000300 //网卡片选地址 bank3 看datasheet
install-bootloader=tftp 30000000 u-boot.bin;nand erase 0 40000;nand write 30000000 0 0
install-kernel=tftp 30000000 uImage;nand erase 60000 200000;nand write.i 30000000 60000 0
install-filesystem=tftp 30000000 filesystem.yaffs;nand erase 260000 3d9c000;nand write.yaffs1 30000000 260000 0
erase-env=nand erase 40000 20000
bootargs=root=/dev/mtdblock2 rw console=ttySAC0,115200
bootcmd=nand read.i 0x32000000 0x60000 0x200000; bootm
bootdelay=1
baudrate=115200
ethaddr=00:0c:20:02:0a:5b
ipaddr=192.168.1.168
serverip=192.168.1.200
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial