迅為2K1000開發(fā)板

Ejtag調(diào)試器

在 9.6 小節(jié)中,我們在匯編節(jié)點實現(xiàn)了 led 閃爍的功能,如果您自己寫的程序沒有成功,我們該如何調(diào) 試呢?就可以利用 Ejtag 仿真器進行單步調(diào)試。
那我們要如何進行單步調(diào)試呢?我們是不是就得先知道每一個指令對應的地址呢?這樣我們才可以打斷點。我們先來修改一下在 9.6 小節(jié)中的代碼,我們加一個標簽。如下圖所示:

然后我們重新編譯 pmon 源碼生成 pmon 鏡像并燒寫到開發(fā)板,一定要將編譯的燒寫到開發(fā)板?。。〗又?pmon-loongson3/zloader.ls2k 使用命令/opt/gcc-4.9.3-64-gnu/bin/mips64el-linux-objdump -d start.o > 1.txt
將編譯得到的 start.o 文件進行反匯編并將結果輸出到 1.txt,添加 led3_ctrl 標簽的目的是為了反匯編以后更加容易找到 led3 控制相關的指令,如下圖所示:

使用命令 vim 1.txt 打開反匯編后的輸出文件,找到標簽 led3_ctrl 所在的位置,如下圖所示:

從上圖可以看出,控制 led3 相關的代碼是從地址 d60 開始的,而 MIPS 的入口地址是 0xbfc00000,所以我們是不是就可以把斷點打的地址為 0xbfc00d84 的地方呢,這個地方對應的指令為點燈操作。
接著我們啟動 Ejitag 工具并配置好 Ejtag 工具,在 Ejtag 命令行下輸入命令 hb 0xffffffffbfc00d84,注意,此
時開發(fā)板并未上電?。?!

接著我們給開發(fā)板上電,此時 hb 命令會執(zhí)行成,這時立刻輸入 set 命令停止 cpu,如下圖所示:

然后我們輸入命令 hbls,查看斷點是否設置成功,設置成功如下圖所示:

接著輸入命令 cont,讓 cpu 執(zhí)行到斷點出停止,如下圖所示:

然后使用命令 unhb 0xffffffffbfc00d84 刪除斷點,這里一定要刪除,不然 si 命令不能往下執(zhí)行,如下圖所示:

接著輸入命令 si 1 執(zhí)行 1 條執(zhí)行,si 1 的意思就是單步執(zhí)行 1 條指令,如下圖所示:

此時我們可以發(fā)現(xiàn) led3 已經(jīng)點亮,說明我們之前寫的匯編代碼是沒有問題的。如果大家沒有點亮,可以使用 set 命令來查看通用寄存器的值來排查錯誤。
接著我們將斷電打在關燈的指令位置,在反匯編 1.txt 文件中,我們可以發(fā)現(xiàn)關燈的指令是在 da0 位置, 如下圖所示:

所以我們輸入命令 hb 0xffffffffbfc00da0 將斷點打在這個位置下,如下圖所示:

然后執(zhí)行 cont 命令運行 cpu,cpu 會執(zhí)行到這個斷點位置,然后停止,如下圖所示:

cpu 已經(jīng)停到這個位置了,我們就可以使用命令 unhb 來刪除斷點了,這里一定要刪除,不然 si 命令不能往下執(zhí)行,如下圖所示:

接著輸入命令 si 1 條指令,如果我們寫的代碼沒有問題,可以發(fā)現(xiàn) led3 熄滅,如下圖所示:

這樣我們就在匯編階段下調(diào)試完成了 led,同理,調(diào)試其他的 GPIO 大家也可以使用這種方法,這里就 不在贅述,大家可以自行探索一下。
-
龍芯
+關注
關注
3文章
381瀏覽量
31970 -
PMON
+關注
關注
0文章
8瀏覽量
8355 -
EJTAG
+關注
關注
0文章
2瀏覽量
8230 -
2K1000
+關注
關注
0文章
21瀏覽量
742
發(fā)布評論請先 登錄
基于龍芯2K0300處理器 龍芯中科攜手正點原子發(fā)布龍芯ATK-DL2K0300B開發(fā)板

國產(chǎn)龍芯處理器雙核64位系統(tǒng)迅為2K1000開發(fā)板/核心板
迅為龍芯2K1000開發(fā)板/核心板介紹
迅為龍芯2K1000開發(fā)板/核心板流暢運行Busybox、Buildroot、Loognix、QT5.12系統(tǒng)
龍芯LS2K1000LA和LS2K1000有何區(qū)別?
國產(chǎn)龍芯處理器選擇迅為2K1000開發(fā)板有資料
【龍芯2K0300蜂鳥板試用】龍芯2K0300蜂鳥開發(fā)板上電測試!
【北京迅為】itop-龍芯2k1000 sylixos 嵌入式實時系統(tǒng)燒寫手冊-第一章與第二章 詳細步驟

評論