blob: 2cd368b0308e32cfb34e07748a339198238965ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
.. SPDX-License-Identifier: GPL-2.0
.. (C) Copyright 2020 Xilinx, Inc.
ZYNQMP-R5
=========
About this
----------
This document describes the information about Xilinx Zynq UltraScale+ MPSOC
U-Boot Cortex R5 support.
ZynqMP R5 boards
----------------
* zynqmp-r5 - U-Boot running on RPU Cortex-R5
Building
--------
configure and build armv7 toolchain::
$ make xilinx_zynqmp_r5_defconfig
$ make
Notes
^^^^^
Output fragment is u-boot.
Loading
-------
ZynqMP R5 U-Boot was created for supporting loading OS on RPU. There are two
ways how to start U-Boot on R5.
Bootgen
^^^^^^^
The first way is to use Xilinx FSBL (First stage
bootloader) to load u-boot and start it. The following bif can be used for boot
image generation via Xilinx bootgen utility::
the_ROM_image:
{
[bootloader,destination_cpu=r5-0] fsbl_rpu.elf
[destination_cpu=r5-0]u-boot.elf
}
Bootgen command for building boot.bin::
bootgen -image <bif>.bif -r -w -o i boot.bin
U-Boot cpu command
^^^^^^^^^^^^^^^^^^
The second way to load U-Boot to Cortex R5 is from U-Boot running on A53 as is
visible from the following log::
U-Boot SPL 2020.10-rc4-00090-g801b3d5c5757 (Sep 15 2020 - 14:07:24 +0200)
PMUFW: v1.1
Loading new PMUFW cfg obj (2024 bytes)
EL Level: EL3
Multiboot: 0
Trying to boot from MMC2
spl: could not initialize mmc. error: -19
Trying to boot from MMC1
spl_load_image_fat_os: error reading image u-boot.bin, err - -2
NOTICE: ATF running on XCZU7EG/EV/silicon v4/RTL5.1 at 0xfffea000
NOTICE: BL31: v2.2(release):v2.2-614-ged9dc512fb9c
NOTICE: BL31: Built : 09:32:09, Mar 13 2020
U-Boot 2020.10-rc4-00090-g801b3d5c5757 (Sep 15 2020 - 14:07:24 +0200)
Model: ZynqMP ZCU104 RevC
Board: Xilinx ZynqMP
DRAM: 2 GiB
PMUFW: v1.1
EL Level: EL2
Chip ID: zu7e
WDT: Started with servicing (60s timeout)
NAND: 0 MiB
MMC: mmc@ff170000: 0
Loading Environment from FAT... *** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Bootmode: LVL_SHFT_SD_MODE1
Reset reason: SOFT
Net:
ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 12, interface rgmii-id
eth0: ethernet@ff0e0000
Hit any key to stop autoboot: 0
ZynqMP> setenv autoload no
ZynqMP> dhcp
BOOTP broadcast 1
DHCP client bound to address 192.168.0.167 (8 ms)
ZynqMP> tftpboot 20000000 192.168.0.105:u-boot-r5-2.elf
Using ethernet@ff0e0000 device
TFTP from server 192.168.0.105; our IP address is 192.168.0.167
Filename 'u-boot-r5-2.elf'.
Load address: 0x20000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
################
376 KiB/s
done
Bytes transferred = 2075464 (1fab48 hex)
ZynqMP> setenv autostart no
ZynqMP> bootelf -p 20000000
ZynqMP> cpu 4 release 10000000 lockstep
Using TCM jump trampoline for address 0x10000000
R5 lockstep mode
ZynqMP>
Then on second uart you can see U-Boot up and running on R5::
U-Boot 2020.10-rc4-00071-g7045622cc9ba (Sep 16 2020 - 13:38:53 +0200)
Model: Xilinx ZynqMP R5
DRAM: 512 MiB
MMC:
In: serial@ff010000
Out: serial@ff010000
Err: serial@ff010000
Net: No ethernet found.
ZynqMP r5>
Please make sure MIO pins for uart are properly configured to see output.
|