一:最近重新学习了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下面的三个方框都选中。