mirror of
https://git.rtems.org/rtems-docs/
synced 2025-05-15 05:16:39 +08:00
rtems-docs: add example booting aarch64 image on Xilinx ZCU102
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.
This commit is contained in:
parent
df8261a46e
commit
c0d6983483
@ -44,6 +44,173 @@ 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@ff170000: 0
|
||||
In: serial@ff000000
|
||||
Out: serial@ff000000
|
||||
Err: serial@ff000000
|
||||
Bootmode: SD_MODE1
|
||||
Reset reason: SOFT
|
||||
Net:
|
||||
ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 12, interface rgmii-id
|
||||
|
||||
Warning: ethernet@ff0e0000 (eth0) using random MAC address - 82:32:1d:80:d9:c9
|
||||
eth0: ethernet@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
|
||||
------------
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user