XSCT介绍
XSCT全称叫做Xilinx Software Command-Line Tool
顾名思义是Xilinx提供的软件命令行工具,完整的使用说明可以参考ug1208-xsct-reference-guide
我们平常调试裸机程序都是在Vitis/(2019.2之前是SDK)IDE环境下通过图形菜单的方式间接调用的xsct。在某些特殊的情况,比如需要加载u-boot,这时候就需要手动运行xsct的命令
需要准备的文件
首先在petalinux下编译出以下4个文件
zynqmp_fsbl.elf
pmufw.elf
bl31.elf
u-boot.elf
把他们保存到一个目录,比如c:\debug\test
命令位置
有两种启动方式
第一种是打开vitis,菜单Xilinx里选XSCT Console
第二种是找到安装目录,比如我的目录是c:\Xilinx\Vitis\2019.2\bin
运行以下两行命令,运行结果如下
cd c:\debug\test
c:\Xilinx\Vitis\2019.2\bin\xsdb
![](https://img-blog.csdnimg.cn/4faf610b2f1d40ea9c6ac5423fe43d5a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_11,color_FFFFFF,t_70,g_se,x_16)
1.设置允许Jtag连接到PMU
connect
targets
targets -set -filter {name =~ "PSU"}
mwr 0xffca0038 0x1ff
targets
运行结果如下
![](https://img-blog.csdnimg.cn/474f333af46d43d59b2a3ea846aa0456.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_10,color_FFFFFF,t_70,g_se,x_16)
寄存器0xffca0038的含义如下,0x1ff就是把bit8-bit0全部置为1
![](https://img-blog.csdnimg.cn/908986f6f6d64a028ff2fd4a6c83d0dc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_20,color_FFFFFF,t_70,g_se,x_16)
2.加载PMU
targets -set -filter {name =~ "MicroBlaze PMU"}
targets
dow pmufw.elf
con
![](https://img-blog.csdnimg.cn/1ff67bb226c64da79c7736c58e1a7549.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_12,color_FFFFFF,t_70,g_se,x_16)
串口输出
![](https://img-blog.csdnimg.cn/5fda1511ca214fa6ad5dc96a3c290e82.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_8,color_FFFFFF,t_70,g_se,x_16)
3.加载fsbl
targets -set -filter {name =~ "Cortex-A53 #0"}
rst -processor
dow zynqmp_fsbl.elf
con
stop
![](https://img-blog.csdnimg.cn/c8f8fad2b3af4227ae95de05a061edac.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_15,color_FFFFFF,t_70,g_se,x_16)
串口输出
![](https://img-blog.csdnimg.cn/fb696a56ef914b25a99b1b48ca0bd4fd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_9,color_FFFFFF,t_70,g_se,x_16)
4.加载bl31
dow bl31.elf
con
stop
![](https://img-blog.csdnimg.cn/a34f66ae442441529096281c787e735a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_16,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/cef25a5a3cd24e65b0a5546ca27e9064.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_11,color_FFFFFF,t_70,g_se,x_16)
5.加载u-boot
dow u-boot.elf
con
![](https://img-blog.csdnimg.cn/b3650c00848e4da0bd4231d9ada82be8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_9,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/d977234eae744d6a97db75cb0e389e11.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA546L5biI5YKFTWFzdGVyV2FuZw==,size_14,color_FFFFFF,t_70,g_se,x_16)
到这里u-boot就可以正常运行了
利用脚本减少手动输入
以上步骤虽然能够达到目的,但是要手动输入大量命令,对生产、测试人员来说,使用起来比较困难。我们可以把以上步骤合并成一个tcl脚本,如下,命名为test.tcl
connect
targets
targets -set -filter {name =~ "PSU"}
mwr 0xffca0038 0x1ff
targets
targets -set -filter {name =~ "MicroBlaze PMU"}
targets
dow pmufw.elf
con
targets -set -filter {name =~ "Cortex-A53 #0"}
rst -processor
dow zynqmp_fsbl.elf
con
stop
dow bl31.elf
con
stop
dow u-boot.elf
con
然后只需要在xsdb命令行下输入source test.tcl即可自动执行上面所有的命令