EJTAG除錯總計

2021-08-11 12:14:12 字數 3272 閱讀 7909

(2)解壓到指定的乙個任意路徑

(3)搭建硬體環境,電腦,除錯主機板,ejtag偵錯程式,保證鏈結正確。

(4)進入到剛剛解壓好的ejtag_debug資料夾路徑下,執行 sudo ./ejtag_debug_usb -t

檢測硬體環境和軟體版本是否可用:

1:將ejtag插入usb口,可以觀察到ejtag的兩個指示燈都亮,1s後只有乙個指示燈亮,說明ejtag硬體沒有問題

2:sudo ./ejtag_debug_usb -t執行軟體

jtagled 1  命令綠燈一直亮,jtagled 0 命令綠燈閃  說明usb驅動安裝沒問題

3:執行usbver 命令返回值如果為乙個日期,2023年後才可以使用

ejtag-debug 引數:

./ejtag_debug_usb [-dlstch] [-e cmd] [-t n]

-d:   version on show debug message

-e:   "cmd":run cmd

-l:    do not use read line

-s:    log disassemble info

-s:    run cmd server

-t:    disable timer

-t n:    set timer n ms

-c:    do not load cfg file

-h:    show this help

注意:(1)ejtag-debug需要超級使用者來執行

(2)配置檔案是ejtag.cfg程式自動開啟並執行裡面的檔案

ejtag-debug 由很多小命令,支援名字自動補全,在首行加#表示注釋

h    [cmd]    檢視幫助

setconfig [configname]    [value]             配置命令

core.cpucount         設定cpu數目

core.cpuno               設定當前除錯的cpu號

core.cpuwidth          設定cpu的資料寬度

display.cmd              顯示setconfig命令配置的東西

jtag.showins            當jag狀態變化的時候顯示指令

set    [regname|regno]    [value]                 讀取暫存器

set                             顯示32個通用暫存器的值

set    pc                     顯示當前pc指標的值

set    regname         讀取這個暫存器的值

setenv    [regname|regno]    [value]           設定環境變數

ejtag向核心傳遞引數是通過env_開頭的環境變數來設定的,如:

setenv    env_memsize 256

setenv    env_highmemsize 0

setenv    env_cpuclock 266000000

來設定記憶體大小和cpu的時鐘

d1-d8,d1q-d8q,m1-m8 分別表示1-8位元組dump/modify的意思,相關的命令有

mems,cp0s,regs,jtagregs,spiroms

讀取cp0_config1:

cp0s 1

d8 16 1   也可以cp0s 1 d8 16 1

source file 從fiel 檔案中讀取指令

loop ecount cmd args..  迴圈執行count次cmd args這個指令

echo args 列印args

echo_on 回顯示執行的命令

verbose [on|off|&fdno|filename]   開啟或者關閉debug除錯,或者存到fd中

waitreg reg data 等待ejtag 的reg為data

waitface [startaddr]  [endaddr]  等待cpu訪問dmseg且位址在這段區間內

goback [addr]    跳轉到dmseg addr處

run binfile    執行bin檔案,如run gzrom.bin

msleep   n    等待  n ms

shell cmd     執行shell命令

timer n          n ms檢查一次ejtag狀態,n=0為不檢查

b addr          設定軟體斷點在addr處

unb addr      刪除軟體斷點

hb    addr     設定硬體斷點

unhb addr    刪除硬體斷點

hbls               顯示所有的硬體斷點

watchls         顯示所有的硬體資料斷點

s                     單步執行

uns                取消單步執行

cont              退出ejtag模式繼續執行

cpu cpuno   切換cpu到cpuno

map filename start [size]    對映檔案到dmseg start大小為size dmseg內容寫到檔案中

unmap fielname start [size]   取消對映檔案

memsetx/fmemsetx/smemsetx/   addr   value   size   在處理器上執行memset,其中下x為1,2,4,為位元組數

memcpyx/fmemcpyx/smemcpyx addr   value   size   在處理器上執行memcpy

putelf/fputelf/sputelf  elffile  上傳elf檔案

initrd  initrdfile  設定initrd

karg "kernel args"     設定記憶體引數

disas addr   [count]           反彙編

callbin/fcallbin/scallbin   binfile   [arg0  arg1 ...]           執行bin 檔案

call/fcall/scall    addr    [arg0  arg1  ...]      呼叫函式

erase       擦除整個flash

erase_area  start  end sectorsize    擦除部分flash

gdb elffile   gdb除錯elf檔案

ejtag 除錯pmon 卡死

將ejtag偵錯程式連到板子上,確定ejtag連線正常之後重啟板子 ejtag debug usb t 判斷ejtag 連線是否正常 cpu0 jtagregs d8 1 1 00000001 000000005a5a5a5a zzzz.在pmon 卡死的時候,獲取各暫存器的值 cpu0 cpus ...

c unio 學習總計

c 的 union型別平時用的真心少 從來沒有認真研究過他 今天看了幾道c 的筆試題 有幾道 關於union的 題目 現在總結下 第一題 union v x unsigned char c v v.c 100 printf d v.x.s3 答案為 3 s2 為 1 s1為0 網上的解釋 v是聯合體...

shell 技巧總計

找的檔案中指定字串最後一次出現的行數 awk completed alter database open alert reply.log 列印指定行到檔案的末尾 sed n 104068,p alert reply.log sed 刪除包含特殊字元的行並替換 將db install.rsp裡面的or...