利用批处理文件自动运行TCL脚本创建Vitis(SDK)工程

前言

批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 。

SDK和Vitis的关系: Vitis是Xilinx SDK的继任者,从Vivado 2019.2开始启用。sdk是vivado的附属,而vitis地位和vivado相同,一个负责软件,一个负责硬件。 

hdf文件: Hardware Description File,Vivado 2019.1及更早版本导出的硬件描述文件,给xilinx sdk使用。

xsa文件: Xilinx Shell Archive,Vivado 2019.2及后续版本导出的硬件文件,.xsa=.bit+hdf.

更多详细的可以打开SDK和Vitis的渊源

文件结构

作者以之前做过的项目为例。

Vitis                                 # vitis文件夹
   ├──  auto_create_vitis/                    # 自动化运行的文件
   │         ├── build_vitis.bat               # 批处理文件
   │         ├── build_vitis.tcl                 # vitis工程tcl脚本化文件
   │         └── src/                       # 源文件
   │             ├── DP_out/             # Application project(需要的创建的应用工程)
   │             │     └── *.c           # c代码源文件
   │             ├── DVI_to_DP           # Application project(需要的创建的应用工程)
   │             │     └── *.c
   │             ├── HDMI_loop           # Application project(需要的创建的应用工程)
   │             │     └── *.c
   │             ├── HDMI_to_DP          # Application project(需要的创建的应用工程)
   │             │     └── *.c
   │             └── SDI_loop            # Application project(需要的创建的应用工程)
   │                   └── *.c
   │
   └──  design_1_wrapper.xsa             # vivado导出的硬件信息文件

批处理文件的编写

call D:\Xilinx\Vitis\2020.1\bin\xsct.bat build_vitis.tcl
pause

其实就一句话,意思是利用你安装的vitis根目录下的xsct.bat文件来运行TCL脚本文件

(路径记得换成自己的vitis安装路径) 

ZYNQ的VItis工程tcl脚本化

ARM芯片的Cortex-A53-64位

set tclPath [pwd]
cd $tclPath
cd ..
set projpath [pwd]
puts "Current workspace is $projpath"
setws $projpath
getws
set xsaName design_1_wrapper
set app0Name DP_out
set app1Name DVI_to_DP
set app2Name HDMI_loop
set app3Name HDMI_to_DP
set app4Name SDI_loop

#Create a new platform
platform create -name $xsaName -hw $projpath/$xsaName.xsa -proc psu_cortexa53_0 -os standalone -arch 64-bit -out $projpath
importprojects $projpath/$xsaName
platform active $xsaName
repo -add-platforms $xsaName

domain active
#Create a new application
app create -name $app0Name -platform $xsaName -domain standalone_domain -template "Empty Application"
importsources -name $app0Name -path $tclPath/src/$app0Name
app create -name $app1Name -platform $xsaName -domain standalone_domain -template "Empty Application"
importsources -name $app1Name -path $tclPath/src/$app1Name
app create -name $app2Name -platform $xsaName -domain standalone_domain -template "Empty Application"
importsources -name $app2Name -path $tclPath/src/$app2Name
app create -name $app3Name -platform $xsaName -domain standalone_domain -template "Empty Application"
importsources -name $app3Name -path $tclPath/src/$app3Name
app create -name $app4Name -platform $xsaName -domain standalone_domain -template "Empty Application"
importsources -name $app4Name -path $tclPath/src/$app4Name
#bsp setting
bsp setdriver -ip psu_dp -driver dppsu -ver 1.2
bsp regenerate

bsp setlib -name lwip211 -ver 1.2
bsp config lwip_dhcp true
bsp regenerate
#Build platform project
platform generate
#Build application project
append app0Name "_system"
sysproj build -name $app0Name
append app1Name "_system"
sysproj build -name $app1Name
append app2Name "_system"
sysproj build -name $app2Name
append app3Name "_system"
sysproj build -name $app3Name
append app4Name "_system"
sysproj build -name $app4Name

 bsp设置就相当于在vitisi工程GUI界面的这里

编辑好tcl脚本后保存。就可以双击之前的.bat批处理文件开始运行了。

 运行好之后会弹出按任意键退出的界面

在打开文件夹时文件夹中就会多出很多文件

 这个时候就可以打开Vitis软件选择到这个目录

 关闭首页进来,就会发现工程已经创建成功了,并且可以直接下板。

 ARM芯片的Cortex-A9-32位

set tclPath [pwd]
cd $tclPath
cd ..
set projpath [pwd]
puts "Current workspace is $projpath"
setws $projpath
getws
set xsaName design_1_wrapper
set appName hello

#Create a new platform
platform create -name $xsaName -hw $projpath/$xsaName.xsa -proc ps7_cortexa9_0 -os standalone -arch 32-bit -out $projpath
importprojects $projpath/$xsaName
platform active $xsaName
repo -add-platforms $xsaName

domain active
#Create a new application
app create -name $appName -platform $xsaName -domain standalone_domain -template "Empty Application"
importsources -name $appName -path $tclPath/src/$appName
#Build platform project
platform generate
#Build application project
append appName "_system"
sysproj build -name $appName

Cortex-A9芯片作者给的例子是一个基础的hello工程。注意以下的变化

MicroBlaze软核的VItis工程tcl脚本化

set tclPath [pwd]
cd $tclPath
cd ..
set projpath [pwd]
puts "Current workspace is $projpath"
setws $projpath
getws
set xsaName exdes_wrapper
set app0Name fmc1159_hdmi

# Create a new platform
platform create -name $xsaName -hw $projpath/$xsaName.xsa -proc mb_ss_0_mblaze -os standalone -arch 32-bit -out $projpath
importprojects $projpath/$xsaName
platform active $xsaName
repo -add-platforms $xsaName

domain active
# Create a new application
app create -name $app0Name -platform $xsaName -domain standalone_domain -template "Empty Application"
importsources -name $app0Name -path $tclPath/src/$app0Name

# Build platform project
platform generate
# Build application project
append app0Name "_system"
sysproj build -name $app0Name

MicroBlaze软核作者给的例子是一个FMC子板跑HDMI回环工程。注意以下的变化

 ZYNQ的SDK工程tcl脚本化

#Example test.tcl
#!/usr/bin/tclsh
set_workspace workspace
create_project -type hw -name hw -hwspec <path the HDF file>.hdf
cd workspace/hw
open_hw_design system.hdf
set bsp [create_sw_design bsp -proc ps7_cortexa9_0 -os standalone]
add_library xilffs
generate_bsp -sw $bsp -dir ../bsp -compile
cd ../..
create_project -type app -name fsbl -hwproject hw -proc ps7_cortexa9_0 -os standalone -lang C -app {Zynq FSBL} -bsp $bsp
build -type bsp  -name $bsp
build -type app -name fsbl 
clean -type all
build -type all

参考来源:https://support.xilinx.com/s/article/63384?language=en_US

总结

脚本化用好了能省去很多不必要的报错,能让工作更高效。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值