一:最近重新學習了zynq系列開發,想著使用tcl創建工程,因此分享一下腳本例子
#!/bin/bashsource /tools/Xilinx/Vitis/2022.2/settings64.sh
cd ../../
. ./script/project.sh
cd app/script
#tcl腳本只能在虛擬機桌面執行
xsct build_vitis.tcl -tclargs ${hardware_xsa_name} ${app_name}
puts "pwd= [pwd]"
cd ../
#set projpath [pwd]/project
set projpath [pwd]/project
puts "Current workspace is $projpath"
setws $projpath
getws# 設置硬件和應用程序名稱
set xsaName [lindex $argv 1]
set appName [lindex $argv 2]
cd [pwd]
cd ../
puts "pwd= [pwd]"
puts "xsa name = [pwd]/hardware/$xsaName.xsa"# 創建平臺
platform create -name $xsaName -hw [pwd]/hardware/$xsaName.xsa -proc ps7_cortexa9_0 -os standalone -arch 32-bit -out $projpath
importprojects $projpath/$xsaNameplatform active $xsaName
#repo -add-platforms $xsaName #bug
domain active standalone_domain
puts "toolchain = [toolchain]"app create -name $appName -platform $xsaName -domain standalone_domain -template "Empty Application" -lang c++importsources -name $appName -path [pwd]/app/src -target-path src -soft-link
importsources -name $appName -path [pwd]/app/common -target-path common -soft-link
importsources -name $appName -path [pwd]/app/drivers -target-path drivers -soft-linkapp config -name $appName define-compiler-symbols _POSIX_THREADS
app config -name $appName include-path [pwd]/app/include #指定要包含的頭文件路徑app config -name $appName library-search-path [pwd]/app/lib #添加鏈接時要添加的庫,以及xx位置查找庫。 這個需要在添加庫指令前面
app config -name $appName libraries eventapp config -name $appName -add compiler-misc {-std=c++11 -pthread}
app config -name $appName -add linker-misc {-WL,-Map,-stdc++}
app config -name $appName -add linker-misc {-WL,-Map,${ProjName.map}}
# 生成平臺和應用程序項目
platform generate
append appName "_system"
sysproj build -name $app0Name#-target-path src 指定要將源文件放到工程的某個位置(src)
#-soft-link 指定將源文件鏈接進應用工程,而不是復制源文件到工程(不指定-soft-link,應用工程修改的內容不會反應到源文件代碼,只會修改工作空間的文件,當工程刪除就不見了)
????????有點缺陷是再vitis打開工程后,在工程中手動添加源文件是只能存在此工程的工作空間中,即project目錄下的app工程下,所以在刪除工程后,自己源碼就不存在了,需要在源碼的目錄創建源文件,使用importsource的方式導入才行,如操作:
????????在本地目錄先創建文件,再工程中要導入的文件夾中右鍵選擇import source 導入文件,才行。advanced下面的三個方框都選中。