[飛騰]Trace32使用概述

原文在我公眾號上:
https://mp.weixin.qq.com/s/SH3XLlGVBmuElwAzDJRmKg

?

1. CPU JTAG電路的設(shè)計(jì)
根據(jù)飛騰demo圖trace32的接法圖如下圖所示(新一些的demo圖jtag的接法已經(jīng)刪除了,可以看比較老點(diǎn)兒的demo才會(huì)有這部分原理圖,這里參考FT-2000_4core_demo_V1.2_20190809.zip):

2. Trace32簡介
Trace32為德國Lauterbach(勞德巴赫)公司研制的仿真測試工具,TRACE32采用了很多領(lǐng)先技術(shù),雙端口存儲技術(shù),實(shí)時(shí)多任務(wù)處理機(jī)制,以太網(wǎng)、光纖通信技術(shù)、多CPU調(diào)試技術(shù)、軟件代碼覆蓋分析技術(shù)、基于斷點(diǎn)系統(tǒng)的存儲技術(shù)、多級觸發(fā)單元技術(shù)、時(shí)鐘處理單元技術(shù)、動(dòng)態(tài)存儲技術(shù)等,有助于固件、系統(tǒng)級代碼調(diào)試。
Trace32整體除電源外,需要包含一個(gè)調(diào)試模塊和一個(gè)調(diào)試接頭。我們使用的是usb接口的power debug調(diào)試模塊。調(diào)試接頭需要使用支持arm v8的接頭。這里需要特別說明的是,調(diào)試模塊power debug是固定不變的,調(diào)試接頭需要根據(jù)不同的平臺選擇不同的接頭,有x86用的,有ppc用的,當(dāng)然也有arm用的,并且trace32軟件上讀取的license也是存在在調(diào)試接頭中的。



軟件下載鏈接地址:
TRACE32? Download Trace32 Software for full installation (lauterbach.com)
https://www.lauterbach.com/frames.html?country=cn

3 Trace32軟件安裝


















4 Trace32調(diào)試使用
4.1 CPU JTAG管腳功能配置
硬件上將仿真器接頭連接到CPU JTAG接口。實(shí)現(xiàn)JTAG連接要將處理器FT-2000/4的管腳復(fù)用調(diào)成JTAG,而不是CAN。簡單的方式就是在系統(tǒng)gurb里改,改/boot/efi/boot/grub/grub.cfg,這個(gè)文件是麒麟開機(jī)起來后最先執(zhí)行的文件。在里面的kylin啟動(dòng)項(xiàng)里,在{}里第一行增加一句話Write_dword 0x28180204 0x88488440,這就是將jtag復(fù)用功能管腳配置為jtag功能。




把這個(gè)管腳復(fù)用寄存器設(shè)置為0x88488440=10001000010010001000010001000000b,下面就把復(fù)用功能設(shè)定的bit值分配出來,且只顯示影響管腳復(fù)用的bit位,再提出設(shè)計(jì)jtag的信號位,最后整理如下表。


4.2 Trace32工程配置








4.3 啟動(dòng)腳本配置
在啟動(dòng)前,一定要加上鏈接用腳本。

腳本請聯(lián)系飛騰FAE獲取。
Trace32的命令在軟件的安裝完目錄下是有一系列指導(dǎo)手冊的,在“pdf”文件夾下。

舉例幾個(gè)參考文件:
training_practice.pdf??????Training PRACTICE?
practice_user.pdf????????????PRACTICE Script Language User’s Guide
practice_ref.pdf????????????PRACTICE Script Language Reference Guide?命令查詢手冊
general_ref_a.pdf????????????以a字母開頭的命令手冊
4.3 啟動(dòng)調(diào)試
腳本添加后,點(diǎn)擊“start”,trace32會(huì)自動(dòng)執(zhí)行腳本進(jìn)行鏈接、執(zhí)行。

Start后界面結(jié)果如下:







5 Trace32操作介紹
5.1 工作區(qū)介紹
下面對trace32的操作界面進(jìn)行介紹:

紅圈中的“system down”指示目標(biāo)板己經(jīng)供電,如果目標(biāo)板電源電壓低或沒有的話,紅
圈的區(qū)域會(huì)顯示“POWER DOWN”。TRACE-ICP通過JTAG接口的1腳檢測目標(biāo)板電壓,電壓范圍應(yīng)該在1.8到3.3伏之間。
調(diào)試界面分成五個(gè)區(qū)域,從上到下依次是主菜單區(qū)、快捷按鈕區(qū)、工作區(qū)、行命令輸入?yún)^(qū)、行命令軟件區(qū)、狀態(tài)顯示區(qū)。主菜單區(qū)是各種菜單命令的入口區(qū)域。快捷按鈕區(qū)是各種常用命令的快捷使用按鈕。用戶可以自定義主菜單和快捷按鈕。工作區(qū)是各種對話框窗口的顯示區(qū)域。行命令輸入?yún)^(qū)是各種命令通過手動(dòng)輸入執(zhí)行的區(qū)域。行命令軟鍵區(qū)是協(xié)助用戶輸入行命令的區(qū)域,它提供所有行命令的軟鍵輸入方法。狀態(tài)顯示區(qū)指示當(dāng)前的調(diào)試狀態(tài)。
如果在前面配置中沒有引入腳本.cmm文件,也可以通過從主菜單區(qū)點(diǎn)擊“File->Run Batchfile…”打開腳本文件選擇對話框,選擇執(zhí)行。
???????

?

5.2?觀察/修改寄存器
從主菜單區(qū)點(diǎn)擊“CPU->CPU Registers”,打開內(nèi)核寄存器窗口,如下圖所示。

從Pic12所示的內(nèi)核寄存器窗口,用戶能夠觀察處理器內(nèi)核寄存器的值。如果用戶想
修改某一個(gè)寄存器的值,只要雙擊寄存器名右邊的值,在行命令輸入?yún)^(qū)就會(huì)出現(xiàn)相應(yīng)寄存器值修改的命令,緊接著輸入十六進(jìn)制的值(如,0x12345678)并回車就可以了。
下圖是以修改寄存器R2的值為例,在行命令輸入?yún)^(qū)出現(xiàn)的命令。

5.3?設(shè)備寄存器觀察菜單


如上圖所示的設(shè)備寄存器窗口在調(diào)試不同的處理器時(shí)是不同的。如果用戶要修改某個(gè)
寄存器的值,雙擊該寄存器的值,在行命令輸入?yún)^(qū)就會(huì)出現(xiàn)相應(yīng)的設(shè)備寄存器修改命令,在命令后面輸入要修改的值回車即可。
5.4?觀察/修改存儲器
從主菜單區(qū)點(diǎn)擊“View->Dump…”,打開存儲器觀察窗口,如下圖所示。

在地址輸入框中輸入要觀察的地址,地址也可以用符號方式輸入。輸入地址之后點(diǎn)擊
“OK”按鈕,打開存儲器顯示窗口,如下圖所示。
用鼠標(biāo)雙擊某一個(gè)存儲單元的內(nèi)容,在命令行就會(huì)出現(xiàn)存儲器數(shù)據(jù)修改命令提示,用戶
只要填入要修改的數(shù)據(jù)回車即可。
5.5?觀察符號表
如下圖所示,點(diǎn)擊“View->Symbols->Browse”打開符號表對話框。


在符號表對話框中可以通過單選鈕“Symbols'”選擇要觀察函數(shù)或是變量等符號。在符
號表對話框中雙擊變量符號會(huì)打開變量觀察對話框,雙擊函數(shù)名會(huì)打開程序列表窗口。
5.6?全速運(yùn)行程序
在命令行輸入“GO”命令,程序從當(dāng)前P℃開始實(shí)時(shí)全速運(yùn)行。要全速運(yùn)行程序,用
戶也可以通過主菜單點(diǎn)擊“Rm>Go”來實(shí)現(xiàn)?;蛘撸脩艨梢园碏7來全速運(yùn)行程序。程序全速運(yùn)行時(shí),在狀態(tài)顯示區(qū)會(huì)有“Running”指示。用戶也可以在主菜單或程序列表窗口點(diǎn)擊下圖所示的紅框中的按鈕,也可以實(shí)現(xiàn)全速運(yùn)行程序。

5.7?停止運(yùn)行程序
用戶從命令行輸入“Brea”命令,或者按快捷鍵F8,都可以停止運(yùn)行程序。用戶也可
以從主菜單下選擇“Run->Break”,停止運(yùn)行程序。用戶也可以在主菜單或程序列表窗
口單擊下圖中所示紅框中的按鈕來停止運(yùn)行程序。

6 與linux內(nèi)核聯(lián)調(diào)簡述
與linux內(nèi)核聯(lián)調(diào)的方式可以參考B站上勞德巴赫的官方視頻:
使用TRACE32?調(diào)試Linux內(nèi)核模塊和用戶進(jìn)程_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV17A411n7Yt/?spm_id_from=333.337.search-card.all.click&vd_source=6b0aeb756259b17f1846941ff75f37c6
與內(nèi)核聯(lián)調(diào)需要加上vmlinux,參考網(wǎng)頁說明
Trace32 simulator調(diào)試以及簡單實(shí)用命令介紹 - 代碼天地 (codetd.com)
https://www.codetd.com/article/4940929
data.load.elf ../../vmlinux 0x1488800000 /nocode
? ? ?
加載elf文件命令,把指定的elf文件加載到目標(biāo)設(shè)備或者仿真設(shè)備的0x1488800000地址上去。elf文件在編譯時(shí)會(huì)把源文件的路徑加入到elf文件中,我們后面加上/nocode代表沒有對應(yīng)的sourcecode,trace32就不會(huì)去對應(yīng)目錄去查找源文件了。當(dāng)然我們也可以通過/path來指定sourcecode目錄。比如:
data.load.elf ..
/../vmlinux 0x1488800000 /path? /home/xie/linux-4.4/? ? ?
加載elf文件到指定地址,并且指定了和該elf對應(yīng)的source code目錄。
找系統(tǒng)供應(yīng)商要來和板卡運(yùn)行系統(tǒng)鏡像一致的vmlinux(需要elf格式的),放置到pc機(jī)目錄下。使用data.load命令,加載vmliux鏡像,腳本為:
data.load elf C:\vmlinux /NOCODE?????(C:\vmlinux為vmlinux保存目錄)
加入腳本,在啟動(dòng)調(diào)試后,再進(jìn)入view->list source之后就可以看到一些注釋文件了。因?yàn)橄到y(tǒng)供應(yīng)商,比如麒麟給的vmlinux是沒有源碼的,所以沒有辦法通過list看到高級語言的函數(shù),只能看到一些匯編的標(biāo)記。

舉例帶源程序的混合顯示程序列表窗口。通過點(diǎn)擊程序列表窗口上的“Moe”按鈕可以切換混合和源碼顯示方式。

如果用戶沒有通過data.load命令加載符號文件或者所加載的符號文件包含的調(diào)試信息不足,用戶將會(huì)看不到源碼,所得到的程序列表窗口可能如下圖所示(這種比麒麟給的vmlinux的指示信息更少,只能看到匯編代碼)。


個(gè)人資料推廣:?
最近將多年來收集到的教學(xué)視頻、國內(nèi)外圖書、源碼等整理整合拿出來,
涉及 arm、Linux、python、信號完整性、FPGA、DSP、算法、stm32、
單片機(jī)、制圖、電子模塊、kali、出版社圖書等。
資料目前約 1.5TB+。初、中、高不同階段工程師,都能有提升自己的資料。?


分享,讓技術(shù)更偉大!歡迎轉(zhuǎn)發(fā)!?
歡迎飛騰愛好者加入微信交流群。
群內(nèi)大家可以暢所欲言。在群內(nèi)不需要表露自己的公司和身份,可以群內(nèi)交流遇到的問題,分享自己的調(diào)試心得。
希望大家共建飛騰友誼!?
