通过JTAG在AMD XILINX SoC器件里启动Linux的方法

作者:Longley Zhang,AMD工程师;来源:AMD开发者社区

在AMD XILINX SoC器件(Zynq-7000,Zynq MPSoC,Versal),常见的启动方式是通过加载外部存储器(QSPI Flash,eMMC等)上的镜像,直接启动到Linux。但当板子调试时,经常需要通过JTAG把SoC器件启动到Linux。这个博客将分享通过JTAG启动Linux的方法和脚本。

1. 如果使用Petalinux编译Linux镜像,并且Petalinux所在的Linux主机能(远程或本地)通过JTAG连接到SoC板子,那么可以使用下面的Petalinux命令直接下载Linux镜像。
petalinux-boot --jtag --v --kernel --hw_server-url :3121

如果JTAG直接连接在Linux主机上,上面命令的“--hw_server-url :3121”可以去掉。关于“petalinux-boot --jtag”命令的更多说明,请参考文档[1].

2. 前面介绍的“petalinux-boot --jtag”命令,其实是运行了对应的XSCT脚本,通过XSCT工具进行下载。所以我们也可以直接通过XSCT工具通过JTAG进行镜像加载。下面介绍加载常用XSCT脚本。下面的脚本是负责把SoC器件启动到u-boot,并把Linux镜像加载到内存。用户可以把命令拷贝到tcl文件里,然后在XSCT里直接source xxx.tcl运行。或者可以手动输入命令,这样方便在启动的不同阶段的进行调试。
关于XSCT工具的更多介绍及应用案例,请参考文档[2].

2.1 Zynq-7000器件
connect
targets -set -filter {name =~ "ARM*#0"}
rst -processor
dow zynq_fsbl.elf
con
exec sleep 4
stop
dow -data system.dtb 0x100000
exec sleep 1
dow u-boot.elf
con
dow -data uImage 0x10000000
dow -data system.dtb 0x11000000
dow -data rootfs.cpio.gz.u-boot 0x11A00000

2.2 Zynq MPSoC器件
connect
exec sleep 4
targets -set -filter {name =~ "PSU"}
mwr 0xffff0000 0x14000000
mwr 0xfd1a0104 0x380e
mwr 0xffca0038 0x1FF
exec sleep 1
targets -set -filter {name =~ "MicroBlaze PMU"}
dow pmufw.elf
con
targets -set -filter {name =~ "Cortex-A53 #0"}
dow zynqmp_fsbl.elf
con
exec sleep 4
stop
exec sleep 1
dow -force u-boot.elf
dow -force bl31.elf
con
exec sleep 10
#download kernel, dtb, rootfs separately
dow -data Image 0x10000000
dow -data system.dtb 0x11000000
dow -data rootfs.cpio.gz.u-boot 0x11A00000
#if download image.ub uncomment below line
#dow -data image.ub 0x10000000

2.3 Versal
下面的boot.bin是通过“petalinux-package --boot --u-boot”生成的包含u-boot的镜像.
connect
device program boot.bin
#download kernel, dtb, rootfs separately
dow -data Image 0x10000000
dow -data system.dtb 0x11000000
dow -data rootfs.cpio.gz.u-boot 0x11A00000
#if download image.ub, uncomment below line
#dow -data image.ub 0x10000000

2.4 在u-boot里运行下面命令启动Linux。
bootm 0x10000000 0x11A00000 0x11000000
或bootm 0x10000000 (如果XSCT里使用的是image.ub。)
注意:启动到u-boot后,u-boot可能会找不到boot.scr而执行默认的启动脚本,用户可以用ctrl+c把启动中断,进入u-boot命令行。

参考文档:
[1] https://docs.xilinx.com/r/en-US/ug1144-petalinux-tools-reference-guide
[2] https://docs.xilinx.com/r/en-US/ug1400-vitis-embedded/Xilinx-Software-Co...

最新文章

最新文章