Xilinx SDK工程編譯、鏈接、調試注意事項

 

1、添加工程

啓動SDK時選取workspace,如下圖所示:

對應的workpace文件夾中會生成如下幾個文件:

如果當前workspace是首次加載工程,SDK會進入啓動界面

點擊Import Project,導入已有工程

點擊Browse,添加工程路徑,一個完整的工程包含一個bsp文件夾,一個HW文件夾,和一個src文件夾(添加C功能函數)

點擊Finish。

2、編譯、鏈接

等待工程導入完成後,SDK操作界面,ctrl+B(或者project——Build All)對已有工程進行編譯,編譯時注意以下設置正確:

點擊project——property

圖中編譯相關的配置,ARM gcc compile——Inferred Options——Software Platform,設置編譯時工程包含文件的路徑,當前路徑爲debug下的Makefile文件的路徑,每一個../表示相對當前路徑的上一級路徑,爲便於工程的移植和拷貝,建議設置相對路徑。

圖中鏈接相關的配置,ARM gcc linker——Inferred Options——Software Platform下是鏈接庫的路徑,同上,最好用相對路徑。

如果功能代碼不在SDK工程目錄下,可以通過添加虛擬文件或者鏈接路徑的方式在SDK工程中調用對應的代碼文件,如下圖,右鍵project——New——folder

點擊Advance,如下圖,選擇Folder is not located in the file system(Virtual Folder)則是在project目錄下創建一個虛擬文件夾,選擇Link to alternate location (Linked Folder)則是將對應的代碼文件鏈接到當前工程目錄下。

3、debug

完成編譯後,點擊Run——Debug Configurations如下圖配置

點擊Apply,然後Debug可以執行debug操作,

其中如果圖1中勾選program FPGA,則每次debug的時候都會燒寫一次bit流文件,一般不勾選,bit流文件在debug前燒寫一次即可;

4、打印

xilinx sdk自帶有很多打印函數(xil_printf, printf等),所有的打印函數其實都是調用outbyte函數(xil_printf.c)來打印信息,outbyte函數其實是調用了ps側的uart send byte函數。

如果ps側有兩個uart,outbyte如何進行選擇輸出呢?這個是在bsp中設置的,雙擊bsp下面的mss文件,然後選擇modify this bsp setting,然後設置stdout和stdin,如果設置爲psu_uart_0則通過uart0打印,如果選擇psu_uart_1則通過uart1打印,另外如果pl側有uart ip例如uart16550,那麼也可以選擇uart16550進行打印,這裏設置不同的uart,則bsp中xparameters.h中對STDOUT_BASEADDRESS的定義就不一樣,如果是uart0,那麼定義爲0xff000000,如果是uart1,那麼定義爲0xff010000,這兩個地址可以在ug1087 ultrascale寄存器定義中查找到,0xff000000是UART0的基址,0xff010000是UART1的基址。

另外使用打印函數不同,編譯出來的可執行文件大小可能相差很大,比如printf函數是標準c庫中的重要函數(可以執行浮點打印等),但是fpga基本不用浮點打印,只需要xil_printf執行打印即可,所以printf和xil_printf編譯後的可執行文件相差就比較大。
————————————————
本段鏈接:https://blog.csdn.net/carlsun80/article/details/78045776

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章