我們在編寫c程序,在調試的時候,希望能夠使用visual studio工具,或者eclipse工具,實現單步調試,讓我們能夠查看c程序的執行狀態,從而幫助我們去調試我們寫的c程序。
那在soc驗證或cpu core驗證(以下簡稱core驗證)的時候。我們也是寫了c程序(或者彙編程序,以下不區別),在驗證環境中運行,怎麼能夠知道程序在core上的執行結果呢?我們也希望能有像eclipse這樣的工具,能夠通過IDE工具,能夠知道程序的執行過程以及執行結果。
這個時候,indago中的embedded software debug app(以下簡稱eswd)工具橫空出世,解決了上述問題。
一、eswd工具
首先上圖,以下是eswd的界面。cpu的名字,叫xxx。支持aarch64和aarch32兩種arm架構指令集。包含8個core。
左上角是源代碼區,中間是反彙編區,右上角是狀態區(用來查看core狀態,以及切換core),最下面界面是波形區,顯示各個core指令流的波形(只記錄了pc)。
通過這個工具,就能夠知道,我們編寫的程序,在cpu上的執行過程,以及執行結果。還能夠,單步仿真,單步跳過。而單步功能,不僅僅支持向前跳轉,還可以向後跳轉。
eswd工具,支持多個core,可以分別查看每個core的執行過程,在狀態窗口的狀態欄,會顯示,當前查看的是哪一個core,以及該core的EL。
在源代碼窗口,可以加載源文件。
對於加載的源代碼,如果代碼有執行過,那麼在代碼行的前面會有向前向後的按鈕,點擊該按鈕,可以將當前的狀態,恢復到執行該行代碼的狀態。
在debug界面,可以查看變量的值,以及調用棧。
在代碼處,右鍵,選擇 choose execution。
會彈出time tables窗口,顯示,這個函數,在那些時刻有執行過。
在波形窗口,能夠看到各個core的執行pc,以及該pc,所在的函數。
二、總結
該工具,可以讓我們知道,程序在cpu上的執行過程,以及執行結果,方便我們去定位問題。而不需要去分析波形,才能得到cpu的執行過程與執行結果。
要想使用eswd工具,顯示出這些信息,需要我們去做一些工作,產生database,給eswd工具來分析。
產生database,需要如下的一些文件:
-
程序的elf文件
-
cpu架構的描述
-
trace的配置文件
-
cpu的執行結果trace
後面,就要詳細來說明一下,如何得到上面的文件,最終產生database,並使用eswd工具進行分析。
更多內容,請訪問我的個人網站: