04-09-2019 11:51 AM - edited 04-09-2019 11:53 AM
I'm currently trying to minimize the boot time of an Ultrascale+ MPSoC board, since it seems to have trouble suspending to RAM and I wanted to instead turn it off whenever the device turns idle. I managed to get a boot time of about 8 seconds before I get the PetaLinux login prompt, and by now most of the time is spent launching FSBL, the PMU firmware, and u-boot.
What ways can I use to minimize the amount of time spent in this phase? For example, can I completely remove the PMU firmware? Will it help if I leave my Linux boot image uncompressed, and if so how do I do that? What ways can I use to make the BOOT.bin and image.ub files smaller, so that the SD card can read them faster? I can relinquish almost all of the peripherals of my board if necessary.
04-09-2019 06:30 PM
04-09-2019 11:38 PM
The spreadsheet looks useful, I will study it more closely. I don't have QSPI, so unfortunately I have to stick to an SD card.
I was wondering though, even if I can't remove the PMU firmware is there a way to reduce the amount of time spent loading it? The .elf is only ~100KB so a faster SD card probably wouldn't help for that part. That step now takes 2s out of 6.5s total.
04-10-2019 12:01 AM
04-10-2019 07:16 PM
I have tried using a faster SD card and enabling support for UHS as you mentioned, but the boot time didn't change too much. I realized that our board (Avnet's Ultra96) has an SD card reader that is only rated up to 100Mbit/s.
I don't think the problem is with the SD card read speed though. Does anyone know of other optimizations I can try, or ways to at least profile the boot process to see what's slowing things down?
04-10-2019 07:41 PM
04-10-2019 08:50 PM
I'm not saying my card is 100Mbit/s. My board seems to have a MAX13035E level shifter hard-wired to the SD card slot, which is only rated up to 100Mbit/s. Also there are only 4 data lines available in the board schematics, so it doesn't seem to support SD 3.0 at all (no way to enable SD 3.0 in Vivado PCW because I can't assign the extra 4 data lines).
DDR ECC seems to be disabled.