From 670ff7ebfdc3507d6c19308f85dc144080e7586c Mon Sep 17 00:00:00 2001 From: Sandeep Gundlupet Raju Date: Tue, 12 Mar 2024 19:20:26 -0600 Subject: docs: Update JTAG boot instruction in README 1. Update JTAG boot instructions in README files. 2. Add devtool boot-jtag method. 3. Replace xsct with xsdb commands as new Vitis IDE doesn't support xsct commands. 4. Fix tftpboot instructions. Signed-off-by: Sandeep Gundlupet Raju Signed-off-by: Mark Hatle --- docs/README.booting.versal.md | 117 ++++++++++++++++++++++++++---------------- 1 file changed, 72 insertions(+), 45 deletions(-) (limited to 'docs/README.booting.versal.md') diff --git a/docs/README.booting.versal.md b/docs/README.booting.versal.md index afdeba2b..ef817bf3 100644 --- a/docs/README.booting.versal.md +++ b/docs/README.booting.versal.md @@ -5,10 +5,15 @@ modes. * [Setting Up the Target](#setting-up-the-target) * [Booting from JTAG](#booting-from-jtag) - * [Loading boot.bin using XSCT](#loading-bootbin-using-xsct) - * [Loading Kernel, Root Filesystem and U-boot boot script](#loading-kernel-root-filesystem-and-u-boot-boot-script) - * [Using XSCT](#using-xsct) - * [Using TFTP](#using-tftp) + * [Sourcing the XSDB tools](#sourcing-the-xsdb-tools) + * [Deploying the images to target](#deploying-the-images-to-target) + * [Using devtool boot-jtag script](#using-devtool-boot-jtag-script) + * [Manually executing xsdb commands](#manually-executing-xsdb-commands) + * [Loading boot.bin using XSDB](#loading-bootbin-using-xsdb) + * [Loading Kernel, Root Filesystem and U-boot boot script](#loading-kernel-root-filesystem-and-u-boot-boot-script) + * [Using XSDB](#using-xsdb) + * [Using TFTP](#using-tftp) + * [Booting Linux](#booting-linux) * [Booting from SD](#booting-from-sd) * [Booting from QSPI](#booting-from-qspi) @@ -37,37 +42,57 @@ modes. ## Booting from JTAG -This boot flow requires the use of the AMD Xilinx tools, specifically XSCT and +This boot flow requires the use of the AMD Xilinx tools, specifically XSDB and the associated JTAG device drivers. This also requires access to the JTAG interface on the board, a number of AMD Xilinx and third-party boards come with on-board JTAG modules. -1. Source the Vivado or Vitis tools `settings.sh` scripts. -2. Power on the board, Open the XSCT console in the Vitis IDE by clicking the - XSCT button. Alternatively, you can also open the XSCT console by selecting - Xilinx -> XSCT Console. +### Sourcing the XSDB tools + +Source the Vivado or Vitis tools `settings.sh` scripts. + +### Deploying the images to target + +Deploying the images can be done in two methods. + +#### Using devtool boot-jtag script + +1. Run devtool command to generate the boot-jtag.tcl script. +``` +$ devtool boot-jtag --help +$ devtool boot-jtag --image core-image-minimal --hw_server TCP::3121 +``` +2. Script will be generated under ${DEPLOY_DIR_IMAGE}/boot-jtag.tcl +3. Execute this script using xsdb tool as shown below. +``` +$ xsdb /boot-jtag.tcl +``` + +#### Manually executing xsdb commands + +1. Power on the board, Launch the XSDB shell from command line as shown below. ``` -$ xsct +$ xsdb ``` -3. In the XSCT console, connect to the target over JTAG using the connect command. +2. In the XSDB console, connect to the target over JTAG using the connect command. Optionally user can use `-url` to specify the local/remote hw_server. The connect command returns the channel ID of the connection. ``` -xsct% connect +xsdb% connect ``` -4. The targets command lists the available targets and allows you to select a +3. The targets command lists the available targets and allows you to select a target using its ID. The targets are assigned IDs as they are discovered on the JTAG chain, so the IDs can change from session to session. ``` -xsct% targets +xsdb% targets ``` > **Note:** For non-interactive usage such as scripting, you can use the `-filter` option to select a target instead of selecting the target using its ID. -### Loading boot.bin using XSCT +##### Loading boot.bin using XSDB -1. Download the boot.bin for the target using XSCT with the `device program` command. +1. Download the boot.bin for the target using XSDB with the `device program` command. Versal boot.bin will be located in the `${DEPLOY_DIR_IMAGE}` directory. Default boot.bin consists of boot pdi, plm.elf, psm.elf, bl31.elf, u-boot.elf and system.dtb. This boot.bin is generated using bootgen tool by passing a .bif file. @@ -76,15 +101,15 @@ system.dtb. This boot.bin is generated using bootgen tool by passing a .bif file > u-boot and kernel. ``` -xsct% targets -set -nocase -filter {name =~ "*PMC*"} -xsct% device program ${DEPLOY_DIR_IMAGE}/boot.bin -xsct% targets -set -nocase -filter {name =~ "*A72*#0"} -xsct% stop +xsdb% targets -set -nocase -filter {name =~ "*PMC*"} +xsdb% device program ${DEPLOY_DIR_IMAGE}/boot.bin +xsdb% targets -set -nocase -filter {name =~ "*A72*#0"} +xsdb% stop ``` 2. After loading boot.bin resume the execution of active target using the `con` -command in XSCT shell. +command in XSDB shell. ``` -xsct% con +xsdb% con ``` 3. In the target Serial Terminal, press any key to stop the U-Boot auto-boot. ``` @@ -93,7 +118,7 @@ Hit any key to stop autoboot: 0 U-Boot> ``` -### Loading Kernel, Root Filesystem and U-boot boot script +##### Loading Kernel, Root Filesystem and U-boot boot script Load the images into the target DDR/PL DRR load address i.e., `DDR base address + `. @@ -119,49 +144,51 @@ using U-Boot. > 4. If common ${DEPLOY_DIR_IMAGE}/system.dtb is used by u-boot and kernel, this > is already part of boot.bin we can skip loading dtb, else load kernel dtb. -#### Using XSCT +###### Using XSDB -1. Suspend the execution of active target using `stop` command in XSCT. +1. Suspend the execution of active target using `stop` command in XSDB. ``` -xsct% stop +xsdb% stop ``` 2. Using the `dow` command to load the images into the target DDR/PL DDR load address. ``` -xsct% dow -data ${DEPLOY_DIR_IMAGE}/Image 0x200000 -xsct% dow -data ${DEPLOY_DIR_IMAGE}/system.dtb 0x1000 -xsct% dow -data ${DEPLOY_DIR_IMAGE}/core-image-minimal-${MACHINE}.cpio.gz.u-boot 0x4000000 -xsct% dow -data ${DEPLOY_DIR_IMAGE}/boot.scr 0x20000000 -xsct% targets -set -nocase -filter {name =~ "*A72*#0"} +xsdb% dow -data ${DEPLOY_DIR_IMAGE}/Image 0x200000 +xsdb% dow -data ${DEPLOY_DIR_IMAGE}/system.dtb 0x1000 +xsdb% dow -data ${DEPLOY_DIR_IMAGE}/core-image-minimal-${MACHINE}.cpio.gz.u-boot 0x4000000 +xsdb% dow -data ${DEPLOY_DIR_IMAGE}/boot.scr 0x20000000 +xsdb% targets -set -nocase -filter {name =~ "*A72*#0"} ``` -#### Using TFTP +###### Using TFTP -1. Configure the `ipaddr` and `serverip` of the U-Boot environment. +1. Setup TFTP directory on host machine and copy the images to your TFTP directory + so that you can load them from U-Boot. +2. Configure the `ipaddr` and `serverip` of the U-Boot environment. ``` Versal> set serverip Versal> set ipaddr ``` -2. Load the images to DDR address. Make sure images are copied to tftp directory. +3. Load the images to DDR address. ``` -U-Boot> tftpboot 0x200000 ${TFTPDIR}/Image -U-Boot> tftpboot 0x1000 ${TFTPDIR}/system.dtb -U-Boot> tftpboot 0x4000000 ${TFTPDIR}/core-image-minimal-${MACHINE}.cpio.gz.u-boot -U-Boot> tftpboot 0x20000000 ${TFTPDIR}/boot.scr +U-Boot> tftpboot 0x200000 Image +U-Boot> tftpboot 0x1000 system.dtb +U-Boot> tftpboot 0x4000000 core-image-minimal-${MACHINE}.cpio.gz.u-boot +U-Boot> tftpboot 0x20000000 boot.scr ``` -### Booting Linux +##### Booting Linux Once the images are loaded continue the execution. 1. After loading images resume the execution of active target using the `con` -command in XSCT shell, Skip step 1 for if you have used TFTP to load images. +command in XSDB shell, Skip step 1 for if you have used TFTP to load images. ``` -xsct% con +xsdb% con ``` -2. Terminate xsct shell. +2. Terminate xsdb shell. ``` -xsct% exit +xsdb% exit ``` 3. In the target Serial Terminal, from U-Boot prompt run `boot` command. ``` @@ -181,9 +208,9 @@ U-Boot> boot card (part number: X_EBM-01, REV_A01). 2. With the card powered off, install the QSPI daughter card. 3. Power on the VCK190 board and boot using JTAG or SD boot mode, to ensure that - U-Boot is running and also have boot.bin copied to DDR location using XSCT + U-Boot is running and also have boot.bin copied to DDR location using XSDB `dow` or `tftpboot` or `fatload` command. 4. Follow Flash boot instructions [README](README.booting.flash.md) for more details. 5. After flashing the images, turn off the power switch on the board, and change the SW1 boot mode pin settings to QSPI boot mode (1-ON, 2-OFF, 3-ON, 4-ON) by - setting the SW1. Refer [Setting Up the Target](#setting-up-the-target). \ No newline at end of file + setting the SW1. Refer [Setting Up the Target](#setting-up-the-target). -- cgit v1.2.3-54-g00ecf