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