~~tag> Edge2 Uboot UEFI boot~~ ===== Edge2 Uboot UEFI ===== We recommend start 1st partition from 32768 block ``` sfdisk --dump /dev/mmcblk0 | grep -e first -e start= first-lba: 32768 /dev/mmcblk0p1 : start= 32768, ``` UEFI bootloader for [[:Edge2]] can be fixed/updated via [[/software/oowow/how-to/online-scripts]] UEFI bootloader for [[:Edge2]] can be installed via [[:OOWOW]] online images Problems was solved: [[#solution]], after we can start EFI loader and boot up next system eMMC storage From **16384** to **32768** block must be reserved for boot-loader ===== Default Boot problem ===== OOWOW SPL loader can't find FIT-image at **0x4000** sector eMMC | SD ```log OOWOW SPL boot log U-Boot SPL board init U-Boot SPL 2017.09 (May 12 2023 - 11:40:17) Failed to set cpub01 Failed to set cpub23 I2c2 speed: 100000Hz MCU: boot mode 0x20: 1, flag 0x92: 3 MCU: boot flag < 83 board_boot_order: /chosen found, using spl_boot_device() !!! same-as-spl: +++ /mmc@fe2e0000: !!! /mmc@fe2c0000: !!! /mmc@fe2e0000: !!! /spi@fe2b0000/flash@1: Trying to boot from MMC1 :: 0 Trying fit image at 0x4000 sector Not fit magic ... ``` ===== Solution ===== Write FIT image to eMMC or SD **0x4000** sector ```sh write-uefi-bootloader-to-emmc EFI=edge2_UEFI_Release_v0.7.1.img wget https://github.com/edk2-porting/edk2-rk3588/releases/download/v0.7.1/$EFI DISK=${DISK:-/dev/mmcblk0} dd skip=2048 seek=$((0x4000)) count=$((0x4000)) of=$DISK if=$EFI conv=fsync,notrunc ``` For example 1st write https://dl.khadas.com/.test/edge2_UEFI_Release_3676af4b.img to USB flash, start OOWOW going into shell... ```sh copy FIT image to eMMC dd if=/dev/sda skip=2048 count=$((0x4000)) seek=$((0x4000)) of=/dev/mmcblk0 ``` or just using oowow with Internet, start OOWOW going into shell... ```shell oowow copy EFI loader to eMMC root@edge2-00000:/# curl -jkL \ https://dl.khadas.com/.test/edge2_UEFI_Release_3676af4b.img \ -r$((2048*512))-$(((2048+3440)*512)) | dd seek=$((0x4000)) of=$(mmc_disk) ``` ```shell check eMMC EFI Image header root@edge2-00000:/# dd if=/dev/mmcblk0 skip=$((0x4000)) count=1 2>/dev/null \ | hexdump -C | grep "00000080 49 6d 61" ``` ```shell check eMMC root@edge2-00000:/# dd if=/dev/mmcblk0 skip=$((0x4000)) count=1 | hexdump -C 1+0 records in 1+0 records out 512 bytes copied, 0.000668208 s, 766 kB/s 00000000 d0 0d fe ed 00 00 08 b3 00 00 00 38 00 00 07 e8 |...........8....| 00000010 00 00 00 28 00 00 00 11 00 00 00 10 00 00 00 00 |...(............| 00000020 00 00 00 cb 00 00 07 b0 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000040 00 00 00 03 00 00 00 04 00 00 00 a7 00 00 00 00 |................| 00000050 00 00 00 03 00 00 00 04 00 00 00 9d 00 1a da 57 |...............W| 00000060 00 00 00 03 00 00 00 04 00 00 00 93 64 5d 13 d5 |............d]..| 00000070 00 00 00 03 00 00 00 1f 00 00 00 00 46 49 54 20 |............FIT | 00000080 49 6d 61 67 65 20 77 69 74 68 20 41 54 46 2f 4f |Image with ATF/O| 00000090 50 2d 54 45 45 2f 55 45 46 49 00 00 00 00 00 03 |P-TEE/UEFI......| 000000a0 00 00 00 04 00 00 00 0c 00 00 00 01 00 00 00 01 |................| 000000b0 69 6d 61 67 65 73 00 00 00 00 00 01 75 62 6f 6f |images......uboo| 000000c0 74 00 00 00 00 00 00 03 00 00 00 04 00 00 00 c1 |t...............| 000000d0 00 10 00 00 00 00 00 03 00 00 00 04 00 00 00 b5 |................| 000000e0 00 00 00 00 00 00 00 03 00 00 00 05 00 00 00 00 |................| 000000f0 55 45 46 49 00 00 00 00 00 00 00 03 00 00 00 0b |UEFI............| 00000100 00 00 00 20 73 74 61 6e 64 61 6c 6f 6e 65 00 00 |... standalone..| 00000110 00 00 00 03 00 00 00 06 00 00 00 25 61 72 6d 36 |...........%arm6| 00000120 34 00 00 00 00 00 00 03 00 00 00 07 00 00 00 2a |4..............*| 00000130 55 2d 42 6f 6f 74 00 00 00 00 00 03 00 00 00 05 |U-Boot..........| 00000140 00 00 00 2d 6e 6f 6e 65 00 00 00 00 00 00 00 03 |...-none........| 00000150 00 00 00 04 00 00 00 39 00 20 00 00 00 00 00 01 |.......9. ......| 00000160 68 61 73 68 00 00 00 00 00 00 00 03 00 00 00 20 |hash........... | 00000170 00 00 00 af 43 5a 62 74 4c df d5 01 33 2d 58 d0 |....CZbtL...3-X.| 00000180 28 fe b1 37 45 eb 6c e5 84 f6 e9 f6 ca 69 77 af |(..7E.l......iw.| 00000190 5f 8b c8 a5 00 00 00 03 00 00 00 07 00 00 00 3e |_..............>| 000001a0 73 68 61 32 35 36 00 00 00 00 00 02 00 00 00 02 |sha256..........| 000001b0 00 00 00 01 61 74 66 2d 31 00 00 00 00 00 00 03 |....atf-1.......| 000001c0 00 00 00 04 00 00 00 c1 00 02 f7 64 00 00 00 03 |...........d....| 000001d0 00 00 00 04 00 00 00 b5 00 10 00 00 00 00 00 03 |................| 000001e0 00 00 00 15 00 00 00 00 41 52 4d 20 54 72 75 73 |........ARM Trus| 000001f0 74 65 64 20 46 69 72 6d 77 61 72 65 00 00 00 00 |ted Firmware....| 00000200 ``` ===== UBOOT SPL EFI logs ===== ```log UBOOT SPL EFI logs Trying to boot from MMC1 :: 1 Trying fit image at 0x4000 sector ## Verified-boot: 0 ## Checking atf-1 0x00040000 ... sha256(909ea14106...) + OK ## Checking uboot 0x00200000 ... sha256(435a62744c...) + OK ## Checking fdt 0x00300000 ... sha256(c07f4a4d71...) + OK ## Checking atf-2 0x000f0000 ... sha256(6a970ae6b4...) + OK ## Checking atf-3 0xff100000 ... sha256(3ea8cf0d7e...) + OK ## Checking optee 0x08400000 ... sha256(fde0860845...) + OK Jumping to U-Boot(0x00200000) via ARM Trusted Firmware(0x00040000) Total: 126.537 ms ... UEFI firmware (version 3676af4b built at 16:11:00 on May 11 2023) ... ``` ===== UBOOT EFI disk partitions ===== ```shell UBOOT EFI partitions dump ~$ sfdisk --dump /dev/sda label: gpt label-id: 73987B6B-4974-4C94-A3E8-58AB2EB7A946 device: /dev/sda unit: sectors first-lba: 34 last-lba: 31116254 /dev/sda1 : start= 2048, size= 16384, type=F808D051-1602-4DCD-9452-F9637FEFC49A, uuid=B750E44E-833F-4A30-C38C-B117241D84D4, name="uboot" ``` ===== UEFI image info ===== ```shell UEFI-info example ~$ ./edge2-uefi-extract RK3588_NOR_FLASH_REL.img /dts-v1/; version = <0x00>; totalsize = <0x5afc0b>; timestamp = <0x64ebea49>; description = "FIT Image with ATF/OP-TEE/UEFI"; #address-cells = <0x01>; SIZE: 0x5afc0b == 5962763 : 11646 == 5962774 LAST: 7274496(14208 - 0x3780) < 7274496 < 0x6F0000 # dd skip=2048 count=11646 of=edge2-uefi-bootloader.img if=RK3588_NOR_FLASH_REL.img conv=fsync,notrunc / { images { uboot { data-size = <0x500000>; data-offset = <0x00>; atf-1 { data-size = <0x3084c>; data-offset = <0x500000>; atf-2 { data-size = <0x6000>; data-offset = <0x530a00>; atf-3 { data-size = <0x6000>; data-offset = <0x536a00>; optee { data-size = <0x70998>; data-offset = <0x53ca00>; fdt { data-size = <0x1e95>; data-offset = <0x5ad400>; nvdata { data-position = <0x6c0000>; data-size = <0x30000>; configurations { loadables = "uboot\0atf-2\0atf-3\0optee\0nvdata"; 005afb70 67 2d 69 6f 2d 77 69 64 74 68 00 64 6d 61 73 00 |g-io-width.dmas.| 005afb80 23 69 6f 2d 63 68 61 6e 6e 65 6c 2d 63 65 6c 6c |#io-channel-cell| 005afb90 73 00 67 70 69 6f 2d 63 6f 6e 74 72 6f 6c 6c 65 |s.gpio-controlle| 005afba0 72 00 23 67 70 69 6f 2d 63 65 6c 6c 73 00 67 70 |r.#gpio-cells.gp| 005afbb0 69 6f 2d 72 61 6e 67 65 73 00 69 6e 74 65 72 72 |io-ranges.interr| 005afbc0 75 70 74 2d 63 6f 6e 74 72 6f 6c 6c 65 72 00 23 |upt-controller.#| 005afbd0 69 6e 74 65 72 72 75 70 74 2d 63 65 6c 6c 73 00 |interrupt-cells.| 005afbe0 62 69 61 73 2d 70 75 6c 6c 2d 75 70 00 62 69 61 |bias-pull-up.bia| 005afbf0 73 2d 64 69 73 61 62 6c 65 00 64 72 69 76 65 2d |s-disable.drive-| 005afc00 1f206fece22135a50e929aff52105782 edge2-uefi-bootloader.img edge2-uefi-bootloader.img: Device Tree Blob version 17, size=2413, boot CPU=0, string block size=217, DT structure block size=2140 ``` ===== Downloads ===== * [[dl>/products/edge2/firmware/UEFI/]] * [[gh>/edk2-porting/edk2-rk3588/]] ===== Links ===== * https://opensource.rock-chips.com/wiki_Boot_option * https://opensource.rock-chips.com/wiki_U-Boot * https://github.com/edk2-porting/edk2-rk3588/ * https://dl.khadas.com/.test/edge2_UEFI_Release_3676af4b.img