裸機(jī)調(diào)試分享:RVDS4.0 + openJTAG
上個月買了一個openJTAG一直沒時(shí)間使用,今天用了一下,還行,給大家分享一下RVDS4.0與openJTAG的使用方法
首先得安裝好openJTAG的相關(guān)驅(qū)動以及GDB調(diào)試軟件,這個在openJTAG的使用手冊上面都有,這里就不多說了,來看看RVDS4.0的設(shè)置吧
只有一個.s文件,是匯編寫的,用來測試無uboot環(huán)境下的啟動的,其它編譯設(shè)置請看我的博文,RVDS4.0建立工程,我這里使用的地址為0x0,地址,也就是ARM啟動后第一條指令所在位置.
;----------------------------------------------------------------------------------------------------- ;功能: S3C6410硬件初始化代碼 ;作者: 異靈元(cp1300@139.com) ;創(chuàng)建時(shí)間:2012-10-27 ;修改時(shí)間:2012-10-27 ;修訂說明: ;----------------------------------------------------------------------------------------------------- PRESERVE8 INCLUDE?????s3c6410_map.inc ;寄存器地址映射 AREA????Init,CODE,READONLY ENTRY? B ResetHandler ;系統(tǒng)硬件復(fù)位 B UndHandler ;未定義指定中斷 B SWIHandler?????? ;軟件中斷 B PaAbort???????????? ;取指令異常中斷 B DaAbort??????????? ;取數(shù)據(jù)異常中斷? B . ;保留 B IRQHandler????? ;中斷 B FIQHandler????? ;快速中斷 ResetHandler PROC ;----------------------------------------------------------------------------------------------------- ;關(guān)閉看門狗 ;----------------------------------------------------------------------------------------------------- LDR R0, =S3C6410_WTCON ;看門狗寄存器地址 LDR R1, =0x0 STR R1, [R0] ;寫0,關(guān)閉看門狗 ;----------------------------------------------------------------------------------------------------- ;點(diǎn)亮所有LED ;----------------------------------------------------------------------------------------------------- LDR R0, =S3C6410_GPMCON LDR R1, =0x1111 ;推挽輸出 STR R1, [R0] LDR R0, =S3C6410_GPMDAT LDR R1, =0x0 ;寫入0,點(diǎn)亮所有燈 STR R1, [R0] main_loop B main_loop ENDP UndHandler PROC EXPORT UndHandler [WEAK] B . ENDP SWIHandler PROC EXPORT SWIHandler [WEAK] B . ENDP PaAbort PROC EXPORT PaAbort [WEAK] B . ENDP DaAbort PROC EXPORT DaAbort [WEAK] B . ENDP IRQHandler PROC EXPORT IRQHandler [WEAK] B . ENDP FIQHandler PROC EXPORT FIQHandler [WEAK] B . ENDP END
再看看如何配置調(diào)試
(默認(rèn)大家已經(jīng)安裝好了openJTAG相關(guān)驅(qū)動)
?
1.首先得安裝RVDS4.0,不會的看看我的博客
安裝RVDS4.0 : http://blog.csdn.net/cp1300/article/details/7772645
RVDS4.0建立工程: http://blog.csdn.net/cp1300/article/details/7772809
?
2.安裝zylincdt插件.
不好意思我的是漢語的,大家看著辦啊
點(diǎn)擊‘幫助’ -------------- ‘SoftwareUpdates’ ---------------‘Find and Install’
點(diǎn)開后選擇下面的一個選項(xiàng),下一步
如下圖界面
點(diǎn)擊新建遠(yuǎn)程站點(diǎn) ,右邊的第一個
?
名稱填寫:? zylincdt
URL填寫:???????? http://opensource.zylin.com/zylincdt
?
?
勾選后點(diǎn)擊完成,需要聯(lián)網(wǎng)下載更新,按提示安裝,中途可能會有警告,確認(rèn)就行,安裝完成后會自動重啟RVDS的,完成后
在調(diào)試?yán)锩鏁喑鰖ylin 相關(guān)的調(diào)試選項(xiàng).
3.新建一個調(diào)試
在 Zylin Embedded debug(Native) 下面新建一個調(diào)試配置,如上圖,我的是 ok6410無Uboot調(diào)試
在Debugger選項(xiàng)卡上面需要注意了
Debugger 選擇 Embedded GDB,設(shè)置如上圖所示
勾選一個 默認(rèn)的斷點(diǎn),我的是ResetHandler這個按照自己的實(shí)際情況,如果有C語言這里一般就是main函數(shù)了
GDB調(diào)試器:選擇你的openJLINK光盤里面安裝的工具.說明里面都有,我的路徑是:D:Program Filesyagartobinarm-elf-gdb.exe
GDB命令文件這個也是光盤里面帶的,我的是:D:DesktopOK6410ok6410filestarts3c6410_gdb.init
在命令選項(xiàng)卡里面添加四條命令,功能依次是 載入調(diào)試文件,設(shè)置斷點(diǎn),繼續(xù)執(zhí)行
命令為
monitor reset
monitor halt
load
//break main
continue
這樣可以一鍵運(yùn)行,將//去掉程序會自動停在主函數(shù),注意下一次仿真下載之前需要停止本次仿真.
應(yīng)用即可
4.開始調(diào)試
在openJTAG的終端里面輸入 halt,暫停,其實(shí)可以在設(shè)置的時(shí)候第一條指令如果是break,這個步驟就可以省略了,但是建議多次調(diào)試后復(fù)位一下開發(fā)板
調(diào)試前一定要先打開OPENJTAG : OPENOCD GUI,如圖
設(shè)置在光盤手冊里面也有.
編譯好工程后點(diǎn)擊調(diào)試即可
注意要選擇剛剛建立的調(diào)試配置.
5.調(diào)試
出現(xiàn)如上圖,就成功了,省下的就非常簡單了,大家自己琢磨琢磨.
看完后大家肯定會覺得沒什么用,因?yàn)樽约菏稚峡赡軟]有openJTAG,并且這個還有點(diǎn)貴,但是告訴大家一個好消息,JLINK一樣可以這樣用,一樣可以再RVDS4.0上面進(jìn)行調(diào)試,使用方法和eclipse一模一樣的,不懂可以查eclipse的使用,但是jlink很容易卡死,很不穩(wěn)定。
一樣的程序,跑飛了。。。
卡死了。。。
附上:jlink調(diào)試,大部分操作都一樣,設(shè)置如下,調(diào)試前想打開jlink-gdb