Lines Matching +full:versal +full:- +full:fpga
1 Xilinx Versal Virt (``xlnx-versal-virt``)
4 Xilinx Versal is a family of heterogeneous multi-core SoCs
7 FPGA logic (PL) and an Artificial Intelligence Engine (AIE).
10 https://www.xilinx.com/products/silicon-devices/acap/versal.html
12 The family of Versal SoCs share a single architecture but come in
16 The Xilinx Versal Virt board in QEMU is a model of a virtual board
17 (does not exist in reality) with a virtual Versal SoC without I/O
22 - 2 ACPUs (ARM Cortex-A72)
26 - Interrupt controller (ARM GICv3)
27 - 2 UARTs (ARM PL011)
28 - An RTC (Versal built-in)
29 - 2 GEMs (Cadence MACB Ethernet MACs)
30 - 8 ADMA (Xilinx zDMA) channels
31 - 2 SD Controllers
32 - OCM (256KB of On Chip Memory)
33 - XRAM (4MB of on chip Accelerator RAM)
34 - DDR memory
35 - BBRAM (36 bytes of Battery-backed RAM)
36 - eFUSE (3072 bytes of one-time field-programmable bit array)
37 - 2 CANFDs
43 - QEMU allows the amount of DDR memory provided to be specified with the
44 ``-m`` argument. If a DTB is provided on the command line then QEMU will
45 edit it to include suitable entries describing the Versal DDR memory ranges.
47 - QEMU provides 8 virtio-mmio virtio transports; these start at
53 to use the ``-kernel`` command line option.
55 Users can load firmware or boot-loaders with the ``-device loader`` options.
60 If there's no ``-kernel`` option, we generate a DTB and place it at 0x1000
61 for boot-loaders or firmware to pick it up.
63 If users want to provide their own DTB, they can use the ``-dtb`` option.
68 as the PSCI conduit. When there's no ``-kernel`` option, we assume the user
75 .. code-block:: bash
77 $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \
78 -serial mon:stdio -display none \
79 -kernel arch/arm64/boot/Image \
80 -nic user -nic user \
81 -device virtio-rng-device,bus=virtio-mmio-bus.0 \
82 -drive if=none,index=0,file=hd0.qcow2,id=hd0,snapshot \
83 -drive file=qemu_sd.qcow2,if=sd,index=0,snapshot \
84 -device virtio-blk-device,drive=hd0 -append root=/dev/vda
88 .. code-block:: bash
90 $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \
91 -serial mon:stdio -display none \
92 -kernel petalinux-v2019.2/Image \
93 -append "rdinit=/sbin/init console=ttyAMA0,115200n8 earlycon=pl011,mmio,0xFF000000,115200n8" \
94 -net nic,model=cadence_gem,netdev=net0 -netdev user,id=net0 \
95 -device virtio-rng-device,bus=virtio-mmio-bus.0,rng=rng0 \
96 -object rng-random,filename=/dev/urandom,id=rng0
99 version of ATF tries to configure the CCI which we don't model) and U-boot:
101 .. code-block:: bash
103 $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \
104 -serial stdio -display none \
105 -device loader,file=petalinux-v2018.3/bl31.elf,cpu-num=0 \
106 -device loader,file=petalinux-v2019.2/u-boot.elf \
107 -device loader,addr=0x20000000,file=petalinux-v2019.2/Image \
108 -nic user -nic user \
109 -device virtio-rng-device,bus=virtio-mmio-bus.0,rng=rng0 \
110 -object rng-random,filename=/dev/urandom,id=rng0
112 Run the following at the U-Boot prompt:
114 .. code-block:: bash
116 Versal>
119 fdt set /timer clock-frequency <0x3dfd240>
121 booti 20000000 - 40000000
124 Boot Linux as DOM0 on Xen via U-Boot:
126 .. code-block:: bash
128 $ qemu-system-aarch64 -M xlnx-versal-virt -m 4G \
129 -serial stdio -display none \
130 -device loader,file=petalinux-v2019.2/u-boot.elf,cpu-num=0 \
131 -device loader,addr=0x30000000,file=linux/2018-04-24/xen \
132 -device loader,addr=0x40000000,file=petalinux-v2019.2/Image \
133 -nic user -nic user \
134 -device virtio-rng-device,bus=virtio-mmio-bus.0,rng=rng0 \
135 -object rng-random,filename=/dev/urandom,id=rng0
137 Run the following at the U-Boot prompt:
139 .. code-block:: bash
141 Versal>
144 fdt set /timer clock-frequency <0x3dfd240>
145 …fdt set /chosen xen,xen-bootargs "console=dtuart dtuart=/uart@ff000000 dom0_mem=640M bootscrub=0 m…
146 fdt set /chosen xen,dom0-bootargs "rdinit=/sbin/init clk_ignore_unused console=hvc0 maxcpus=1"
148 fdt set /chosen/dom0 compatible "xen,multiboot-module"
150 booti 30000000 - 20000000
152 Boot Linux as Dom0 on Xen via ARM Trusted Firmware and U-Boot:
154 .. code-block:: bash
156 $ qemu-system-aarch64 -M xlnx-versal-virt -m 4G \
157 -serial stdio -display none \
158 -device loader,file=petalinux-v2018.3/bl31.elf,cpu-num=0 \
159 -device loader,file=petalinux-v2019.2/u-boot.elf \
160 -device loader,addr=0x30000000,file=linux/2018-04-24/xen \
161 -device loader,addr=0x40000000,file=petalinux-v2019.2/Image \
162 -nic user -nic user \
163 -device virtio-rng-device,bus=virtio-mmio-bus.0,rng=rng0 \
164 -object rng-random,filename=/dev/urandom,id=rng0
166 Run the following at the U-Boot prompt:
168 .. code-block:: bash
170 Versal>
173 fdt set /timer clock-frequency <0x3dfd240>
174 …fdt set /chosen xen,xen-bootargs "console=dtuart dtuart=/uart@ff000000 dom0_mem=640M bootscrub=0 m…
175 fdt set /chosen xen,dom0-bootargs "rdinit=/sbin/init clk_ignore_unused console=hvc0 maxcpus=1"
177 fdt set /chosen/dom0 compatible "xen,multiboot-module"
179 booti 30000000 - 20000000
187 To add a file-backend for the BBRAM:
189 .. code-block:: bash
191 -drive if=pflash,index=0,file=versal-bbram.bin,format=raw
195 .. code-block:: bash
197 -global driver=xlnx.bbram-ctrl,property=drive-index,value=N
205 To add a file-backend for the eFUSE:
207 .. code-block:: bash
209 -drive if=pflash,index=1,file=versal-efuse.bin,format=raw
213 .. code-block:: bash
215 -global xlnx-efuse.drive-index=N
218 In actual physical Versal, BBRAM and eFUSE contain sensitive data.
227 on this Xilinx Versal Virt board.
229 Using CANFDs for Versal Virt
231 Versal CANFD controller is developed based on SocketCAN and QEMU CAN bus
237 .. code-block:: bash
239 -object can-bus,id=canbus -machine canbus0=canbus -machine canbus1=canbus
243 .. code-block:: bash
245 -object can-bus,id=canbus0 -object can-bus,id=canbus1 \
246 -machine canbus0=canbus0 -machine canbus1=canbus1
254 .. code-block:: bash
256 -object can-bus,id=canbus -machine canbus0=canbus -machine canbus1=canbus
257 -object can-host-socketcan,id=canhost0,if=can0,canbus=canbus