ARM about to standardize boot
Posted: Fri Apr 02, 2021 4:30 am
Not entirely sure this is the right topic, but it's more about the theory and overall boot procedure I guess.
It looks like ARM has decided to use UEFI, and demands SoC manufacturers to comply. The current buzzword is ARM SystemReady. They say that this should standardize the boot environment on IoT devices, however I'm not sure what they were thinking. IoT devices are particularly short on resources, and TianoCore requires 64M of RAM to even get booted. No IoT devices I have programmed so far have that kind of RAM. Not sure how this is viable in real life applications.
I guess they'll have to reimplement UEFI from ground up according to Base Boot Requirements Specification, I don't think porting TianoCore as-is could work because of its resource wasting nature. Thoughts?
Another issue I see with this is, it only allows booting into EL2, so EL3 hypervisor kernels are impossible and they must find a dirty workaround to circumvent the entire BBR (you can't access EL3 system registers from EL2, so you can't just simply elevate level with an eret).
Standardized way to read and write sectors on SD cards (with BLOCK_IO_PROTOCOL) also missing. Only SIMPLE_FILE_SYSTEM_PROTOCOL is mandatory (which means stranded to FAT on ESP, forget to implement your own file system, or looking for arbitrary GPT partition entries, like BIOS Boot Partition.)
Good things: GOP support on ARM SoC, no more VC/Mali/whatever specific code to change screen resolution. ACPI tables to describe the hardware instead of that device tree hack. Standardized GPT partitioning, with loader files on the ESP.
(note: this also demands NOT to use exFAT on the SD cards, as they must be GPT partitioned instead, with ESP formatted to FAT16/FAT32)
Cheers,
bzt
It looks like ARM has decided to use UEFI, and demands SoC manufacturers to comply. The current buzzword is ARM SystemReady. They say that this should standardize the boot environment on IoT devices, however I'm not sure what they were thinking. IoT devices are particularly short on resources, and TianoCore requires 64M of RAM to even get booted. No IoT devices I have programmed so far have that kind of RAM. Not sure how this is viable in real life applications.
I guess they'll have to reimplement UEFI from ground up according to Base Boot Requirements Specification, I don't think porting TianoCore as-is could work because of its resource wasting nature. Thoughts?
Another issue I see with this is, it only allows booting into EL2, so EL3 hypervisor kernels are impossible and they must find a dirty workaround to circumvent the entire BBR (you can't access EL3 system registers from EL2, so you can't just simply elevate level with an eret).
Standardized way to read and write sectors on SD cards (with BLOCK_IO_PROTOCOL) also missing. Only SIMPLE_FILE_SYSTEM_PROTOCOL is mandatory (which means stranded to FAT on ESP, forget to implement your own file system, or looking for arbitrary GPT partition entries, like BIOS Boot Partition.)
Good things: GOP support on ARM SoC, no more VC/Mali/whatever specific code to change screen resolution. ACPI tables to describe the hardware instead of that device tree hack. Standardized GPT partitioning, with loader files on the ESP.
(note: this also demands NOT to use exFAT on the SD cards, as they must be GPT partitioned instead, with ESP formatted to FAT16/FAT32)
Cheers,
bzt