set devtype nvme
set devnum 0
set distro_bootpart 0
set prefix /boot/
load nvme 0:0 $loadaddr /boot/boot.scr
source
Doing a printenv before I see:
=> printenv
arch=arm
baudrate=1500000
board=evb_rk3568
board_name=evb_r_targets=mmc1 mmc0 nvme scsi usb pxe dhcp spi
bootcmd=bootflow scan -lb
bootdelay=1
bootp_arcNDI:003000
cpu=armv8
cpuid#=54434e4b383000000000000000070d19
dnsip=192.168.1.253
eth1addr=1e000
ethaddr=1e:f2:d5:f1:74:04
fdt_addr_r=0x12000000
fdtcontroladdr=7ded3a80
fdtfile=rockchipr=0x12100000
gatewayip=192.168.1.254
hostname=rock-3a
ipaddr=192.168.1.253
kernel_addr_r=0x00
kernel_comp_size=0x8000000
loadaddr=0xc00800
netmask=255.255.255.0
pxefile_addr_r=0x00e000offset_f=0xffe000
script_size_f=0x2000
scriptaddr=0x00c00000
serial#=09103e09ce4edd27
serverserial@fe660000
stdin=serial@fe660000
stdout=serial@fe660000
vendor=rockchip
Environment size: 916/126972 bytes
So this is not finding the boot.scr with the bootflow scan -lb, so now is time to make it boot automatically.
selu@rock-3a:~$ dd if=/dev/mmcblk0 seek=64 skip=64 count=32704 of=uboot.bin
32704+0 records in
32704+0 records out
16744448 bytes (17 MB, 16 MiB) copied, 0.564798 s, 29.6 MB/s
selu@rock-3a:~$ strings uboot.bin | grep "U-Boot"
U-Boot SPL board init
command in your U-Boot project: ./scripts/stacktrace.sh dump.txt %s
U-Boot SPL 2017.09-armbian (Sep 19 2022 - 14:20:01)
U-Boot
FIT Image with ATF/OP-TEE/U-Boot
U-Boot(64-bit)
*U-Boot
U-Boot dtb
** Invalid partition type "%.32s" (expect "U-Boot")
Enter U-Boot charging mode
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
U-Boot.armv8
command in your U-Boot project: ./scripts/stacktrace.sh dump.txt %s
MU-Boot EFI: Relocation at %p is out of range (%lx)
U-Boot 2017.09-armbian
## U-Boot bootargs: %s
No valid device tree binary found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>
U-Boot
Sysmem Error: Failed to reserve sysmem for U-Boot framework
U-Boot 2017.09-armbian (Sep 19 2022 - 14:20:01 +0200)
And this is different from the bundled U-Boot:
selu@rock-3a:~$ strings /usr/lib/linux-u-boot-current-rock-3a/u-boot.itb | grep "U-Boot"
FIT Image with ATF/OP-TEE/U-Boot
U-Boot(64-bit)
*U-Boot
U-Boot dtb
** Invalid partition type "%.32s" (expect "U-Boot")
Enter U-Boot charging mode
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
U-Boot.armv8
command in your U-Boot project: ./scripts/stacktrace.sh dump.txt %s
MU-Boot EFI: Relocation at %p is out of range (%lx)
U-Boot 2017.09-armbian
## U-Boot bootargs: %s
No valid device tree binary found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>
U-Boot
Sysmem Error: Failed to reserve sysmem for U-Boot framework
U-Boot 2017.09-armbian (May 20 2024 - 00:41:52 +0000)
I could not update U-Boot via armbian-install, somehow my rootfs on NVMe breaks install in the script ( I boot from SD with /boot in it ).
Not detecting the device ( using set -x )
++ sed -e 's/^.*root=//' -e 's/ .*$//'
+ root_uuid=UUID=a0d95135-003b-44d5-8efe-ef62615e7dea
++ blkid
++ tr -d '":'
++ grep UUID=a0d95135-003b-44d5-8efe-ef62615e7dea
++ awk '{print $1}'
+ root_partition=/dev/nvme0n1
++ echo /dev/nvme0n1
++ sed 's/\/dev\///g'
+ root_partition_name=nvme0n1
++ lsblk -ndo pkname /dev/nvme0n1
+ root_partition_device_name=
+ root_partition_device=/dev/
+ exit 1
I crafted a quick n'dirty script:
#!/bin/bash
source /usr/lib/u-boot/platform_install.sh
DIR=/usr/lib/linux-u-boot-current-rock-3a
root_partition_device=/dev/mmcblk0
write_uboot_platform "$DIR" "${root_partition_device}"
And I can confirm that u-boot was updated in SD and now works fine! YEEHAA!