After getting AVNET eMMC working fine on ZUBoard PYNQ image (with a modified BSP version, device tree with &sdhci0 added),
I try still to see also SSD/M.2 module working on a ZUBoard PYNQ image...
What works:
- image the SD card with regular ZUBoard PYNQ image
- boot via SD card, running on SD Card
- take the files:
BOOT.BIN
image.ub
from a Petalinux test image, e.g from here:
https://www.hackster.io/tom-curran/zuboard-add-wifi-bluetooth-and-nvme-ssd-f90be2
you can flash another SD card with this test image,
after it has booted,
copy these Petalinux files to the USB (/dev/sda), so that you have it available for patching
boot again the PYNQ SD card,
copy the saved Petalinux files from USB to the /boot folder on PYNQ SD card
or: you extract the image file and copy these files from a host PC to ZUBoard - After you have "patched" the BOOT.BIN and image.ub - reboot your system with this modified PYNQ SD card:
- if the SSD/M.2 module is connected on J2:
you should see now a device nvme0n1:
lsblk
Remarks:
1. The AVNET SSD/M.2 works for me with just one SSD card type: B + M connector, KingSpec, 256GB.
Not with a similar SSD card, even B + M, e.g. 512GB - I cannot see any other SSD module installed on the AVNET SSD/M.2
module.
2. This Petalinux (test image) kernel does NOT have FPGA_Manager enabled!
Even I see the correct PYNQ Python boot log, I can open Jupyter Notebook in web browser, regular Python scripts are working...
NOT possible to load an overlay (obvious, without FPGA_Manager, not enabled in kernel).
So, at least with a 'correct' BSP (at least version 2022_2) it is possible to see and use the SSD nvme device.
It is also possible to:
- boot from SD card (as mmc0, the /boot files loaded from SD card)
- but to mount the rootfs via bootargs to the nvme0n1: root=/dev/nvm0n1
required to flash the SSD nvme0n1 with the entire rootfs system, e.g. by copying via dd the mmcblk0p2 to the nvme0n1
(just one partition, for rootfs, no partition for the /boot on SSD: it is anyway not possible to boot from SSD)
So, I can use the SSD as my main file system, running Linux from SSD (SD card just needed for boot).
The SSD is way faster:
the write speed on SSD: >200 MB/s - compared to 20 MB/s on a regular SD card (26 MB/s with the best SD card)
Updated BSP needed:
So, we need just an updated BSP (2022_2, not the original zuboard_1cg.bsp) with the FPGA_Manager enabled (assuming
PCIe support and device tree already enabled in such a newer BSP).
Then we could "patch" the ZUBoard PYNQ image with these two /boot files and it should work (SSD plus FPGA_Manager for
loading overlays in Python).
Actually, the correct way would be to use a newer BSP during the PYNQ build (remark: the buildzu.sh script loads all the time
the original, old BSP from server: we had to modify the build script...).
Just: I am struggling to build such a BSP: even I can build it - it crashes on boot:
I seems to configure the UART (for bootlog) with a wrong baudrate and it hangs afterwards.
Please,
who could help to generate a newer BSP for ZUBoard, with FPGA Manager enabled?
(e.g. the zub1cg_base_base_2022_2 or this zub1cg_sbc_m2_test_2022_2 "just" plus FPGA_Manager enabled)