cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
1,335 Views
Registered: ‎03-23-2019

Minimal Booting Time

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.

0 Kudos
7 Replies
Highlighted
Xilinx Employee
Xilinx Employee
1,300 Views
Registered: ‎09-01-2014

Please check boot time estimation result from https://www.xilinx.com/support/answers/67475.html
It was tested on ZCU102, so you could get a similar boot time result. Normally you need to use a faster boot device with higher clock frequency.
QSPI clock can be set to 150MHz which is much faster than SD.
If you want to use SD, the speed depends on the SD card, so you need to use SD3.0 boot mode with UHS SDR104 SD card.
PMUFW or ATF is required for Linux, you cannot remove it.
Another option is to compress the bitstream to reduce the size.
0 Kudos
Highlighted
1,283 Views
Registered: ‎03-23-2019

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.

0 Kudos
Highlighted
Xilinx Employee
Xilinx Employee
1,279 Views
Registered: ‎09-01-2014

If you only boot from SD, that spreadsheet doesn’t test for SD3.0 mode.
By default FSBL only use SD2.0, you need to enable UHS mode
https://www.xilinx.com/support/answers/69978.html
if you boot with a UHS SDR104 SD card the performance is around 76.5MB/s, the boot speed will be improved a lot.

0 Kudos
Highlighted
1,257 Views
Registered: ‎03-23-2019

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?

0 Kudos
Highlighted
Xilinx Employee
Xilinx Employee
1,248 Views
Registered: ‎09-01-2014

100Mbit/s is only 12.5MB/s which looks like a SD2.0 speed.
a UHS SDR104 SD card should not get this slow speed.
SD3.0 is required Dynamic switching from 3.3V to 1.8V. Do you use this kind of SD3.0 Voltage level shifters on your board?
And do you enable SD3.0 in Vivado PCW setting?

And do you enable DDR ECC, it takes several seconds for initialization.
0 Kudos
Highlighted
1,242 Views
Registered: ‎03-23-2019

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.

0 Kudos
Highlighted
Xilinx Employee
Xilinx Employee
1,230 Views
Registered: ‎09-01-2014

Since your boot device only sticks to SD2.0, there is no option to speed up booting.
0 Kudos