SDSoC 開(kāi)發(fā)環(huán)境 SDSoC是Xilinx旗下,用于設計開(kāi)發(fā)Zynq SoC和MPSoC異構嵌入式系統的基于Eclipse的集成開(kāi)發(fā)環(huán)境,可以完成從C/C++到指定目標平臺上功能完整的硬件/軟件系統的編譯、實(shí)現、調試執行等全過(guò)程。 由SDSoC產(chǎn)生的系統是高性能的,同時(shí)也是復雜的硬件/軟件協(xié)同工作系統。要了解在這樣的系統中應用程序的執行過(guò)程是比較困難的,因為你需要同時(shí)關(guān)注在處理器上運行的軟件部分和在硬件可編程邏輯上執行的加速部分,以及數據在二者之間的傳遞過(guò)程和順序等。 Trace 事件追蹤功能 2015.4版的SDSoC中新增了一個(gè)功能,叫做Trace,即事件追蹤功能,可以幫助設計開(kāi)發(fā)人員深入了解應用程序的執行過(guò)程中整個(gè)系統上發(fā)生了哪些事件以及發(fā)生的順序,用戶(hù)可以以此為依據進(jìn)行系統優(yōu)化。 Trace提供的是一個(gè)詳細視圖,用戶(hù)可以在其中觀(guān)察應用,硬件/軟件分區和系統設計選擇的性能,它提供的是一個(gè)以時(shí)間軸為單位而量化的事件追蹤,包括在理器上運行的軟件事件,在可編程邏輯上運行的硬件加速事件和在系統中的數據傳輸鏈路事件。 由于需要讀取上板應用的數據,要啟動(dòng)事件跟蹤,用戶(hù)必須將開(kāi)發(fā)板經(jīng)由JTAG連接到主機。 在SDSoC中啟動(dòng)Trace后,事件追蹤功能就會(huì )被自動(dòng)插入到軟件代碼和硬件IP中。然后,硬件部分(包括完成事件追蹤功能的監控IP)經(jīng)過(guò)綜合和布局布線(xiàn),產(chǎn)生比特流,而軟件跟蹤代碼則被編譯到普通用戶(hù)應用中。硬件和軟件的事件追蹤時(shí)間戳被收集到了一個(gè)追蹤流中,并且以在可編程架構中緩存的方式記錄下來(lái),由主機通過(guò)JTAG訪(fǎng)問(wèn)并讀回數據。 下圖橙色高亮的部分,就是應用Trace功能后SDSoC自動(dòng)插入的監控IP,用以完成和記錄事件追蹤功能。 ![]() 收集事件追蹤數據的接口根據不同的操作系統而略有不同。對于Standalone和FreeRTOS操作系統,用戶(hù)程序ELF使用USB / JTAG接口下載到電路板上進(jìn)行配置和調試,斷點(diǎn)也是經(jīng)由了同樣的USB / JTAG接口而插入,事件跟蹤的數據采集,也是在相同的USB / JTAG接口上讀取。 對于Linux,一旦操作系統經(jīng)由SD卡啟動(dòng),ELF已經(jīng)復制后,便可以經(jīng)過(guò)TCP/TCF運行調試,斷點(diǎn)也可以經(jīng)由TCP/TCP插入,但事件跟蹤的數據仍然需要通過(guò)USB / JTAG接口讀出。換句話(huà)說(shuō),要在Linux應用程序上啟動(dòng)事件追蹤, USB / JTAG和TCP / TCF接口都需要。 Trace 視圖 下圖所示就是SDSoC GUI提供的Trace視圖。用戶(hù)應用程序的每個(gè)跟蹤事件被賦予一個(gè)唯一的軌跡名稱(chēng),并且對應到同一個(gè)時(shí)間軸。通常,一個(gè)跟蹤點(diǎn)可以通過(guò)應用程序的執行創(chuàng )建多個(gè)軌跡,例如,如果相同的代碼被循環(huán)執行,或者在加速器中被多次調用。 ![]() 每個(gè)事件追蹤軌跡都有幾個(gè)不同的屬性:名稱(chēng),類(lèi)型,以及啟動(dòng),停止和持續時(shí)間。如果將鼠標懸停在某個(gè)軌跡上,就可以看到這個(gè)軌跡的詳細屬性。Trace視圖中以不同的顏色區別不同類(lèi)型的軌跡,例如橙色代表軟件事件追蹤,綠色代表硬件事件而藍色代表數據的交互。 ![]() 關(guān)于Trace更詳細的介紹和分步驟教程,請關(guān)注SDSoC安裝目錄下的docs目錄,其中有一個(gè)SDSoC_Trace2015.4.pdf文檔可供參考。 由于Trace是在SDSoC 2015.4版首次發(fā)布,且目前還處于Beta階段,其僅能完成有限的事件追蹤功能,我們將在以后的版本中不斷完善,提供更全面的追蹤功能。敬請關(guān)注。如果您想要立即試用SDSoC 2015.4 和Trace功能,請聯(lián)系當地的Xilinx銷(xiāo)售代表。 作者:Ally Zhou,賽靈思工具與設計方法學(xué)專(zhuān)家 |