在進行linux 核心使用jtag ,應用使用gdbserver除錯的時候,應用的斷點被jtag命中。
發現應用只要bkpt命令,則會導致jtag響應,估計和jtag的驅動監控breakpoint有關。以為是自己核心的斷點。
解決方式1:更新驅動,需要中天配合。暫不考慮。
2:修改gdbserver**(原理:gdbserver修改了斷點指令到0(bkpt的指令就是0!),我改為修改為9(trap 1)),
因無gdbserver原始碼,暫不考慮
3, 核心修改斷點使用嵌入點。不使用7的斷點,使用trap1(trap0是系統呼叫,trap2,trap3已經被使用。所以使用trap1).
ptrace_poketext中截獲,當發現本來要改為0的,強制改為9.
case ptrace_poketext: /* write the word at location addr. */
_flush_cache_all ();
if((data&0xffff)==0)
else if((data&0xffff0000)==0)
ret = generic_ptrace_pokedata(child, addr, data);
break;
測試ok。兩邊互不影響。
yeh!
JTAG基本原理與除錯
jtag joint test action group 聯合測試行動小組 是一種國際標準測試協議 ieee 1149.1相容 主要用於晶元內部測試。現在多數的高階器件都支援jtag協議,如dsp fpga器件等。標準的jtag介面是4線 tms tck tdi tdo,分別為模式選擇 時鐘 資料輸...
ESP32 JTAG 除錯 環境搭建
今天學習一下 esp32jtag 環境的搭建,並在此記錄方便後面的使用 如果你使用 esp idf v4.0 以上版本,並使用 install.sh 進行安裝過,該安裝會自動完成以下安裝過程!目錄 第一步 從原始碼安裝 openocd 獲取openocd 安裝編譯依賴 構建 openocd 設定 o...
JTAG的作用和原理
jtag是最基本的通訊協議之一,大家可以理解為與rx tx或者usb的道理是一樣的,只是一種通訊手段,但與rx tx以及usb有很重大的不同,那就是這個jtag協議是最底層的,說的通俗一點,一般來說,手機裡邊,cpu是老大,對吧?但在jtag面前,他就不是老大了,jtag協議就是用來控制cpu的,在...