具体的流程在这里
http://blog.csdn.net/shulianghan/article/details/40299813
但是上面的这篇文章中,有些细节的地方需要注意。
image.png
上面的-不要直接复制,要用无输入法的键盘打入。
接下来按照里面的步骤走,到最后烧写成功,启动Android系统的时候可能会遇到一个很严重的错误。
系统内核的读取位置错误。
****************************************
** u-boot 1.1.6 **
** Updated for OK6410 TE6410 Board **
** Version (2012-09-23) **
** OEM: Forlinx Embedded **
** Web: http://www.witech.com.cn **
****************************************
CPU: S3C6410 @532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC Mode)
Board: SMDK6410
DRAM: 256 MB
Flash: 0 kB
NAND: 1024 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x500000, size 0x500000
5242880 bytes read: OK
## Booting image at c0008000 ...
Boot with Image
Starting kernel ...
undefined instruction
pc : [<50008004>] lr : []
sp : cffffddc ip : cfe7ffb8 fp : 00000000
r10: cff02618 r9 : 00000002 r8 : cfe7ffdc
r7 : 00000000 r6 : 00000000 r5 : 50000124 r4 : 00000000
r3 : 50008000 r2 : 50000100 r1 : 0000065a r0 : 00000000
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
reset...
解决的步骤:
1,使用SD卡启动,进入命令行模式打入
printenv
查看SD卡烧写环境变量,可以找到内核烧写的起始位置。
bootargs=root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
bootcmd=nand led-start;nand erase ;fatload mmc 0:1 0x50008000 u-boot.bin;nand write.uboot 0x50008000 0 0x200000;fatload mmc 0:1 0x50008000 zImage;nand write.e 0x50008000 0x500000 0x500000; fatload mmc 0:1 0x50008000 rootfs.yaffs2; nand write.yaffs2 0x50008000 0x01e00000 $filesize; nand beep; nand led-end
bootdelay=1
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
ipaddr=192.168.2.111
serverip=192.168.2.100
gatewayip=192.168.2.1
netmask=255.255.255.0
stdin=serial
stdout=lcd
stderr=lcd
Environment size: 573/16380 bytes
找到zImage;nand write.e 查看后面的参数
然后用Nandflash启动开发机,进入到命令行模式,然后输入
setenv bootcmd 'nand read 0x50008000 0x500000 0x500000;bootm 0x50008000'
saveenv
设置对了内核的起始读取位置后,烧写的系统就能正常启动了。