diff options
Diffstat (limited to 'docs/README.fpgamanager.custom.md')
-rw-r--r-- | docs/README.fpgamanager.custom.md | 478 |
1 files changed, 0 insertions, 478 deletions
diff --git a/docs/README.fpgamanager.custom.md b/docs/README.fpgamanager.custom.md deleted file mode 100644 index dbdf5907..00000000 --- a/docs/README.fpgamanager.custom.md +++ /dev/null | |||
@@ -1,478 +0,0 @@ | |||
1 | # Build Instructions to create firmware recipes using fpgamanager_custom bbclass | ||
2 | |||
3 | * [Introduction](#introduction) | ||
4 | * [How to create a firmware recipe app](#how-to-create-a-firmware-recipe-app) | ||
5 | * [Test Procedure on Target](#test-procedure-on-target) | ||
6 | * [Loading PL bitstream or pdi and dt overlay](#loading-pl-bitstream-or-pdi-and-dt-overlay) | ||
7 | * [Testing PL functionality](#testing-pl-functionality) | ||
8 | * [Unloading PL bitstream or pdi and dt overlay](#unloading-pl-bitstream-or-pdi-and-dt-overlay) | ||
9 | * [References](#references) | ||
10 | |||
11 | > **Note:** This README will be deprecated in 2024.1 release. User sthould start | ||
12 | > using [DFx User DTS README](README.dfx.user.dts.md) | ||
13 | |||
14 | ## Introduction | ||
15 | This readme describes the build instructions to create firmware recipes using | ||
16 | fpgamanager_custom.bbclass for dynamic configuration. This bitbake class supports | ||
17 | following use cases. | ||
18 | |||
19 | > **Note:** Refer https://github.com/Xilinx/dfx-mgr/blob/master/README.md for | ||
20 | > shell.json and accel.json file content. | ||
21 | |||
22 | * **Zynq-7000 and ZynqMP**: | ||
23 | * Design: Vivado flat design. | ||
24 | * Input files to firmware recipes: .bit, .dtsi or dtbo and shell.json (optional) | ||
25 | * Usage Examples: | ||
26 | ``` | ||
27 | SRC_URI = " \ | ||
28 | file://<flat_design_pl>.bit \ | ||
29 | file://<flat_design_pl>.dtsi \ | ||
30 | file://shell.json \ | ||
31 | " | ||
32 | ``` | ||
33 | |||
34 | ``` | ||
35 | SRC_URI = " \ | ||
36 | file://<flat_design_pl>.bit \ | ||
37 | file://<flat_design_pl>.dtbo \ | ||
38 | file://shell.json \ | ||
39 | " | ||
40 | ``` | ||
41 | |||
42 | * **ZynqMP and Versal**: | ||
43 | * Design: Vivado DFx design. | ||
44 | * Input files to firmware recipes: .bit(ZynqMP) or .pdi(Versal), .dtsi or dtbo | ||
45 | shell.json or accel.json (optional) and .xclbin (optional). | ||
46 | * Usage Examples: | ||
47 | |||
48 | ``` | ||
49 | # ZynqMP DFx Static | ||
50 | SRC_URI = " \ | ||
51 | file://<dfx_design_static_pl>.bit \ | ||
52 | file://<dfx_design_static_pl>.dtsi \ | ||
53 | file://shell.json \ | ||
54 | file://<dfx_design_static_pl>.xclbin \ | ||
55 | " | ||
56 | ``` | ||
57 | |||
58 | ``` | ||
59 | # ZynqMP DFx Static | ||
60 | SRC_URI = " \ | ||
61 | file://<dfx_design_static_pl>.bit \ | ||
62 | file://<dfx_design_static_pl>.dtbo \ | ||
63 | file://shell.json \ | ||
64 | file://<dfx_design_static_pl>.xclbin \ | ||
65 | " | ||
66 | ``` | ||
67 | |||
68 | ``` | ||
69 | # ZynqMP DFx RP | ||
70 | SRC_URI = " \ | ||
71 | file://<dfx_design_rp_rm_pl>.bit \ | ||
72 | file://<dfx_design_rp_rm_pl>.dtsi \ | ||
73 | file://accel.json \ | ||
74 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
75 | " | ||
76 | ``` | ||
77 | |||
78 | ``` | ||
79 | # ZynqMP DFx RP | ||
80 | SRC_URI = " \ | ||
81 | file://<dfx_design_rp_rm_pl>.bit \ | ||
82 | file://<dfx_design_rp_rm_pl>.dtbo \ | ||
83 | file://accel.json \ | ||
84 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
85 | " | ||
86 | ``` | ||
87 | ``` | ||
88 | # Versal DFx Static | ||
89 | SRC_URI = " \ | ||
90 | file://<dfx_design_static_pl>.pdi \ | ||
91 | file://<dfx_design_static_pl>.dtsi \ | ||
92 | file://shell.json \ | ||
93 | file://<dfx_design_static_pl>.xclbin \ | ||
94 | " | ||
95 | ``` | ||
96 | |||
97 | ``` | ||
98 | # Versal DFx Static | ||
99 | SRC_URI = " \ | ||
100 | file://<dfx_design_static_pl>.pdi \ | ||
101 | file://<dfx_design_static_pl>.dtbo \ | ||
102 | file://shell.json \ | ||
103 | file://<dfx_design_static_pl>.xclbin \ | ||
104 | " | ||
105 | ``` | ||
106 | |||
107 | ``` | ||
108 | # Versal DFx RP | ||
109 | SRC_URI = " \ | ||
110 | file://<dfx_design_rp_rm_pl>.pdi \ | ||
111 | file://<dfx_design_rp_rm_pl>.dtsi \ | ||
112 | file://accel.json \ | ||
113 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
114 | " | ||
115 | ``` | ||
116 | |||
117 | ``` | ||
118 | # Versal DFx RP | ||
119 | SRC_URI = " \ | ||
120 | file://<dfx_design_rp_rm_pl>.pdi \ | ||
121 | file://<dfx_design_rp_rm_pl>.dtbo \ | ||
122 | file://accel.json \ | ||
123 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
124 | " | ||
125 | ``` | ||
126 | --- | ||
127 | |||
128 | ## How to create a firmware recipe app | ||
129 | |||
130 | 1. Follow [Building Instructions](../README.building.md) upto step 4. | ||
131 | 2. Create recipes-firmware directory in meta layer and copy the .bit/pdi, | ||
132 | .dtsi/dtbo, .json and .xclbin file to these directories. | ||
133 | ``` | ||
134 | $ mkdir -p <meta-layer>/recipes-firmware/<recipes-firmware-app>/files | ||
135 | $ cp -r <path-to-files>/*.{bit or pdi, dtsi or dtbo, shell.json or accel.json and .xclbin} <meta-layer>/recipes-firmware/<firmware-app-name>/files | ||
136 | ``` | ||
137 | 3. Now create the recipes for flat or static or partial firmware using recipetool. | ||
138 | ``` | ||
139 | $ recipetool create -o <meta-layer>/recipes-firmware/<firmware-app-name>/firmware-app-name.bb file:///<meta-layer>/recipes-firmware/<firmware-app-name>/files | ||
140 | ``` | ||
141 | 4. Modify the recipe and inherit fpgamanager_custom bbclass as shown below. | ||
142 | ``` | ||
143 | SUMMARY = "Full Bitstream loading zcu111-pl-demo firmware using fpgamanager_custom bbclass" | ||
144 | LICENSE = "MIT" | ||
145 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" | ||
146 | |||
147 | inherit fpgamanager_custom | ||
148 | |||
149 | SRC_URI = "\ | ||
150 | file://zcu111-pl-demo.bit \ | ||
151 | file://zcu111-pl-demo.dtsi \ | ||
152 | " | ||
153 | |||
154 | COMPATIBLE_MACHINE ?= "^$" | ||
155 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
156 | ``` | ||
157 | 5. Add firmware-recipe app to image and enable fpga-overlay machine features to | ||
158 | local.conf as shown below. | ||
159 | > **Note:** fpga-manager-script provides fpgautil tool to load .bit/pdi and dtbo | ||
160 | > at runtime linux. | ||
161 | ``` | ||
162 | MACHINE_FEATURES += "fpga-overlay" | ||
163 | IMAGE_INSTALL:append = " \ | ||
164 | firmware-app-name \ | ||
165 | fpga-manager-script \ | ||
166 | " | ||
167 | ``` | ||
168 | 6. Follow [Building Instructions](../README.building.md) and continue from step 5. | ||
169 | 7. Once images are built firmware app files will be installed on target_rootfs. | ||
170 | ``` | ||
171 | # <target_rootfs>/lib/firmware/xilinx/firmware-app-name | ||
172 | ``` | ||
173 | --- | ||
174 | |||
175 | ## Test Procedure on Target | ||
176 | * Once Linux boots on target, use fpgautil command to load .bit or .pdi and | ||
177 | corresponding dt overlay as shown below. | ||
178 | > **Note:** firmware can be loaded only with sudo or root permissions. | ||
179 | --- | ||
180 | |||
181 | ### Loading PL bitstream or pdi and dt overlay | ||
182 | |||
183 | * ZynqMP | ||
184 | ``` | ||
185 | yocto-zynqmp-generic-20231:~$ sudo su | ||
186 | yocto-zynqmp-generic-20231:/home/petalinux# cat /proc/interrupts | ||
187 | CPU0 CPU1 CPU2 CPU3 | ||
188 | 11: 13309 13021 13673 14170 GICv2 30 Level arch_timer | ||
189 | 14: 0 0 0 0 GICv2 67 Level zynqmp_ipi | ||
190 | 15: 0 0 0 0 GICv2 175 Level arm-pmu | ||
191 | 16: 0 0 0 0 GICv2 176 Level arm-pmu | ||
192 | 17: 0 0 0 0 GICv2 177 Level arm-pmu | ||
193 | 18: 0 0 0 0 GICv2 178 Level arm-pmu | ||
194 | 19: 0 0 0 0 GICv2 58 Level ffa60000.rtc | ||
195 | 20: 0 0 0 0 GICv2 59 Level ffa60000.rtc | ||
196 | 21: 0 0 0 0 GICv2 42 Level ff960000.memory-controller | ||
197 | 22: 0 0 0 0 GICv2 88 Level ams-irq | ||
198 | 23: 0 0 0 0 GICv2 155 Level axi-pmon, axi-pmon | ||
199 | 24: 327 0 0 0 GICv2 53 Level xuartps | ||
200 | 27: 0 0 0 0 GICv2 156 Level zynqmp-dma | ||
201 | 28: 0 0 0 0 GICv2 157 Level zynqmp-dma | ||
202 | 29: 0 0 0 0 GICv2 158 Level zynqmp-dma | ||
203 | 30: 0 0 0 0 GICv2 159 Level zynqmp-dma | ||
204 | 31: 0 0 0 0 GICv2 160 Level zynqmp-dma | ||
205 | 32: 0 0 0 0 GICv2 161 Level zynqmp-dma | ||
206 | 33: 0 0 0 0 GICv2 162 Level zynqmp-dma | ||
207 | 34: 0 0 0 0 GICv2 163 Level zynqmp-dma | ||
208 | 35: 0 0 0 0 GICv2 109 Level zynqmp-dma | ||
209 | 36: 0 0 0 0 GICv2 110 Level zynqmp-dma | ||
210 | 37: 0 0 0 0 GICv2 111 Level zynqmp-dma | ||
211 | 38: 0 0 0 0 GICv2 112 Level zynqmp-dma | ||
212 | 39: 0 0 0 0 GICv2 113 Level zynqmp-dma | ||
213 | 40: 0 0 0 0 GICv2 114 Level zynqmp-dma | ||
214 | 41: 0 0 0 0 GICv2 115 Level zynqmp-dma | ||
215 | 42: 0 0 0 0 GICv2 116 Level zynqmp-dma | ||
216 | 43: 0 0 0 0 GICv2 154 Level fd4c0000.dma-controller | ||
217 | 44: 5938 0 0 0 GICv2 47 Level ff0f0000.spi | ||
218 | 45: 76 0 0 0 GICv2 95 Level eth0, eth0 | ||
219 | 46: 0 0 0 0 GICv2 57 Level axi-pmon, axi-pmon | ||
220 | 47: 4802 0 0 0 GICv2 49 Level cdns-i2c | ||
221 | 48: 501 0 0 0 GICv2 50 Level cdns-i2c | ||
222 | 50: 0 0 0 0 GICv2 84 Edge ff150000.watchdog | ||
223 | 51: 0 0 0 0 GICv2 151 Level fd4a0000.display | ||
224 | 52: 548 0 0 0 GICv2 81 Level mmc0 | ||
225 | 53: 0 0 0 0 GICv2 165 Level ahci-ceva[fd0c0000.ahci] | ||
226 | 54: 0 0 0 0 GICv2 97 Level xhci-hcd:usb1 | ||
227 | 55: 0 0 0 0 zynq-gpio 22 Edge sw19 | ||
228 | IPI0: 64 25 87 38 Rescheduling interrupts | ||
229 | IPI1: 1933 6579 1096 5686 Function call interrupts | ||
230 | IPI2: 0 0 0 0 CPU stop interrupts | ||
231 | IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts | ||
232 | IPI4: 0 0 0 0 Timer broadcast interrupts | ||
233 | IPI5: 0 0 0 0 IRQ work interrupts | ||
234 | IPI6: 0 0 0 0 CPU wake-up interrupts | ||
235 | Err: 0 | ||
236 | yocto-zynqmp-generic-20231:/home/petalinux# tree /lib/firmware/ | ||
237 | /lib/firmware/ | ||
238 | `-- xilinx | ||
239 | `-- zcu111-pl-demo | ||
240 | |-- zcu111-pl-demo.bit.bin | ||
241 | `-- zcu111-pl-demo.dtbo | ||
242 | |||
243 | 2 directories, 2 files | ||
244 | yocto-zynqmp-generic-20231:/home/petalinux# fpgautil -b /lib/firmware/xilinx/zcu111-pl-demo/zcu111-pl-demo.bit -o /lib/firmware/xilinx/zcu111-pl-demo/zcu111-pl-demo.dtbo | ||
245 | [ 91.039773] fpga_manager fpga0: writing zcu111-pl-demo.bit to Xilinx ZynqMP FPGA Manager | ||
246 | [ 91.528214] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/firmware-name | ||
247 | [ 91.538354] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/pid | ||
248 | [ 91.547598] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/resets | ||
249 | [ 91.557087] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/uid | ||
250 | [ 91.566804] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/afi0 | ||
251 | [ 91.576312] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/clocking0 | ||
252 | [ 91.586255] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_gpio_0 | ||
253 | [ 91.596280] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/misc_clk_0 | ||
254 | [ 91.606300] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_gpio_1 | ||
255 | [ 91.616325] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_gpio_2 | ||
256 | [ 91.626342] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_uartlite_0 | ||
257 | [ 91.636705] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ddr4_0 | ||
258 | [ 91.661849] gpio gpiochip3: (a0000000.gpio): not an immutable chip, please consider fixing it! | ||
259 | [ 91.662020] gpio gpiochip4: (a0010000.gpio): not an immutable chip, please consider fixing it! | ||
260 | [ 91.863492] a0030000.serial: ttyUL0 at MMIO 0xa0030000 (irq = 58, base_baud = 0) is a uartlite | ||
261 | [ 91.876674] uartlite a0030000.serial: Runtime PM usage count underflow! | ||
262 | [ 91.906539] input: pl-gpio-keys as /devices/platform/pl-gpio-keys/input/input1 | ||
263 | Time taken to load BIN is 901.000000 Milli Seconds | ||
264 | BIN FILE loaded through FPGA manager successfully | ||
265 | yocto-zynqmp-generic-20231:/home/petalinux# | ||
266 | ``` | ||
267 | * Versal (DFx Static) | ||
268 | ``` | ||
269 | yocto-vck190-dfx-2023:~$ sudo su | ||
270 | root@yocto-vck190-dfx-2023:~# | ||
271 | root@yocto-vck190-dfx-2023:~# fpgautil -o /lib/firmware/xilinx/vck190-dfx-static/vck190-dfx-static.dtbo | ||
272 | [ 257.555571] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/external-fpga-config | ||
273 | [ 257.565879] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/pid | ||
274 | [ 257.574670] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/uid | ||
275 | [ 257.583599] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/fpga_PR0 | ||
276 | [ 257.593434] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/fpga_PR1 | ||
277 | [ 257.603268] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/fpga_PR2 | ||
278 | [ 257.613100] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_axi_bram_ctrl_0 | ||
279 | [ 257.624762] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_dfx_decoupler_rp1 | ||
280 | [ 257.636589] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_dfx_decoupler_rp2 | ||
281 | [ 257.648415] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_dfx_decoupler_rp3 | ||
282 | [ 257.663234] of-fpga-region fpga:fpga-PR0: FPGA Region probed | ||
283 | [ 257.669135] of-fpga-region fpga:fpga-PR1: FPGA Region probed | ||
284 | [ 257.675022] of-fpga-region fpga:fpga-PR2: FPGA Region probed | ||
285 | root@yocto-vck190-dfx-2023:~# | ||
286 | ``` | ||
287 | * Versal (DFx RP) | ||
288 | ``` | ||
289 | root@yocto-vck190-dfx-2023:~# fpgautil -b /lib/firmware/xilinx/vck190-dfx-static/rp1/vck190-dfx-rp1rm1-dipsw/vck190-dfx-rp1rm1-dipsw.pdi -o /lib/firmware/xilinx/vck190-dfx-static/rp1/vck190-dfx-rp1rm1-dipsw/vck190-dfx-rp1rm1-dipsw.dtbo -f Partial -n PR0 | ||
290 | [ 273.511455] fpga_manager fpga0: writing vck190-dfx-rp1rm1-dipsw.pdi to Xilinx Versal FPGA Manager | ||
291 | [284052.461]Loading PDI from DDR | ||
292 | [284052.566]Monolithic/Master Device | ||
293 | [284055.847]3.365 ms: PDI initialization time | ||
294 | [284059.809]+++Loading Image#: 0x0, Name: pl_cfi, Id: 0x18700002 | ||
295 | [284065.432]---Loading Partition#: 0x0, Id: 0x103 | ||
296 | [284069.829] 0.033 ms for Partition#: 0x0, Size: 1312 Bytes | ||
297 | [284074.973]---Loading Partition#: 0x1, Id: 0x105 | ||
298 | [284079.344] 0.007 ms for Partition#: 0x1, Size: 160 Bytes | ||
299 | [284084.430]---Loading Partition#: 0x2, Id: 0x205 | ||
300 | [284088.844] 0.049 ms for Partition#: 0x2, Size: 960 Bytes | ||
301 | [284093.887]---Loading Partition#: 0x3, Id: 0x203 | ||
302 | [284098.280] 0.030 ms for Partition#: 0x3, Size: 688 Bytes | ||
303 | [284103.342]---Loading Partition#: 0x4, Id: 0x303 | ||
304 | [284108.863] 1.156 ms for Partition#: 0x4, Size: 209440 Bytes | ||
305 | [284113.052]---Loading Partition#: 0x5, Id: 0x305 | ||
306 | [284117.712] 0.296 ms for Partition#: 0x5, Size: 3536 Bytes | ||
307 | [284122.594]---Loading Partition#: 0x6, Id: 0x403 | ||
308 | [284126.991] 0.034 ms for Partition#: 0x6, Size: 8096 Bytes | ||
309 | [284132.136]---Loading Partition#: 0x7, Id: 0x405 | ||
310 | [284136.507] 0.007 ms for Partition#: 0x7, Size: 160 Bytes | ||
311 | [284141.636]Subsystem PDI Load: Done | ||
312 | [ 273.615503] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/firmware-name | ||
313 | [ 273.627382] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/fpga-bridges | ||
314 | [ 273.636953] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/partial-fpga-config | ||
315 | [ 273.647241] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/rp1_axi_gpio_0 | ||
316 | [ 273.660826] gpio gpiochip1: (a4010000.gpio): not an immutable chip, please consider fixing it! | ||
317 | [ 273.670490] input: pl-gpio-keys as /devices/platform/pl-gpio-keys/input/input0 | ||
318 | Time taken to load BIN is 171.000000 Milli Seconds | ||
319 | BIN FILE loaded through FPGA manager successfully | ||
320 | root@yocto-vck190-dfx-2023:~# | ||
321 | ``` | ||
322 | --- | ||
323 | |||
324 | ### Testing PL functionality | ||
325 | |||
326 | * This examples uses PL GPIO DIP switches and Push buttons to capture interrupts. | ||
327 | * Verify PL GPIO DIP switches and Push buttons are registered. | ||
328 | * Move the DIP Switches ON/OFF and verify the interrupt counts. | ||
329 | ``` | ||
330 | yocto-zynqmp-generic-20231:/home/petalinux# cat /proc/interrupts | ||
331 | CPU0 CPU1 CPU2 CPU3 | ||
332 | 11: 23303 22971 24203 24990 GICv2 30 Level arch_timer | ||
333 | 14: 0 0 0 0 GICv2 67 Level zynqmp_ipi | ||
334 | 15: 0 0 0 0 GICv2 175 Level arm-pmu | ||
335 | 16: 0 0 0 0 GICv2 176 Level arm-pmu | ||
336 | 17: 0 0 0 0 GICv2 177 Level arm-pmu | ||
337 | 18: 0 0 0 0 GICv2 178 Level arm-pmu | ||
338 | 19: 0 0 0 0 GICv2 58 Level ffa60000.rtc | ||
339 | 20: 0 0 0 0 GICv2 59 Level ffa60000.rtc | ||
340 | 21: 0 0 0 0 GICv2 42 Level ff960000.memory-controller | ||
341 | 22: 0 0 0 0 GICv2 88 Level ams-irq | ||
342 | 23: 0 0 0 0 GICv2 155 Level axi-pmon, axi-pmon | ||
343 | 24: 515 0 0 0 GICv2 53 Level xuartps | ||
344 | 27: 0 0 0 0 GICv2 156 Level zynqmp-dma | ||
345 | 28: 0 0 0 0 GICv2 157 Level zynqmp-dma | ||
346 | 29: 0 0 0 0 GICv2 158 Level zynqmp-dma | ||
347 | 30: 0 0 0 0 GICv2 159 Level zynqmp-dma | ||
348 | 31: 0 0 0 0 GICv2 160 Level zynqmp-dma | ||
349 | 32: 0 0 0 0 GICv2 161 Level zynqmp-dma | ||
350 | 33: 0 0 0 0 GICv2 162 Level zynqmp-dma | ||
351 | 34: 0 0 0 0 GICv2 163 Level zynqmp-dma | ||
352 | 35: 0 0 0 0 GICv2 109 Level zynqmp-dma | ||
353 | 36: 0 0 0 0 GICv2 110 Level zynqmp-dma | ||
354 | 37: 0 0 0 0 GICv2 111 Level zynqmp-dma | ||
355 | 38: 0 0 0 0 GICv2 112 Level zynqmp-dma | ||
356 | 39: 0 0 0 0 GICv2 113 Level zynqmp-dma | ||
357 | 40: 0 0 0 0 GICv2 114 Level zynqmp-dma | ||
358 | 41: 0 0 0 0 GICv2 115 Level zynqmp-dma | ||
359 | 42: 0 0 0 0 GICv2 116 Level zynqmp-dma | ||
360 | 43: 0 0 0 0 GICv2 154 Level fd4c0000.dma-controller | ||
361 | 44: 5938 0 0 0 GICv2 47 Level ff0f0000.spi | ||
362 | 45: 110 0 0 0 GICv2 95 Level eth0, eth0 | ||
363 | 46: 0 0 0 0 GICv2 57 Level axi-pmon, axi-pmon | ||
364 | 47: 4802 0 0 0 GICv2 49 Level cdns-i2c | ||
365 | 48: 501 0 0 0 GICv2 50 Level cdns-i2c | ||
366 | 50: 0 0 0 0 GICv2 84 Edge ff150000.watchdog | ||
367 | 51: 0 0 0 0 GICv2 151 Level fd4a0000.display | ||
368 | 52: 548 0 0 0 GICv2 81 Level mmc0 | ||
369 | 53: 0 0 0 0 GICv2 165 Level ahci-ceva[fd0c0000.ahci] | ||
370 | 54: 0 0 0 0 GICv2 97 Level xhci-hcd:usb1 | ||
371 | 55: 0 0 0 0 zynq-gpio 22 Edge sw19 | ||
372 | 59: 0 0 0 0 gpio-xilinx 4 Edge PL_GPIO_PB_SW9_N | ||
373 | 60: 0 0 0 0 gpio-xilinx 3 Edge PL_GPIO_PB_SW12_E | ||
374 | 61: 0 0 0 0 gpio-xilinx 2 Edge PL_GPIO_PB_SW13_S | ||
375 | 62: 0 0 0 0 gpio-xilinx 1 Edge PL_GPIO_PB_SW10_W | ||
376 | 63: 0 0 0 0 gpio-xilinx 0 Edge PL_GPIO_PB_SW11_C | ||
377 | 64: 0 0 0 0 gpio-xilinx 7 Edge PL_GPIO_DIP_SW7 | ||
378 | 65: 0 0 0 0 gpio-xilinx 6 Edge PL_GPIO_DIP_SW6 | ||
379 | 66: 0 0 0 0 gpio-xilinx 5 Edge PL_GPIO_DIP_SW5 | ||
380 | 67: 0 0 0 0 gpio-xilinx 4 Edge PL_GPIO_DIP_SW4 | ||
381 | 68: 0 0 0 0 gpio-xilinx 3 Edge PL_GPIO_DIP_SW3 | ||
382 | 69: 0 0 0 0 gpio-xilinx 2 Edge PL_GPIO_DIP_SW2 | ||
383 | 70: 0 0 0 0 gpio-xilinx 1 Edge PL_GPIO_DIP_SW1 | ||
384 | 71: 0 0 0 0 gpio-xilinx 0 Edge PL_GPIO_DIP_SW0 | ||
385 | IPI0: 64 25 87 38 Rescheduling interrupts | ||
386 | IPI1: 2066 6747 1212 5791 Function call interrupts | ||
387 | IPI2: 0 0 0 0 CPU stop interrupts | ||
388 | IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts | ||
389 | IPI4: 0 0 0 0 Timer broadcast interrupts | ||
390 | IPI5: 0 0 0 0 IRQ work interrupts | ||
391 | IPI6: 0 0 0 0 CPU wake-up interrupts | ||
392 | Err: 0 | ||
393 | yocto-zynqmp-generic-20231:/home/petalinux# cat /proc/interrupts | ||
394 | CPU0 CPU1 CPU2 CPU3 | ||
395 | 11: 28169 27725 29250 30190 GICv2 30 Level arch_timer | ||
396 | 14: 0 0 0 0 GICv2 67 Level zynqmp_ipi | ||
397 | 15: 0 0 0 0 GICv2 175 Level arm-pmu | ||
398 | 16: 0 0 0 0 GICv2 176 Level arm-pmu | ||
399 | 17: 0 0 0 0 GICv2 177 Level arm-pmu | ||
400 | 18: 0 0 0 0 GICv2 178 Level arm-pmu | ||
401 | 19: 0 0 0 0 GICv2 58 Level ffa60000.rtc | ||
402 | 20: 0 0 0 0 GICv2 59 Level ffa60000.rtc | ||
403 | 21: 0 0 0 0 GICv2 42 Level ff960000.memory-controller | ||
404 | 22: 0 0 0 0 GICv2 88 Level ams-irq | ||
405 | 23: 0 0 0 0 GICv2 155 Level axi-pmon, axi-pmon | ||
406 | 24: 603 0 0 0 GICv2 53 Level xuartps | ||
407 | 27: 0 0 0 0 GICv2 156 Level zynqmp-dma | ||
408 | 28: 0 0 0 0 GICv2 157 Level zynqmp-dma | ||
409 | 29: 0 0 0 0 GICv2 158 Level zynqmp-dma | ||
410 | 30: 0 0 0 0 GICv2 159 Level zynqmp-dma | ||
411 | 31: 0 0 0 0 GICv2 160 Level zynqmp-dma | ||
412 | 32: 0 0 0 0 GICv2 161 Level zynqmp-dma | ||
413 | 33: 0 0 0 0 GICv2 162 Level zynqmp-dma | ||
414 | 34: 0 0 0 0 GICv2 163 Level zynqmp-dma | ||
415 | 35: 0 0 0 0 GICv2 109 Level zynqmp-dma | ||
416 | 36: 0 0 0 0 GICv2 110 Level zynqmp-dma | ||
417 | 37: 0 0 0 0 GICv2 111 Level zynqmp-dma | ||
418 | 38: 0 0 0 0 GICv2 112 Level zynqmp-dma | ||
419 | 39: 0 0 0 0 GICv2 113 Level zynqmp-dma | ||
420 | 40: 0 0 0 0 GICv2 114 Level zynqmp-dma | ||
421 | 41: 0 0 0 0 GICv2 115 Level zynqmp-dma | ||
422 | 42: 0 0 0 0 GICv2 116 Level zynqmp-dma | ||
423 | 43: 0 0 0 0 GICv2 154 Level fd4c0000.dma-controller | ||
424 | 44: 5938 0 0 0 GICv2 47 Level ff0f0000.spi | ||
425 | 45: 134 0 0 0 GICv2 95 Level eth0, eth0 | ||
426 | 46: 0 0 0 0 GICv2 57 Level axi-pmon, axi-pmon | ||
427 | 47: 4802 0 0 0 GICv2 49 Level cdns-i2c | ||
428 | 48: 501 0 0 0 GICv2 50 Level cdns-i2c | ||
429 | 50: 0 0 0 0 GICv2 84 Edge ff150000.watchdog | ||
430 | 51: 0 0 0 0 GICv2 151 Level fd4a0000.display | ||
431 | 52: 548 0 0 0 GICv2 81 Level mmc0 | ||
432 | 53: 0 0 0 0 GICv2 165 Level ahci-ceva[fd0c0000.ahci] | ||
433 | 54: 0 0 0 0 GICv2 97 Level xhci-hcd:usb1 | ||
434 | 55: 0 0 0 0 zynq-gpio 22 Edge sw19 | ||
435 | 59: 2 0 0 0 gpio-xilinx 4 Edge PL_GPIO_PB_SW9_N | ||
436 | 60: 4 0 0 0 gpio-xilinx 3 Edge PL_GPIO_PB_SW12_E | ||
437 | 61: 2 0 0 0 gpio-xilinx 2 Edge PL_GPIO_PB_SW13_S | ||
438 | 62: 2 0 0 0 gpio-xilinx 1 Edge PL_GPIO_PB_SW10_W | ||
439 | 63: 2 0 0 0 gpio-xilinx 0 Edge PL_GPIO_PB_SW11_C | ||
440 | 64: 2 0 0 0 gpio-xilinx 7 Edge PL_GPIO_DIP_SW7 | ||
441 | 65: 2 0 0 0 gpio-xilinx 6 Edge PL_GPIO_DIP_SW6 | ||
442 | 66: 4 0 0 0 gpio-xilinx 5 Edge PL_GPIO_DIP_SW5 | ||
443 | 67: 2 0 0 0 gpio-xilinx 4 Edge PL_GPIO_DIP_SW4 | ||
444 | 68: 2 0 0 0 gpio-xilinx 3 Edge PL_GPIO_DIP_SW3 | ||
445 | 69: 2 0 0 0 gpio-xilinx 2 Edge PL_GPIO_DIP_SW2 | ||
446 | 70: 2 0 0 0 gpio-xilinx 1 Edge PL_GPIO_DIP_SW1 | ||
447 | 71: 2 0 0 0 gpio-xilinx 0 Edge PL_GPIO_DIP_SW0 | ||
448 | IPI0: 64 26 87 38 Rescheduling interrupts | ||
449 | IPI1: 2163 6791 1243 5866 Function call interrupts | ||
450 | IPI2: 0 0 0 0 CPU stop interrupts | ||
451 | IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts | ||
452 | IPI4: 0 0 0 0 Timer broadcast interrupts | ||
453 | IPI5: 0 0 0 0 IRQ work interrupts | ||
454 | IPI6: 0 0 0 0 CPU wake-up interrupts | ||
455 | Err: 0 | ||
456 | yocto-zynqmp-generic-20231:/home/petalinux# | ||
457 | ``` | ||
458 | --- | ||
459 | |||
460 | ### Unloading PL bitstream or pdi and dt overlay | ||
461 | * Zynq or ZynqMP | ||
462 | ``` | ||
463 | yocto-zynqmp-generic-20231:/home/petalinux# fpgautil -R | ||
464 | ``` | ||
465 | * Versal (DFx RP) | ||
466 | ``` | ||
467 | root@yocto-vck190-dfx-2023:~# fpgautil -R -n PR0 | ||
468 | ``` | ||
469 | * Versal (DFx Static) | ||
470 | ``` | ||
471 | root@yocto-vck190-dfx-2023:~# fpgautil -R -n Full | ||
472 | ``` | ||
473 | --- | ||
474 | |||
475 | ## References | ||
476 | * https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841645/Solution+Zynq+PL+Programming+With+FPGA+Manager | ||
477 | * https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841847/Solution+ZynqMP+PL+Programming | ||
478 | * https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1188397412/Solution+Versal+PL+Programming | ||