You cannot boot directly from nvme,you have to boot from mmc or spi first.
My uboot binaries have nvme support and then you can try to do manually booting linux kernel and rootfs from nvme before setting it as default.
i boot from emmc first (because i can change uboot environment there easier) and then from nvme
frank@bpi-r3-nvme:~$ mount | grep -v '/sys\|tmpfs'
/dev/nvme0n1p2 on / type ext4 (rw,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
/dev/nvme0n1p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/mapper/vg--nvme-data on /mnt/data type ext4 (rw,relatime)
/dev/mapper/vg--nvme-var on /var type ext4 (rw,relatime)
/dev/mmcblk0p5 on /mnt/emmc1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
frank@bpi-r3-nvme:~$ cat /mnt/emmc1/uEnv.txt
bootnvme=run usenvme; if test "$device" = "nvme"; then run loadenv; printenv; run newboot;fi
bootmenu_3=4. Boot kernel from NVME.=run bootnvme
bootmenu_default=3
frank@bpi-r3-nvme:~$ cat /boot/uEnv.txt
root=/dev/nvme0n1p2 rootwait
fit=6.12.x-main.itb
so emmc-env is modified by the emmc uEnv.txt pointing to nvme and then the uEnv.txt from nvme is read to set kernel and root partition