Carrello
ChiudiNessun prodotto nel carrello.
Nessun prodotto nel carrello.
DESK-MX9-L-AN-0001: Boot time optimization
Questo documento fornisce una guida pratica alla riduzione del tempo di avvio nei sistemi basati su DESK‑MX9‑L di DAVE Embedded Systems, dove un boot rapido è un requisito fondamentale per molti dispositivi embedded. Vengono descritti i principali parametri di sistema e le tecniche di ottimizzazione che influenzano le prestazioni di startup, inclusa la scelta del dispositivo di storage, la configurazione di U‑Boot, i parametri del kernel e la struttura del file system di root.
Il documento illustra come variabili d'ambiente di U‑Boot — come bootdelay, quiet, bootcmd e mmcargs — possano essere ottimizzate per ridurre i ritardi iniziali, minimizzare l’output sulla console e semplificare la selezione della sorgente di boot, migliorando così i tempi di caricamento del kernel.
L’ottimizzazione del file system di root comprende la riduzione dei componenti e dei servizi non necessari e l’utilizzo della Falcon mode, che permette allo SPL di caricare direttamente il kernel saltando la fase completa di U‑Boot, riducendo ulteriormente il tempo di avvio.
Infine, il documento presenta la configurazione di test utilizzata per la validazione e riporta i risultati delle misurazioni, evidenziando l’impatto delle diverse ottimizzazioni — in particolare la riduzione della dimensione del root file system — sulle prestazioni di boot.
Complessivamente, la pagina offre un metodo strutturato per gli sviluppatori embedded che desiderano ottenere un avvio più rapido attraverso interventi mirati sul bootloader, sul kernel e sui processi di inizializzazione del sistema.
A very fast boot time it's an important feature of Embedded devices. Read the steps listed in this application Note allows to optimize the major boot stages for reducing the boot time.
The Application Note describes some typical optimizations that can be done on DAVE Embedded Systems's products to shorten the boot time.
It should be taken into account that boot time results strongly depend on the overall system configuration and involves - mainly - the following parameters:
init process optimization: i.e. which daemons are loaded at the beginningIn this AN we will use the eMMC storage device, mounted in the SOM - using an SDIO bus to communicate with the SoC. It is the fastest device for booting from the complete embedded Linux BSP.
U-Boot allows the modification of some environment variables to reduce the timer elapsed in the initial stages:
bootdelay: this var, used for waiting an interaction from the user to the console, can be reduced to 0 seconds (it is still possible to stop U-Boot)quiet: this var, added to the kernel command line, avoids displaying the information messages in the serial console. This reduces a lot the kernel boot timebootcmd: this string allows to try and select from different boot sources (USB, SD, eMMC, etc.)
mmcargs: in our example, we boot from the internal eMMC loading the kernel and device tree from the /boot directory where the binaries are stored inA minimal root file system size allows to reduce the loading and starting time for the system services. Yocto provides a standard recipe for this kind of image: core-image-base.
Starting from this image, it is possible to add your application and services for starting - as soon as possible - the final application.
This mode allows SPL to boot directly the kernel avoiding the use of U-Boot second stage and reducing a lot this step. NXP provides the AN14093 application note which describes the hacking steps for properly modifying the U-Boot sources.
core-image-baseu-boot=> print bootdelay bootdelay=0 u-boot=>
u-boot=> pri bootcmd bootcmd=run emmcargs; run emmc_loadk emmc_loadfdt; run mmcboot u-boot=>
u-boot=> print emmcargs
emmcargs=setenv bootargs root=${emmcroot} logo.nologo vt.global_cursor_default=0 quiet
u-boot=> print emmcroot
emmcroot=/dev/mmcblk0p1 rootwait rw
u-boot=> print emmc_loadk
emmc_loadk=ext4load mmc 0:1 ${loadaddr} boot/${image}
u-boot=> print emmc_loadfdt
emmc_loadfdt=ext4load mmc 0:1 ${fdtaddr} boot/${fdtfile}
u-boot=> print mmcboot
mmcboot=booti ${loadaddr} - ${fdtaddr}
u-boot=>
To verify the boot time achieved, a serial port terminal with timestamping grabbing capabilities has been used: the grabserial Linux application is perfectly useful for this purposes.
The original boot time, using the standard dave-image-devel target image, is roughly 20 s (expand the section here below to see the bootlog)
After the optimizations introduced, here below the captured serial log:
[0.000001 0.000001] [0.364770 0.364769] U-Boot SPL 2023.04-desk-mx9-l-5.1.0 (Apr 05 2024 - 13:58:53 +0000) [0.000514 0.000514] SOM ConfigID#: 00000002 [0.000667 0.000154] SOM UniqueID#: 614a038d:d8502f60 [0.000865 0.000198] SOC: 0xa1009300 [0.000956 0.000091] LC: 0x2040010 [0.001039 0.000083] PMIC: Over Drive Voltage Mode [0.001206 0.000166] DDR: 3733MTS [0.127625 0.126420] M33 prepare ok [0.128218 0.000593] Normal Boot [0.128575 0.000356] Trying to boot from BOOTROM [0.128912 0.000337] Boot Stage: Primary boot [0.129282 0.000370] image offset 0x8000, pagesize 0x200, ivt offset 0x0 [0.130088 0.000807] Load image from 0x57000 by ROM_API [0.234750 0.104661] NOTICE: BL31: v2.8(release):lf-6.1.55-2.2.0-0-g08e9d4eef [0.235908 0.001158] NOTICE: BL31: Built : 06:43:30, Nov 21 2023 [0.650614 0.414706] [0.651262 0.000648] [0.651376 0.000113] U-Boot 2023.04-desk-mx9-l-5.1.0 (Apr 05 2024 - 13:58:53 +0000) [0.652690 0.001314] [0.652714 0.000025] CPU: i.MX93(52) rev1.1 1700 MHz (running at 1692 MHz) [0.653526 0.000812] CPU: Industrial temperature grade (-40C to 105C) at 56C [0.781333 0.127807] Reset cause: POR (0x1) [0.782368 0.001035] Model: DAVE i.MX93 AURA Board SOC rev 1 on SBCX CB2001 [0.783148 0.000780] DRAM: 2 GiB [0.854364 0.071215] Core: 201 devices, 27 uclasses, devicetree: separate [0.854772 0.000408] MMC: FSL_SDHC: 0, FSL_SDHC: 1 [0.854952 0.000180] Loading Environment from MMC... OK [0.888310 0.033359] Fail to setup video link [0.907659 0.019349] In: serial [0.907716 0.000057] Out: serial [0.907767 0.000051] Err: serial [0.907868 0.000102] [0.907874 0.000006] BuildInfo: [0.907915 0.000041] - ELE firmware version 0.1.0-44880904 [0.908054 0.000139] [0.946836 0.038782] switch to partitions #0, OK [0.947203 0.000366] mmc1 is current device [0.947383 0.000180] SOM ConfigID#: 00000002 [0.947617 0.000234] SOM UniqueID#: 614a038d:d8502f60 [1.025297 0.077680] CB ConfigID#: 00002001 [1.025669 0.000372] CB UniqueID#: 8e000035:c46cb62d [1.026091 0.000422] flash target is MMC:1 [1.058120 0.032029] Net: eth1: ethernet@428a0000 [PRIME] [1.077589 0.019469] Fastboot: Normal [1.077655 0.000067] Normal Boot [1.077740 0.000085] Hit any key to stop autoboot: 0 [1.799542 0.721802] 27759104 bytes read in 591 ms (44.8 MiB/s) [1.853720 0.054178] 45449 bytes read in 6 ms (7.2 MiB/s) [1.854125 0.000406] ## Flattened Device Tree blob at 83000000 [1.854316 0.000191] Booting using the fdt blob at 0x83000000 [1.854614 0.000298] Working FDT set to 83000000 [1.854710 0.000096] Using Device Tree in place at 0000000083000000, end 000000008300e188 [1.855242 0.000532] Working FDT set to 83000000 [1.855385 0.000143] [1.855424 0.000039] Starting kernel ... [1.855674 0.000250] [2.047194 0.191519] [ 0.109473] Error: Driver 'mxsfb' is already registered, aborting... [2.047676 0.000482] [ 0.122578] of_reserved_mem_lookup() returned NULL [2.127196 0.079520] [ 0.217490] imx93-ldb soc@0:ldb@4ac10020: Failed to create device link (0x180) with soc@0:phy@4ac10024 [5.869868 3.742672] [5.870280 0.000411] NXP i.MX Release Distro 6.1-mickledore desk-mx93-rev1 ttyLP0 [5.871666 0.001386] [5.871694 0.000028] desk-mx93-rev1 login:
It is worth to pointout:
[0.364770 0.364769] U-Boot SPL 2023.04-desk-mx9-l-5.1.0 (Apr 05 2024 - 13:58:53 +0000)
[1.077740 0.000085] Hit any key to stop autoboot: 0
[1.799542 0.721802] 27759104 bytes read in 591 ms (44.8 MiB/s)
[1.855424 0.000039] Starting kernel ...
[5.871694 0.000028] desk-mx93-rev1 login:
Implementing the #Falcon mode may reduce 1-1.5s the boot time so less then 5s can be achieved
The root file system used in this AN - even if built as a minimal image - has as many packages as needed by a standard embedded application:
root@desk-mx93-rev1:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 7416728 328708 6689848 5% / devtmpfs 751264 0 751264 0% /dev tmpfs 1014880 0 1014880 0% /dev/shm tmpfs 405956 8952 397004 2% /run tmpfs 4096 0 4096 0% /sys/fs/cgroup tmpfs 1014884 0 1014884 0% /tmp tmpfs 1014880 12 1014868 0% /var/volatile tmpfs 202976 0 202976 0% /run/user/0 root@desk-mx93-rev1:~#
root@desk-mx93-rev1:~# apt-get apt 2.4.5 ()
root@desk-mx93-rev1:~# python3 --version Python 3.11.5
Benvenuti nel portale per la richiesta di informazioni tecniche di DAVE Embedded Systems!
Si prega di compilare i campi sottostanti. Il team di supporto si prenderà cura di te in massimo 24 ore!
Benvenuto nel sistema di documentazione di DAVE Embedded Systems. Si prega di compilare i campi richiesti per ricevere il tuo documento! Grazie!
Utilizziamo cookie per personalizzare i contenuti, per avere statistiche sul traffico e per migliorare la tua esperienza nel nostro sito web.
Per maggiori informazioni sui cookie che utilizziamo ti preghiamo di leggere la nostra Informativa sui cookie e a cliccare su "Modifica preferenze" per personalizzare il modo in cui il sito utilizza i cookie. Cliccando su "Consenti tutti i cookie" dai il consenso all'utilizzo di qualsiasi cookie da noi utlizzato.
Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.
È possibile impostare il browser in modo che blocchi questi cookie o ne avvisi l'utilizzo, ma alcune parti del sito non funzioneranno. Questi cookie non memorizzano alcuna informazione personale identificativa.
Questi cookie ci consentono di contare le visite e le sorgenti di traffico in modo da poter misurare e migliorare le prestazioni del nostro sito. Ci aiutano a sapere quali sono le pagine più e meno popolari e vedere come i visitatori si muovono nel sito.
Tutte le informazioni raccolte da questi cookie sono aggregate e quindi anonime. Se non autorizzi questi cookie, non sapremo quando avrai visitato il nostro sito e non saremo in grado di monitorarne le prestazioni.
Seleziona tutti Deseleziona tutti