www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號(hào)精選 > OFweek維科網(wǎng)
[導(dǎo)讀]1如果碰到ARM運(yùn)行程序的問題,最好把下面的debug開關(guān)打開,這樣可以打印出很多有效信息,但也會(huì)使得仿真變慢。2ARM運(yùn)行的原始程序可以是匯編程序、C語言程序,最后編寫Makefile文件,通過ARM專用的交叉編譯器編譯,生成最后可運(yùn)行的匯編和二進(jìn)制代碼。(1)原始文件類似如下...


1

如果碰到ARM運(yùn)行程序的問題,最好把下面的debug開關(guān)打開,這樣可以打印出很多有效信息,但也會(huì)使得仿真變慢。


2ARM運(yùn)行的原始程序可以是匯編程序、C語言程序,最后編寫Makefile文件,通過ARM專用的交叉編譯器編譯,生成最后可運(yùn)行的匯編和二進(jìn)制代碼。

(1)

原始文件類似如下:

start.s/main.c/a.c/b.c/boot.hex

(2)

生成的反匯編文件如下:這個(gè)文件在后面的debug過程中非常有用,可以逐一比較,定位出錯(cuò)誤點(diǎn)。


(3)

最終運(yùn)行的二進(jìn)制代碼:

左邊一般為地址,右邊為數(shù)據(jù)。這份二進(jìn)制代碼就是ARM最終運(yùn)行的代碼,一般在數(shù)字IC驗(yàn)證中,會(huì)通過load的方式,下載到SPI,flash或者DDR等存儲(chǔ)模塊中,供ARM core運(yùn)行使用。當(dāng)然,為了節(jié)省時(shí)間,IC驗(yàn)證過程中,經(jīng)常會(huì)使用backdoor的方式直接寫到對(duì)應(yīng)存儲(chǔ)模塊中。


3

步驟1中的開關(guān)打開之后,仿真就會(huì)產(chǎn)生如下的log文件,能精準(zhǔn)定位到現(xiàn)在ARM執(zhí)行哪條指令,然后對(duì)照步驟2中的反匯編代碼就可以定位出錯(cuò)誤點(diǎn),然后再進(jìn)一步debug。

4當(dāng)然最有效的debug方式,還是需要借助波形來進(jìn)行。下面是幾組很有效的debug信號(hào):

(1)

ARM?AXI bus總線,data bus用于數(shù)據(jù)讀寫,instrbus用于讀取指令,periphbus主要是對(duì)其他IP?模塊的讀寫控制操作。

(2)

PC指針和ARM寄存器:

PC指針是所有CPU debug的必看信號(hào),能清晰的知道ARM運(yùn)行指令的順序,有一點(diǎn)需要注意的時(shí),PC指針一般會(huì)預(yù)先多讀取2筆指令。

通用寄存器r*也是debug重點(diǎn)看的信號(hào),可以對(duì)照手冊(cè)和匯編代碼來看。

(3)

因?yàn)?/span>ARM運(yùn)行的代碼都存儲(chǔ)在存儲(chǔ)模塊中,所以經(jīng)常出現(xiàn)讀取的時(shí)候出錯(cuò)的情況,比如如果是放在DDR中,那么DDR的端口總線就是重點(diǎn)查看的信號(hào),這里也是經(jīng)常會(huì)出錯(cuò)的。


最后,需要注意的是,ARM的bus總線或者通用寄存器中,一旦讀到X值進(jìn)去,即使這個(gè)X值不會(huì)被使用,最終整個(gè)程序也會(huì)出錯(cuò)的。

以上簡單羅列了一下在系統(tǒng)級(jí)驗(yàn)證中ARM程序運(yùn)行的debug方法,內(nèi)容簡單,適合初學(xué)者使用。有更多的好的debug方法,也歡迎大家一起交流啊。

謝閱讀,別走!點(diǎn)贊、關(guān)注、轉(zhuǎn)發(fā)后再走吧


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉