(本文是我以前所寫,放在此處,以備今后學習查看)
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
這樣就不會出現以上錯誤了。
總結:若按別人的方法做而不去研究明白其原理,是很難做成的,關鍵在於知道每步是做什么的,同時要根據自己的實際情況修改。