一、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\"