Eclipse在線(xiàn)調(diào)試ARM11——Tiny6410+OpenJTAG
其中“D:/Working/arm/init/init.bin”要根據(jù)您的具體情況進(jìn)行改寫(xiě)。本文引用地址:http://m.butianyuan.cn/article/201611/322800.htm
第二種跟第一種的不同在于第二種情況需要將init.bin文件燒寫(xiě)到Steppingtone來(lái)初始化Tiny6410的DDR。init.bin及其工程可以在這里下載,適用于所有支持OpenJTAG的S3C6410開(kāi)發(fā)板:
另外,配置好這些后還需要配置調(diào)試環(huán)境的Commands選項(xiàng),對(duì)于第一種情況,可以如下填寫(xiě):
對(duì)于第二種情況,則可以這樣寫(xiě):
第一個(gè)里面寫(xiě)有reset和halt的原因是鎖相環(huán)不能重復(fù)初始化,如果程序中對(duì)鎖相環(huán)進(jìn)行了設(shè)置reset之后就會(huì)失效,這樣每次調(diào)試都會(huì)執(zhí)行reset,后一次的設(shè)置就不會(huì)受前一次的影響。對(duì)于第二中情況里面沒(méi)有加reset是因?yàn)榇a要寫(xiě)到DDR中進(jìn)行調(diào)試,reset之后init.bin的初始化作用失效,調(diào)試時(shí)無(wú)法燒寫(xiě)代碼到DDR,進(jìn)而無(wú)法進(jìn)行調(diào)試。所以第二種情況下被調(diào)試的代碼應(yīng)該判斷自己的位置,可以模擬u-boot,檢測(cè)到代碼在DDR中運(yùn)行時(shí)跳過(guò)lowlevel_init。
通過(guò)上面這些分析,我們應(yīng)該了解了OpenJTAG的調(diào)試原理,現(xiàn)在總結(jié)一下,使用OpenJTAG在線(xiàn)調(diào)試Tiny6410時(shí)應(yīng)該按照以下步驟進(jìn)行:
(1)啟動(dòng)OpenOCD,連接OpenOCD到開(kāi)發(fā)板,然后在telnet中執(zhí)行halt,將目標(biāo)機(jī)掛起。
注意:默認(rèn)狀態(tài)下,OpenOCD自帶配置文件的JTAG時(shí)鐘頻率是6000,對(duì)于某些開(kāi)發(fā)板來(lái)說(shuō)這個(gè)工作頻率太高,經(jīng)過(guò)測(cè)試Tiny6410的JTAG時(shí)鐘頻率為1000時(shí)最佳。
(2)創(chuàng)建Eclipse,編碼代碼并編譯。
注意:代碼編譯時(shí)應(yīng)該啟用-g選項(xiàng),這樣生成的ELF文件才會(huì)帶有調(diào)試信息,如果不加-g則沒(méi)有調(diào)試信息,無(wú)法調(diào)試。
(3)按照前面的貼圖,配置Eclipse調(diào)試選項(xiàng)。Commands的break _start是指對(duì)_start下斷點(diǎn),當(dāng)然可以改成其他函數(shù)。
(4)進(jìn)行調(diào)試。
好了,到這里OpenJTAG調(diào)試Tiny6410的全部工作已經(jīng)完成,這時(shí)你已經(jīng)可以順利的進(jìn)行Tiny6410的單步調(diào)試了,起始這里講述的調(diào)試原理適用于所有支持OpenJTAG的S3C6410開(kāi)發(fā)板,所以如果調(diào)試其他開(kāi)發(fā)板也可以按照以上分析進(jìn)行操作,下面是單步調(diào)試的貼圖,作為真相吧!
最后,提幾個(gè)需要注意的問(wèn)題:
(1)在編寫(xiě)Makefile時(shí)應(yīng)該注意添加-g選項(xiàng),否則elf文件中沒(méi)有調(diào)試信息,無(wú)法進(jìn)行調(diào)試
(2)在編寫(xiě)Makefile時(shí)不應(yīng)使用-O優(yōu)化選項(xiàng),優(yōu)化后的代碼跟原代碼失去了對(duì)應(yīng)關(guān)系,調(diào)試時(shí)跳轉(zhuǎn)錯(cuò)亂。
(3)調(diào)試uboot或者內(nèi)核時(shí)需要根據(jù)具體的要求修正openjtag.cfg中的頻率。
(4)OpenJTAG下載程序時(shí)應(yīng)該使用OpenOCD而不應(yīng)該使用oflash,如果是用oflash需要將dbgsel引腳拉高,強(qiáng)烈建議直接使用OpenOCD指令進(jìn)行燒寫(xiě)。對(duì)于TQ2440或者M(jìn)INI2440可以直接使用oflash燒寫(xiě)程序。
評(píng)論