trace32

一、CPU 設置

所有操作第一步,必須要設置 CPU,參考如下設置即可,一定要將 MemAccess 設置為 NEXUS(方便實時觀察變量),CpuAccess 設置為 Enable。

使用指令亦可,例如

system.cpu mpc5744p? ? --? ? 設置 CPU 型號

system.memaccess nexus? ? --? ? 運行時訪問內存

system.cpuaccess enable? ? --? ?運行時訪問 cpu

system.reset? ? --? ? 復位目標芯片

system.up? ? --? ? 連接目標芯片(目標芯片會復位重啟)

system.down? ? --? ? 斷開目標芯片

system.attach? ? --? ? 連接已經運行的目標芯片,不復位,常用于死機調試


二、Flash 燒寫

下載 elf 程序文件到 CPU。

同一個程序若未修改,則無需多次下載;若是有修改,必須重新下載到 flash 中,雖然 data.load 也可以下載,但是它下載到調試器和目標 CPU 的 ram 中,下載完目標 CPU 會復位,實際執(zhí)行的還是前一次的程序,所以需要重新下載到 flash 中。


三、符號加載及源文件關聯(lián)

要想調試,需要將 elf 文件和源碼加載到調試器中(需要先使用 system.up 連接到目標芯片),命令和 data.load xxxx.elf/path xxxx,/path 后面為源碼路徑,示例如下:

Data.LOAD.Elf D:\MPC5744\Examples\CAN_Test\Debug\CAN_Test.elf /path D:\MPC5744\Examples\CAN_Test

注意,死機調試的時候,也需要加載符號及源文件,但這時不能連接死機芯片加載,否則會導致死機芯片復位,需要先連接一個其它同型號芯片,然后連接加載,下載符號后,再重新連接這個芯片,使用 system.attach 連接。


四、運行、中斷

確保先連接了目標芯片,并且加載了符號文件 elf。

go? ? --? ? 運行

break? ? --? ? 停止

break.set 0x01002FD0? ? --? ? 設置斷點在 0x01002FD0 處,可以在后面加參數(shù),/onchip 表示硬件斷點,/soft 表示軟件

break.delete 0x01002FD0? ? ?--? ? 刪除斷點

至于插入斷點之類的,也可以直接在 IDE 中進行。


五、觀察變量

Trace32 觀察變量有多種方式,注意?e 參數(shù)表示允許運行時讀取內存:

方法一:

var.watch % e var1 ... varn 觀察,e 為 cpu 運行期間允許讀取

方法二:

var.view % e var1 ... varn 觀察,e 為 cpu 運行期間允許讀取

方法三:

data.dump e:(var1) 觀察,e 為 cpu 運行期間允許讀取

此方法不算很友好,因為觀察的是內存地址里的數(shù)據(jù)


六、實時修改變量值

有時候運行時,某個值條件太苛刻或者太久,我們可以再 CPU 運行時直接修改變量值,以便于直接觸發(fā)邊界值。

例如:var.set % e var1 = 800,參數(shù) e 表示運行時可直接修改。


七、查看源碼

list e:main,參數(shù) e 表示運行時可查看。


八、修改內存數(shù)據(jù)(寄存器值)

data.set e:0xFFFC132C 0x0100

per.set e:0xFFFC132C 0x0100(寄存器實際上也是映射到內存地址的)

例如我們要讓 PC12 的 LED 亮滅,則設置 data.set e:0xFFFC132C 0x00(注意運行時修改需要加 e 參數(shù))


九、保存存儲器數(shù)據(jù)到文件

保存當前存儲器中數(shù)據(jù)到文件,方便比較。

data.SAVE.Binary C:\Users\SB\Desktop\log.bin 0x01000000++10? ?保存從 0x01000000 開始的 10 個地址的數(shù)據(jù)到二進制文件中

data.SAVE.IntelHex ?C:\Users\SB\Desktop\log.hex 0x01000000++10? ?保存從 0x01000000 開始的 10 個地址的數(shù)據(jù)到 hex 文件中


Data.load.elf \\192.168.9.10\rt-thread\bsp\rtthread.elf /nocode

sYmbol.SourcePATH.Translate? "\\192.168.9.10\rt-thread\"? "C:\woek\rt-thread"

;y.SourcePATH.SetRecurseDir "\\192.168.9.10\rt-thread\"

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容