(本文是我以前所写,放在此处,以备今后学习查看)
vmware+ubuntu9.10+s3c6410
使用tftp下载内核至开发板,输入命令:tftp c0008000 zImage 出现:
undefined instruction
pc : [<50008098>] lr : [<57e2263c>]
sp : 57fffe28 ip : afc7cbf5 fp : 57e80c18
r10: 00000000 r9 : 57e316f4 r8 : 57e7bfdc
r7 : 000006OK
后来发现:
## Booting image at 50008000 ...
Boot with Image
Starting kernel ...
即首地址其实是50008000,所以输入:tftp 50008000 zImage
下载后输入:
nand erase 40000 700000 //擦除flash
nand write 50008000 40000 700000 //烧写刚下载的文件到指定位置
输出:
data abort
pc : [<50008098>] lr : [<57e2263c>]
sp : 57fffe28 ip : afc7cbf5 fp : 57e80c18
r10: 00000000 r9 : 57e316f4 r8 : 57e7bfdc
r7 : 000006OK
其实再看看刚才下载后输出的信息:Bytes transferred = 9239804 (8cfcfc hex) ,这里已经显示了文件大小。
所以擦除flash和烧写到指定位置时,最后一个参数应该比这个16进制数大一些(8cfcfc hex) 。
故下载完成后,输入:
nand erase 40000 900000
nand write 50008000 40000 900000
这样就不会出现以上错误了。
总结:若按别人的方法做而不去研究明白其原理,是很难做成的,关键在于知道每步是做什么的,同时要根据自己的实际情况修改。