開發板啟動后提示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