开发板启动后提示undefined instruction或data abort的解决办法


(本文是我以前所写,放在此处,以备今后学习查看)

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

    这样就不会出现以上错误了。 

    总结:若按别人的方法做而不去研究明白其原理,是很难做成的,关键在于知道每步是做什么的,同时要根据自己的实际情况修改。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM