(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...