With Armbian v20.11 one can write mainline u-boot image to board's SPI and enjoy booting nvme drives without any mmc devices.
Prerequisities: ROCK Pi 4(A/B/C) v1.4 or 1.3 with SPI soldered in (v1.3 comes without SPI flash from the factory).
If you already have Radxa's u-boot written to SPI you need to short pins 23 and 25 for Armbian to boot
Boot fresh image of Armbian v20.11.x for ROCK Pi 4(A/B/C)
Add the following lines to /boot/armbianEnv.txt
overlays=spi-jedec-nor
param_spinor_spi_bus=1
Reboot
If you shorted 23-25 pins in 1.) then:
disconnect them after the ROCK Pi 4 fully boot's
enable spi-nor by executing (as root):
echo spi1.0 > /sys/bus/spi/drivers/spi-nor/bind
verify that the SPI mtd interface is enabled by running
ls /dev/mtdblock0
if the last command does not list any file then something went wrong between 3.) and 5.)
Run nand-sata-install
choose option: "Boot from SPI - system on SATA, USB or NVMe"
choose NVMe partition, eg. /dev/nvme0n1p1
accept erasing of the choosen partition with "Yes"
choose fs type (tested with ext4)
wait a few minutes for rootfs transfer to chosen partition
choose writing SPI bootloader with "Yes"
confirm that you want to flash it with "Yes"
wait ~60 seconds for writing
choose Exit
Reboot
Enjoy Armbian booting with SPI / NVMe
Why bother with mainline u-boot?
It is known to boot some NVMe drives that legacy u-boot from Radxa has issues with, eg. SAMSUNG 970 EVO Plus and SAMSUNG PM981.
This does not mean that all NVMe drives are supported, YMMV.
Which NVMe drives are known to be working?
Corsair MP510 240GB/480GB/960GB
Gigabyte SSD M.2 2280 PCIe x2 Model:GP-GSM2NE8128GNTD
HP SSD EX900 M.2 NVMe 120GB. Model: 2YY42AA#ABB
Intel SSD 660p Model:SSDPEKNW512GB
Kingston A1000 SSD 240GB (PHISON PS5008-E8-10)
Kingston A2000 M.2 2280 PCIe NVMe
PNY 250GB XLR8 CS3030 M.2 NVMe SSD PCIe Gen3 x4
Sabrent Rocket 256GB NVMe PCIe M.2 2280
Samsung 970 EVO Plus SSD 250GB M.2 2280, PCIe 3.0 x4, NVMe, 3500/2300 MB/s
Samsung PM981 256GB
XPG SX6000 Lite 128GB (ASX6000LNP-128GT-C)
Why not using Radxa's u-boot SPI image?
Ambian's u-boot configuration is incompatible with Radxa's SPI image
Why Armbian is using u-boot that is incompatible with Radxa's?
It uses mainline u-boot with Open Source TPL/SPL/proper and BL31 from Rockchip packaged into u-boot and we may switch to using open source ATF instead of the BL31 in the future.
Can I boot Radxa's images with Armbian's u-boot written to SPI?
Yes. Armbian's SPI u-boot is compatible with Radxa's images available here: https://github.com/radxa/rock-pi-images-released/releases
It may not be compatible with some older images (released before July 2020) because of the device tree filename change.