u-boot新增命令后出现data abort
(一)問題描述
u-boot下新增了一條update的命令,直接輸入update沒有報(bào)錯(cuò),但是輸入up按TAB鍵補(bǔ)全時(shí)發(fā)現(xiàn)出現(xiàn)data abort,而且輸入不支持的命令也會有data abort
(二)解決方法
最開始我包含的頭文件為:
#include <command.h> #include <common.h>頭文件改為下面后問題解決,但順序不是最重要的原因,而是我用到了strncmp函數(shù),頭文件包含順序出錯(cuò)
#include <common.h> #include <command.h>修改完成后效果:
(三)定位思路
1.最開始嘗試下文的方法: 記一次uboot 中出現(xiàn)的 data abort 錯(cuò)誤,文章寫得很不錯(cuò),但是當(dāng)我反匯編以后,并沒有解決問題,但是大概的問題可能找到了,按照上文提供的思路:
首先在mainloop函數(shù)打印出gd->reloc off = 13b000 ,出錯(cuò)PC的指針23f5fa6c,兩者相減得到23e24a6c,查看反匯編語言得到:
這里只是看到可能是strncmp有問題,但是具體是誰調(diào)用了strncmp出錯(cuò)并沒有給出,考慮是不是頭文件的原因,加上linux/string.h頭文件后,不用改變上面說的command.h和common.h的順序也可以了
這里定位就到這里,問題已解決,待深究問題?為什么編譯的時(shí)候沒有報(bào)錯(cuò),而是執(zhí)行的時(shí)候報(bào)錯(cuò)了,理論來說頭文件不包含編譯就會報(bào)警告的
總結(jié)
以上是生活随笔為你收集整理的u-boot新增命令后出现data abort的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 省呗一直在打款中什么意思
- 下一篇: 大盘一天绿,比比谁更惨