<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM JTAG調試常見(jiàn)問(wèn)題

ARM JTAG調試常見(jiàn)問(wèn)題

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
1 - 檢測不到目標系統
調試前,請把目標板連接好,然后用調試軟件檢測目標系統。如果檢測不到目標系統,請做以下的檢查。
A - 確定你的連接是正確的;
B - 確定你使用的仿真器是被調試軟件支持的
C - 對WIGGLER而言,因為沒(méi)有固定的電路圖,所以需要在軟件里做相應的設置;
D - 對LPC2000系列而言,RTCK管腳一般是用來(lái)控制是否使能JTAG接口的,請查閱數據手冊;
E - 如果你用的芯片比較特殊,例如STR91X,因為內部掃描鏈是串接的,請設置好TAP,以讓仿真器知道掃描鏈的長(cháng)度;
2 - 程序下載不正確,程序跑飛
一般的用戶(hù),剛開(kāi)始調試的時(shí)候,編譯好程序,就直接點(diǎn)擊調試。但結果發(fā)現調試根本沒(méi)有按照預期的進(jìn)行。發(fā)生這種問(wèn)題一個(gè)最常見(jiàn)的原因是程序根本沒(méi)有正確下載到目標系統中去。
對SDRAM而言,上電后一般都是不可以使用的,需要進(jìn)行相應的配置才可以使用。所以如果是在SDRAM里進(jìn)行調試,請先對SDRAM進(jìn)行配置,或者確定SDRAM已經(jīng)初始化好了。如果是內部SRAM,一般來(lái)說(shuō),可以直接使用。所以,做一般的測試,最簡(jiǎn)單的辦法是使用片內SRAM。
在調試的時(shí)候,最好是自己通過(guò)內存觀(guān)察窗口判斷一下,程序是否是下載到期望的地址去了,下載是否正確。以免出現調試跑飛的問(wèn)題。
3 - 軟件斷點(diǎn)和硬件斷點(diǎn)的區別和數量限制
所有的ARM7/ARM9芯片,內部有2個(gè)斷點(diǎn)單元。斷點(diǎn)單元可以用于設置硬件斷點(diǎn)或是軟件斷點(diǎn)。
先說(shuō)說(shuō)硬件斷點(diǎn)和軟件斷點(diǎn)的區別。硬件斷點(diǎn)是通過(guò)監測地址來(lái)觸發(fā)斷點(diǎn)的。所以,硬件斷點(diǎn)可以設置在任何地方,不管是FLASH,ROM還是RAM,只要給定地址就可以了。而軟件斷點(diǎn)是通過(guò)監測特定的指令來(lái)觸發(fā)斷點(diǎn)的。在某個(gè)地址設置軟件斷點(diǎn)的時(shí)候,仿真器會(huì )將這個(gè)地址的數據/指令替換成一個(gè)特殊格式的指令。斷點(diǎn)單元通過(guò)監測這個(gè)特殊格式的指令來(lái)觸發(fā)斷點(diǎn)。因為需要執行替換操作,所以軟件斷點(diǎn)只能設置在RAM里面。如果斷點(diǎn)單元設置成監測某個(gè)地址,那一個(gè)斷點(diǎn)單元只能監測一個(gè)地址,所以只能設置2個(gè)硬件斷點(diǎn)。如果斷點(diǎn)單元設置成監測某個(gè)固定格式的指令,那一個(gè)斷點(diǎn)單元可以支持數量沒(méi)有限制的軟件斷點(diǎn)。因為設置軟件斷點(diǎn)的時(shí)候只需要把要說(shuō)著(zhù)斷點(diǎn)的位置的數據替換成被監測的固定格式的指令就可以了。這就是為什么大家經(jīng)??吹秸f(shuō)支持2個(gè)硬件斷點(diǎn)和數目不限的軟件斷點(diǎn)。但這里還是要提醒以下,如果2個(gè)斷點(diǎn)單元都用于硬件斷點(diǎn),那用戶(hù)就不可以設置軟件斷點(diǎn)了。
4 - 在FLASH內進(jìn)行調試
在FLASH進(jìn)行調試,本質(zhì)上來(lái)說(shuō),和在SDRAM/SRAM里調試是一樣的。區別是,FLASH是只讀的,對FLASH進(jìn)行寫(xiě)操作的時(shí)候,需要特別的命令。如果IDE支持直接將程序燒寫(xiě)到FLASH進(jìn)行調試,那調試就會(huì )和在RAM里差不多。如果IDE不支持自動(dòng)下載,可以先通過(guò)燒寫(xiě)軟件將要調試的程序燒寫(xiě)到FLASH里面,然后在進(jìn)行調試。在FLASH和RAM里面進(jìn)行調試的另外一個(gè)區別在與可使用的斷點(diǎn)數量。因為FLASH是只讀的,所以只能使用硬件斷點(diǎn),所以最多只能使用2個(gè)斷點(diǎn)。很多時(shí)候,單步運行也需要一個(gè)斷點(diǎn)來(lái)實(shí)現,所以,用戶(hù)只能使用一個(gè)斷點(diǎn)。清楚了這點(diǎn),碰到提示說(shuō)沒(méi)有斷點(diǎn)可以使用了,不能設置斷點(diǎn),或者不能單步運行的時(shí)候,就知道是怎么回事情了。
5 - 軟件斷點(diǎn)被覆蓋
前面我們提到,軟件斷點(diǎn)是通過(guò)替換指令來(lái)實(shí)現的。這就存在一個(gè)可能,設置好的軟件斷點(diǎn)被覆蓋掉了。特別是自拷貝程序,仿真器在拷貝前在某個(gè)地址設置了一個(gè)軟件斷點(diǎn)。然后執行拷操作,這樣的結果是設置斷點(diǎn)的位置的值由于自拷貝而發(fā)生了改變,由于新的值并不是被監測的特殊指令,所以這個(gè)斷點(diǎn)就會(huì )失效。造成在這個(gè)位置程序不能停止的情況。這樣的情況相對來(lái)說(shuō)比較少,這里只是提醒一下,希望對碰到類(lèi)似情況的朋友有幫助。
6 - 反匯編調試
在調試的時(shí)候,一般看的都是源文件,匯編或C語(yǔ)言。如果調試的時(shí)候發(fā)現運行與期望的不一或是跑飛,可以看看反匯編,單不運行幾步,然后通過(guò)觀(guān)察寄存器和內存來(lái)判斷每條指令的運行是否正確。


評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>