Ok thank you, as I was suspecting, the easiest way to do this is to start the SOM on an evaluation board, partition the eMMC and store there the rootfs via an ad-hoc Linux image starting from an SD card, meanwhile I am able to flash the QSPI with the BOOT.BIN file through JTAG with "program_flash". Now the system is working well and it loads from the QSPI + eMMC correctly. Now I have a further question slightly different:
I am packaging the BOOT.BIN with the following command:
petalinux-package --boot --format BIN --force --fsbl images/linux/zynqmp_fsbl.elf --fpga ./hw/bitstream.bit --u-boot --kernel
Finally I can observe that my BOOT.BIN will contain the following files:
- "/images/linux/zynqmp_fsbl.elf"
- "/images/linux/pmufw.elf"
- "/hw/bitstream.bit"
- "/linux/bl31.elf"
- "/images/linux/u-boot.elf"
- "/images/linux/image.ub"
I am flashing the QSPI with this other command:
program_flash -f images/linux/BOOT.BIN -fsbl images/linux/zynqmp_fsbl.elf -flash_type qspi-x8-dual_parallel
Now I can see my "mtd" device (QSPI) from the running Linux with the following partitions (the same that I've set on petalinux-config):
cat /proc/mtd
dev: size erasesize name
mtd0: 00500000 00002000 "boot"
mtd1: 00900000 00002000 "bootenv"
mtd2: 018cba80 00002000 "kernel"
Now I have to perform an
update of the bitstream, how can I do that in a running system on field in a easy way?
I was looking for the command "flashcp" but I don't understand where to place the bitstream.bin file in such mtd partitions. Any suggestion?