However, the balenaEtcher suggests that the operating system iso is missing a partition table (i.e., non-bootable).
Then I ignored the warning and flashed the iso into my SD card. As expected, the Rock 5 ITX still uses the default image in the integrated eMMC module and cannot boot from my SD card image.
Install the firmware image (haven’t done it)
I read the guide Flash the firmware, which suggests that I can flash the UEFI image into a removable SD card or the integrated eMMC module.
I want to flash the firmware into the SD card as I need to modify the Arm Trusted Firmware frequently. In this way, I must flash the supported OS into the integrated eMMC module. However, since I can’t boot the Armbian rk3588-live-iso from the SD card, I haven’t tried to flash it into the eMMC module.
I would appreciate it if someone in the community has experience with flashing ROCK 5 ITX UEFI and can give me some suggestions. Thank you very much!
I managed to force the board to boot from SD. It’s not trivial, you need to connect a pin to ground via a 20k resistor. In fact the maskrom button is connected to a SARADC input and 8 different values are recognized. It just turns out that there’s no easy option to force booting from the SD (that would be great). When you look at your board close to the maskrom button, you should touch the resistor here while inserting the power connector:
____
o---[____]---o <-- here
+-------------+
| / \ |
==| | | |== <-- or here
| \ / |
+-------------+
Then it will boot from the SD. I need to document this somewhere.
My understanding is that it always loads the boot loader from the eMMC, and the boot loader then loads your extlinux.conf, kernel, DT and initrd from the SD. That could correspond to your observation in point 1: “the Rock 5 ITX still uses the default image in the integrated eMMC module and cannot boot from my SD card image”.
With the resistor method, the CPU will load the boot loader from the SD, so if the image is correct, it should work. The advantage is that it saves you from having to risk “bricking” your board by flashing an image that does not work.
I think the reason why I can’t boot from sd card is that my image (i.e., my manually combined uefi+iso) is not correct. I have confirmed that my device can boot the os in sd card if I install a correct image in it. So I think the resistor way is not the solution for my case.
I want to find a correct way to create a bootable image by integrating the uefi image and the iso image. However, I don’t know how to do it
I doubt it will load an uefi image from the SD, because my understanding is that by default it uses the boot loader from the eMMC which looks for extlinux on the SD. Thus the SD’s boot loader is not used by default. That’s what I’m doing with the resistor, forcing the SoC to load the boot loader from the SD instead of the eMMC.
I think you are right. I use lsblk to list the disk on ROCK 5 ITX and get following result:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 16M 0 disk
mmcblk1 179:0 0 29.7G 0 disk
├─mmcblk1p1 179:1 0 16M 0 part /config
├─mmcblk1p2 179:2 0 300M 0 part /boot/efi
└─mmcblk1p3 179:3 0 29.4G 0 part /
mmcblk0 179:32 0 7.3G 0 disk
mmcblk0boot0 179:64 0 4M 1 disk
mmcblk0boot1 179:96 0 4M 1 disk
zram0 254:0 0 3.9G 0 disk [SWAP]
The mtdblock0 is the SPI flash. The mmcblk0 is the integrated eMMC and mmcblk1 is my SD card.
I try to break the mtdblock0 (SPI flash) and mmcblk0 (eMMC) but the device can still boot. I guess ROCK 5 ITX uses mmcblk0boot0 and mmcblk0boot1 (maybe there is a uboot image in here) to boot the device defaultly. I will try to see whether your resistor method can help me boot the device with the uefi in SD card.