[PATCH] rtems-docs: add example booting aarch64 image on Xilinx ZCU102

Kinsey Moore kinsey.moore at oarcorp.com
Fri Mar 25 13:11:40 UTC 2022


All the content here looks great! Thanks Alan


Kinsey

On 3/18/2022 11:04, Alan Cudmore wrote:
> This patch is for the rtems-docs repo. I added details on the procedure I
> used to boot RTEMS images on the Xilinx ZCU102 board. I applied this patch,
> and  generated the HTML docs, and everything looks ok to me.
> Thanks,
> Alan
>
> ---
>   user/bsps/aarch64/xilinx-zynqmp.rst | 138 ++++++++++++++++++++++++++++
>   1 file changed, 138 insertions(+)
>
> diff --git a/user/bsps/aarch64/xilinx-zynqmp.rst
> b/user/bsps/aarch64/xilinx-zynqmp.rst
> index ca232de..3d55c4c 100644
> --- a/user/bsps/aarch64/xilinx-zynqmp.rst
> +++ b/user/bsps/aarch64/xilinx-zynqmp.rst
> @@ -44,6 +44,144 @@ When booting via u-boot, RTEMS must be packaged into a
> u-boot image or booted
>   as a raw binary since u-boot does not currently support ELF64 which is
> required
>   for AArch64 ELF binaries.
>
> +
> +Example: Booting a RTEMS image on the ZCU102 ZynqMP board
> +---------------------------------------------------------
> +
> +This example will walk through the steps needed for booting RTEMS from a
> SD card on the
> +`ZCU102 ZynqMP board. <
> https://www.xilinx.com/products/boards-and-kits/ek-u1-zcu102-g.html>`_ The
> reference for setting up a SD card and obtaining pre-built boot images is
> `here. <
> https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841858/Board+bring+up+using+pre-built+images
>> `_
> +
> +Hardware Setup
> +^^^^^^^^^^^^^^
> +
> +Set the dip switch SW6 according to the table below. This will allow the
> board to boot from the SD card. Connect a Micro-USB cable to the USB UART
> interface J83. This is a quad USB UART interface which will show up on the
> development host computer as four different serial or tty devices. Use the
> first channel for the console UART. It should be set to 115k baud.
> +
> ++---------------------------+
> +| Dip Switch JW6            |
> ++------+------+------+------+
> +|  ON  |  OFF |  OFF |  OFF |
> ++------+------+------+------+
> +
> +Prepare a SD card with a bootable partition
> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +The goal is to have a bootable SD card with a partition that is formatted
> with the FAT file system. The file system will contain the boot artifacts
> including BOOT.bin and the u-boot image. The RTEMS image will be placed on
> this volume. To create the bootable SD card, follow the directions `here. <
> https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842385/How+to+format+SD+card+for+SD+boot
>> `_
> +
> +Once you have the card formatted correctly, you need to place the files
> from `this archive <
> https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/2202763266/2021.2+Release#Downloads>`_
> on the FAT partition. The following file was used for this example:
> `xilinx-vck190-v2021.2-final.bsp <
> https://www.xilinx.com/member/forms/download/xef.html?filename=xilinx-vck190-v2021.2-final.bsp
>> `_
> +
> +In order to download these files, you need to have a Xilinx account login.
> As an alternative, you can download a bootable image for Ubuntu 20.04 and
> write it to an SD card using a utility such as `Balena Etcher <
> https://www.balena.io/etcher>`_  or dd. The Ubuntu image is available
> `here. <https://ubuntu.com/download/xilinx>`_ Download the image for the
> Zynq Ultrascale+ MPSoC Development boards, uncompress it and write it to
> the SD card. This image creates multiple partitions, but we only need to
> use the FAT partition with the boot artifacts on it.
> +
> +Verify that the board can boot from the SD card
> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +It is worth booting the board from the SD card before trying to boot
> RTEMS. Insert the card and power on the board. You should see the messages
> on the first console indicating the various boot loader stages and
> eventually the Linux kernel. The goal is to interrupt u-boot when given the
> chance to access the u-boot command prompt.
> +
> +Build RTEMS with examples
> +^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Build the RTEMS `xilinx-zynqmp-lp64-zu3eg` BSP. Use the ticker.exe sample
> which can be found in the directory:
> +
> +.. code-block:: shell
> +
> +  build/aarch64/xilinx-zynqmp-lp64-zu3eg/testsuites/samples
> +
> +Prepare the RTEMS image
> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Prepare your RTEMS image to boot from u-boot with the following commands:
> +
> +.. code-block:: shell
> +
> +  $ aarch64-rtems6-objcopy -Obinary ticker.exe ticker.bin
> +  $ gzip -9 ticker.bin
> +  $ mkimage -A arm64 -O rtems -T kernel -a 0x10000000 -e 0x10000000 -n
> RTEMS -d ticker.bin.gz rtems.img
> +
> +Boot the RTEMS image
> +^^^^^^^^^^^^^^^^^^^^
> +Copy the prepared RTEMS image to the SD card and insert the SD crd in the
> ZCU102 board. Power on the board.
> +When you see the prompt on the console to interupt u-boot, hit a key to
> bring up the u-boot command prompt. On the u-boot command prompt you can
> boot your RTEMS image:
> +
> +.. code-block:: shell
> +
> +  Zynq-MP> fatload mmc 0:1 0x1000 rtems.img
> +  Zynq-MP> bootm 0x1000
> +
> +This is the entire boot sequence:
> +
> +.. code-block:: shell
> +
> +  Pre-FSBL boot Started
> +  Xilinx Zynq MP First Stage Boot Loader
> +  Release 2020.2   Nov 18 2020  -  11:46:01
> +  NOTICE:  ATF running on XCZU9EG/silicon v1/RTL5.1 at 0xfffea000
> +  NOTICE:  BL31: v2.2(release):xilinx_rebase_v2.2_2020.1-10-ge6eea88b1
> +  NOTICE:  BL31: Built : 12:28:45, Nov 17 2020
> +
> +  U-Boot 2020.01 (Jun 15 2021 - 14:24:32 +0000)
> +
> +  Model: ZynqMP ZCU102 Rev1.0
> +  Board: Xilinx ZynqMP
> +  DRAM:  4 GiB
> +  PMUFW:  v1.1
> +  EL Level:       EL2
> +  Chip ID:        zu9eg
> +  NAND:  0 MiB
> +  MMC:   mmc at ff170000: 0
> +  In:    serial at ff000000
> +  Out:   serial at ff000000
> +  Err:   serial at ff000000
> +  Bootmode: SD_MODE1
> +  Reset reason:   SOFT
> +  Net:
> +  ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 12, interface rgmii-id
> +
> +  Warning: ethernet at ff0e0000 (eth0) using random MAC address -
> 82:32:1d:80:d9:c9
> +  eth0: ethernet at ff0e0000
> +  Hit any key to stop autoboot:  0
> +
> +  ZynqMP> fatload mmc 0:1 0x1000 rtems.img
> +  46669 bytes read in 27 ms (1.6 MiB/s)
> +  ZynqMP> bootm 0x1000
> +  ## Booting kernel from Legacy Image at 00001000 ...
> +     Image Name:   RTEMS
> +     Image Type:   AArch64 RTEMS Kernel Image (gzip compressed)
> +     Data Size:    46605 Bytes = 45.5 KiB
> +     Load Address: 10000000
> +     Entry Point:  10000000
> +     Verifying Checksum ... OK
> +     Uncompressing Kernel Image
> +  ## Transferring control to RTEMS (at address 10000000) ...
> +
> +  *** BEGIN OF TEST CLOCK TICK ***
> +  *** TEST VERSION: 6.0.0.f381e9bab29278e4434b1a93e70d17a7562dc64c
> +  *** TEST STATE: EXPECTED_PASS
> +  *** TEST BUILD: RTEMS_POSIX_API RTEMS_SMP
> +  *** TEST TOOLS: 10.3.1 20210409 (RTEMS 6, RSB
> ad54d1dd3cf8249d9d39deb1dd28b2f294df062d, Newlib eb03ac1)
> +  TA1  - rtems_clock_get_tod - 09:00:00   12/31/1988
> +  TA2  - rtems_clock_get_tod - 09:00:00   12/31/1988
> +  TA3  - rtems_clock_get_tod - 09:00:00   12/31/1988
> +  TA1  - rtems_clock_get_tod - 09:00:05   12/31/1988
> +  TA2  - rtems_clock_get_tod - 09:00:10   12/31/1988
> +  TA1  - rtems_clock_get_tod - 09:00:10   12/31/1988
> +  TA1  - rtems_clock_get_tod - 09:00:15   12/31/1988
> +  TA3  - rtems_clock_get_tod - 09:00:15   12/31/1988
> +  TA2  - rtems_clock_get_tod - 09:00:20   12/31/1988
> +  TA1  - rtems_clock_get_tod - 09:00:20   12/31/1988
> +  TA1  - rtems_clock_get_tod - 09:00:25   12/31/1988
> +  TA2  - rtems_clock_get_tod - 09:00:30   12/31/1988
> +  TA1  - rtems_clock_get_tod - 09:00:30   12/31/1988
> +  TA3  - rtems_clock_get_tod - 09:00:30   12/31/1988
> +
> +  *** END OF TEST CLOCK TICK ***
> +
> +  [ RTEMS shutdown ]
> +
> +
> +Follow up
> +^^^^^^^^^
> +
> +This is just one possible way to boot the RTEMS image. For a development
> environment you may wish to configure u-boot to boot the RTEMS image from a
> TFTP server. For a production environment, you may wish to download,
> configure, and build u-boot, or develop a BOOT.BIN image with the RTEMS
> application.
> +
>   Clock Driver
>   ------------
>


More information about the devel mailing list