You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Targets.md
+52Lines changed: 52 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4070,6 +4070,58 @@ FDT: Set chosen (...), linux,initrd-start=1073741824
4070
4070
FDT: Set chosen (...), linux,initrd-end=...
4071
4071
```
4072
4072
4073
+
**FPGA bitstream from FIT**
4074
+
4075
+
wolfBoot can program the PL (FPGA fabric) from an `fpga` sub-image carried in the same signed FIT, using the standard U-Boot convention: a sub-image with `type = "fpga"`, referenced from the configuration node via an optional `fpga = "<node>"` property, with a `compatible` string naming the load method. The PL is programmed before the kernel/DTB are loaded so PL-dependent clocks and peripherals come up first. The outer wolfBoot signature authenticates the whole FIT (bitstream included), so no per-image hashing is required.
4076
+
4077
+
Enable with `FPGA_BITSTREAM=1` (off by default). A failed PL load is fatal (`wolfBoot_panic`) unless `FPGA_NONFATAL=1` is also set, which downgrades it to a logged warning that continues the boot.
4078
+
4079
+
```sh
4080
+
cp config/examples/zynqmp.config .config
4081
+
make FPGA_BITSTREAM=1
4082
+
```
4083
+
4084
+
Per-target support:
4085
+
- **ZynqMP** (`TARGET=zynq`): supported. The bitstream (a bootgen `.bin`, not `.bit`) is staged to its `load` address in DDR and handed to the PMU firmware via the `PM_FPGA_LOAD` EEMI call (xilfpga over the CSU DMA / PCAP).
4086
+
- **Zynq-7000** (`TARGET=zynq7000`): supported (full bitstream). Programmed directly through the DevC/PCAP DMA engine (UG585 ch.6). Partial reconfiguration is not yet implemented.
4087
+
- **Versal** (`TARGET=versal`): not yet implemented - Versal programs the PL with a PDI loaded by the PLM (XilLoader Load-PDI IPI), not a raw bitstream. `hal_fpga_load` is a stub; leave `FPGA_BITSTREAM` off on Versal until that path lands.
4088
+
4089
+
The `compatible` string selects full vs partial: any value containing `partial` requests partial reconfiguration, otherwise a full bitstream is loaded. Typical full-bitstream values are `u-boot,zynqmp-fpga-ddrauth`, `u-boot,zynqmp-fpga-enc`, or `u-boot,fpga-legacy`.
4090
+
4091
+
Example FIT layout:
4092
+
4093
+
```dts
4094
+
images {
4095
+
kernel-1 { ... };
4096
+
fdt-1 { ... };
4097
+
fpga-1 {
4098
+
description = "FPGA bitstream";
4099
+
data = /incbin/("system.bit.bin"); /* bootgen .bin */
0 commit comments