NXP AN14093 Fast Boot Falcon Mode Kernel Uživatelská příručka
NXP AN14093 Fast Boot Falcon Mode Kernel

Zavedení

Tento dokument popisuje, jak zkrátit dobu spouštění pro:

  • Řada i.MX 8M (i.MX 8M Mini LPDDR4 EVK, i.MX 8M Nano LPDDR4 EVK a i.MX 8M Plus LPDDR4 EVK)
  • Řada i.MX 9 (i.MX 93 LPDDR4 EVK) Cíle tohoto dokumentu jsou následující:
  • Optimalizace bootloaderu
  • Optimalizace linuxového jádra a uživatelského prostoru
  • Porovnání mezi výchozí a vylepšenou dobou spouštění na všech platformách

softwarové prostředí

Předpokládá se počítač Ubuntu 20.04. V procesu optimalizace se používá balíček podpory Linux board support package (BSP) verze 6.1.22_2.0.0.

Používají se následující předem sestavené obrázky:

  • i.MX 8M Mini: imx-image-full-imx8mmevk.wic
  • i.MX 8M Nano: imx-image-full-imx8mnevk.wic
  • i.MX 8M Plus: imx-image-full-imx8mpevk.wic
  • i.MX 93: imx-image-full-imx93evk.wic

Zapište předem sestavený obrázek na SD kartu pomocí níže uvedeného příkazu:
$ sudo dd if=.wic of=/dev/sd bs=1M status=progress conv=fsync

Poznámka: Zkontrolujte oddíl čtečky karet a vyměňte sd za odpovídající oddíl.

Nastavení hardwaru a vybavení

  • Rozvoj kit NXP i.MX 8MM EVK LPDDR4
  • Rozvoj kit NXP i.MX 8MN EVK LPDDR4
  • Rozvoj kit NXP i.MX 8MP EVK LPDDR4
  • Rozvoj kit NXP i.MX 93 EVK pro 11×11 mm LPDDR4
  • microSD karta: SanDisk Ultra 32 GB micro Secure Digital High Capacity (SDHC) I Class 10 byl použit pro
    aktuální experiment
  • kabel micro-USB (i.MX 8M) nebo Type-C (i.MX 93) pro ladicí port

Obecný popis

Tato část popisuje overview typických úprav potřebných k dosažení kratších časů spouštění.

Zkraťte dobu bootloaderu
Můžete se rozhodnout pro jeden z následujících dvou způsobů, jak zkrátit dobu bootloaderu.

  • Odstraňte zpoždění spouštění – Ušetří asi dvě sekundy ve srovnání s výchozí konfigurací a vyžaduje minimální změny. To vede k tomu, že U-Boot přeskočí čekání na stisknutí klávesy stage během bootování.
  • Implementujte režim Falcon — Ušetří asi čtyři sekundy ve srovnání s výchozí konfigurací. Umožňuje druhému zavaděči programu (SPL), který je součástí U-Bootu, načíst přímo jádro a přeskočit celý U-Boot.

Zkraťte dobu spouštění linuxového jádra

  • Omezte zprávy konzoly — Ušetří asi tři sekundy. Přidejte tichý do příkazového řádku jádra.
  • Zeštíhlení jádra odstraněním ovladačů a filesystémy — Ve výchozím nastavení obsahuje obraz jádra spoustu ovladačů a filesystémy (např.: UBIFS), které umožňují většinu funkcí podporovaných pro desku. Seznam zahrnutých ovladačů a filesystémy lze upravit podle vašeho případu použití.

Snižte dobu spouštění v uživatelském prostoru

  • Změňte pořadí spouštění v inicializačních skriptech Systemd — Ušetří cca 600 ms. Spusťte požadovaný proces co nejdříve s ohledem na jeho závislosti

Měření

Rozsah měření je mezi POR desky (Power-On Reset) a začátkem procesu INIT.

Nastavení použité pro následující měření je popsáno v dokumentu Metodika měření doby spouštění.

Tabulka 1. Měřené intervaly

Časový bod Interval mezi pulzy Umístění pulsu Boot stages
BootROM nRST -> před ddr_init() deska/freescale/ /spl.c/board_init_ f() SPL U-Boot
Inicializace DDR před ddr_init() -> po ddr_init() deska/freescale/ /spl.c/board_init_ f()
Inicializace SPL + Načtení obrazu U-Boot po ddr_init() -> před image_entry() common/spl/spl.c/jump_to_image_no_ args()
Inicializace U-Boot (init_sequence_f) před image_entry() -> start init_ sequence_ r common/board_r.c/board_init_r() U-BOOT
Inicializace U-Boot (init_sequence_r) start init_sequence_r -> u-boot main_ loop společný/hlavní.c
Spouštěcí sekvence u-boot main_loop -> před načtením_image include/configs/ .h
Načtení obrazu jádra before load_image -> after load_image include/configs/ .h
Zavedení jádra až do procesu INIT po načtení obrázku -> /sbin/init získat časamp během bootování jádra Jádro

Předpoklady

V této části je popsán software potřebný ke kompilaci U-Bootu a linuxového jádra v samostatném prostředí.

  • Nainstalujte požadované závislosti

Tato příručka vyžaduje řadu závislostí, včetně křížového kompilátoru ARM64.
$ sudo apt install flex bison libssl-dev gcc-aarch64-linux-gnu u-boot-tools libncurses5-dev libncursesw5-dev uuid-dev gnutls-dev

Dále si stáhněte požadované zdroje. Umístěte je všechny do stejného adresáře.

  • Stáhněte si imx-mkimage

mkimage je nástroj, který kombinuje firmware SPL, U-Boot, ATF a DDR do jednoho obrazu, jehož výsledkem je, že obraz U-Boot bude flashován na SD kartu.

$ git klon https://github.com/nxp-imx/imx-mkimage
$ cd imx-mkimage
$ git checkout lf-6.1.22-2.0.0

  • Stáhnout ATF

$ git klon https://github.com/nxp-imx/imx-atf
$ cd imx-atf
$ git checkout lf-6.1.22-2.0.0

  • Stáhněte si U-Boot

$ git klon https://github.com/nxp-imx/uboot-imx
$ cd uboot-imx
$ git checkout lf-6.1.22-2.0.0

  • Stáhněte si linuxové jádro

$ git klon https://github.com/nxp-imx/linux-imx
$ cd linux-imx
$ git checkout lf-6.1.22-2.0.0

  • Stáhněte si firmware s dvojnásobnou rychlostí přenosu dat (DDR).

$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.20.bin
$ chmod +x firmware-imx-8.20.bin
$ ./firmware-imx-8.20.bin

  • [Pouze pro i.MX 93] Stáhněte si firmware EdgeLock Secure Enclave (ELE).

$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-sentinel-0.9.bin
$ chmod +x firmware-sentinel-0.9.bin
$ ./firmware-sentinel-0.9.bin

Sestavte obrázky

Chcete-li případně zkontrolovat, zda byly zdroje a předpoklady staženy správně, proveďte následující kroky. Jinak zatím přeskočte a implementujte Část 7 „Optimalizace zavaděče“ a Část 8 „Optimalizace prostoru jádra“.

Sestavte důvěryhodný firmware Arm

$ CROSS_COMPILE=aarch64-linux-gnu- make PLAT= bl31 Kde může mít následující hodnoty: imx8mn, imx8mm, imx8mp nebo imx93.
Vygenerovaný binární soubor se nachází v adresáři build//release/.

Sestavte U-Boot

  1.  Zkopírujte bl31.bin z ATF (build//release/) do imx-mkimage//
  2. Zkopírovat vše lpddr4* files z firmware/ddr/synopsys/ balíčku firmware-imx do imxmkimage//.
  3. [Pouze pro i.MX 93] Zkopírujte obraz kontejneru firmwaru ELE mx93a0-ahab-container.img firmwaru-sentinel do imx-mkimage/iMX9/.
  4. Zkompilujte U-Boot.
    $ cd uboot-imx $ make distclean
    $ ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- make
    $ CROSS_COMPILE=aarch64-linux-gnu- make -j
    $(nproc –vše)
    Chcete-li sestavit U-Boot bez podpory Falcon (výchozí režim spouštění pro kontrolu, že se vše zkompiluje), použijte následující .
    1. imx8mm_evk_defconfig pro i.MX 8MM
    2. imx8mn_evk_defconfig pro i.MX 8MN
    3. imx8mp_evk_defconfig pro i.MX 8MP
    4. imx93_11x11_evk_defconfig pro i.MX 93 Pro režim Falcon je to (použijte tento defconfig file pouze po části 7.3 „Implementace režimu Falcon“).
    5. imx8mm_evk_falcon_defconfig pro i.MX 8MM
    6. imx8mn_evk_falcon_defconfig pro i.MX 8MN
    7. imx8mp_evk_falcon_defconfig pro i.MX 8MP
    8. imx93_11x11_evk_falcon_defconfig pro i.MX 93
  5. Zkopírujte u-boot*.bin a spl/u-boot-spl*.bin do imx-mkimage//.
  6. Kopírovat imx8mm-evk.dtb (pro i.MX 8M Mini LPDDR4 EVK) nebo imx8mn-evk.dtb (pro i.MX 8M Nano LPDDR4 EVK) nebo imx8mp-evk.dtb (pro i.MX 8M Plus LPDDR4 EVK) nebo imx93 -11×11-evk.dtb pro (i.MX 93 11×11 LPDDR4 EVK) z uboot-imx/arch/arm/dts/ do imx-mkimage//.
  7. Zkopírujte mkimage z uboot-imx/tools/ do imx-mkimage//, přejmenujte jej na mkimage_uboot.
    $ cp uboot-imx/tools/mkimage imx-mkimage//mkimage_uboot
  8. Vygenerujte úplný obraz U-Boot: flash.bin.
    $ cd imx-mkimage # pro i.MX 8M*
    $ make SOC= flash_evk # pro i.MX 93
    $ make SOC=iMX9 flash_singleboot
    Kde mohou nabývat následující hodnoty: iMX8MM, iMX8MN, iMX8MP.

Sestavte linuxové jádro

$ cd linux-imx
$ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make imx_v8_defconfig
$ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j $(nproc –all) all

Výsledný binární obraz se nachází v adresáři arch/arm64/boot.

Zapište binární soubory na SD kartu

Chcete-li zkontrolovat, zda je sestavení správné, zapište výsledné binární soubory na kartu SD a spusťte desku.

  • Napište obrázek U-Boot:
    $ sudo dd if=flash.bin of=/dev/sd bs=1k seek= conv=fsync
    Kde je:
  • 32 – pro i.MX 8M Nano, i.MX 8M Plus a i.MX 93
  • 33 – pro i.MX 8M Mini
  • Napište linuxové jádro:
    $ sudo mount /dev/sd1 /mnt
    $ cp Obrázek /mnt
    Částka $ / mnt

Optimalizace bootloaderu

Tato kapitola obsahuje následující informace.

  • Sekce 7.1 „Výchozí režim spouštění“
  • Sekce 7.2 „Režim Falcon“
  • Sekce 7.3 „Implementace režimu Falcon“
  • Část 7.4 „Mapa paměti“
  • Sekce 7.5 „Volání funkcí během režimu Falcon“

Výchozí režim spouštění

Obrázek 1 popisuje výchozí sekvenci spouštění. Po zapnutí nebo resetu i.MX 8M spustí Boot ROM (primární programový zavaděč), uložený v jeho paměti pouze pro čtení (ROM).

Boot ROM konfiguruje systém na čipu (SoC) prováděním základních periferních inicializací, jako jsou smyčky fázového závěsu (PLL), konfigurace hodin, inicializace paměti (SRAM). Poté najde zaváděcí zařízení, odkud načte obraz bootloaderu, který může obsahovat následující součásti: U-Boot SPL, ATF, U-Boot a tak dále.
Výchozí režim spouštění
Typický obraz U-Boot se nevejde do vnitřní paměti SRAM, a proto je rozdělen na dvě části: sekundární programový zavaděč (SPL) a vlastní U-Boot.

SPL je první stage bootloaderu, menšího předinstalovaného, ​​který sdílí zdroje jako U-Boot, ale s minimální sadou kódu, který se vejde do SRAM. SPL se nahraje do SRAM. Konfiguruje a inicializuje některé periferie a hlavně dynamickou paměť s náhodným přístupem (DRAM). Později nahraje ATF a U-Boot do DRAM. Posledním krokem je přeskočit na ATF, které zase přeskočí na vlastní U-Boot.

Arm Trusted Firmware (ATF), zahrnuto nedávno do rodiny i.MX8* a poskytuje referenční důvěryhodnou kódovou základnu pro architekturu Armv8. Implementuje různé standardy rozhraní Arm, včetně Power State Coordination Interface (PSCI). Binární soubor je obvykle součástí binárního souboru bootloaderu. Začíná se na počátku stages U-Boot. Bez ATF nemůže jádro nastavit služby, které musí být spouštěny v prostředí Secure World.

Správný U-Boot je druhé stage bootloader. Nabízí flexibilní způsob, jak načíst a spustit linuxové jádro. Poskytuje také minimální sadu nástrojů pro interakci s hardwarem na desce prostřednictvím rozhraní příkazového řádku. Běží z DRAM a inicializuje přídavná hardwarová zařízení. Napřample, síť, USB a DSI/CSI. Poté načte a připraví strom zařízení (FDT). Hlavním úkolem U-Bootu je načítání a spouštění samotného obrazu jádra.

Linuxové jádro běží z DRAM a kompletně přebírá systém. Od tohoto okamžiku již U-Boot nemá kontrolu nad systémem.

Falcon režim
Režim Falcon je funkce v U-Bootu, která umožňuje rychlé spouštění tím, že SPL umožňuje spustit linuxové jádro.
Úplně vynechává načítání a inicializaci U-Bootu, což má za následek zkrácení času stráveného v bootloaderu.

Obrázek 2 ilustruje zaváděcí sekvenci režimu Falcon.
Falcon režim

Chcete-li implementovat tento režim, proveďte následující akce:

  • Aktivujte některé specifické konfigurace pro Falcon.
  • Připravte si předem vyrovnávací strom zařízení (FDT).
  • Nakonfigurujte ATF pro přechod na jádro.
  • Vygenerujte obraz kernel flattened image tree (FIT) obsahující ATF a obraz jádra.

Implementace režimu Falcon

Pro snazší implementaci byla připravena řada patchů pro povolení režimu Falcon.
Stáhněte si související software AN14093SW.zip, abyste získali opravy, a proveďte následující kroky.

Použijte opravu U-Boot:
$ cd uboot-imx
$ git am 0001-Enable-Fast-Boot-on-i.MX-8M-Family-and-i.MX-93.patch

Tento patch vytvoří konfiguraci Falcon files pro každou platformu (i.MX 8M a i.MX 93), které lze nalézt v adresáři uboot-imx/configs/ pod názvem: _falcon_ defconfig. Konfigurace files jsou založeny na výchozích _defconfig, ke kterým je podpora Falcon přidána následovně.

Povolené parametry [=y]

  • CONFIG_SPL_SERIAL
  • CONFIG_CMD_SPL — Povolí příkaz pro export spl v U-Boot; potřebné pro krok 15.
  • CONFIG_SPL_MMC — Umožňuje SPL číst z MMC pomocí SPL MMC API.
  • CONFIG_MMC_BROKEN_CD [pouze pro i.MX 93]
  • CONFIG_SPL_FS_FAT — Umožňuje SPL číst z oddílu FAT.
  • CONFIG_SPL_LOAD_FIT
  • CONFIG_FIT
  • CONFIG_SPL_OS_BOOT — Aktivuje režim Falcon.
  • CONFIG_ SPL_MMC_IO_VOLTAGE a CONFIG_SPL_MMC_UHS_SUPPORT — Povolte vysokorychlostní přenos MMC pro SPL, který se používá ke zkrácení doby načítání obrazu jádra (*nefunkční pro i.MX 8MM
    protože SPL DM není podporováno kvůli omezení velikosti OCRAM).
  • CONFIG_LTO [pouze pro i.MX 8MN] — Zmenšuje binární velikost přidáním optimalizací doby připojení. Vyžadováno na i.MX 8M Nano, aby se zajistilo, že obraz SPL s podporou FAT sedí.
    Deaktivovaný parametr [=n]
    CONFIG_SPL_BOOTROM_SUPPORT
    Nastavte parametry
    CONFIG_SYS_SPL_ARGS_ADDR
    S:
  • 0x43000000 pro i.MX 8MN, i.MX 8MM a i.MX 8MP
  • 0x83000000 pro i.MX 93
    CONFIG_SPL_FS_LOAD_PAYLOAD_NAME s u-boot.itb
    CONFIG_SPL_FS_LOAD_KERNEL_NAME s Image.itb
    CONFIG_SPL_FS_LOAD_ARGS_NAME s:
  • imx8mm-evk-falcon.dtb pro i.MX 8MM
  • imx8mn-evk-falcon.dtb pro i.MX 8MN
  • imx8mp-evk-falcon.dtb pro i.MX 8MP
  • imx93-11×11-evk-falcon.dtb pro i.MX 93
    CONFIG_CMD_SPL_WRITE_SIZE s 0xC000
    CONFIG_FIT_EXTERNAL_OFFSET=0x3000 [pouze pro i.MX 93]
    Kromě toho patch implementuje funkci spl_start_uboot() umístěnou v uboot-imx/board/freescale//spl.c, kde je: imx8mm_evk, imx8mn_evk, imx8mp_evk nebo imx93_evk. Tato funkce kontroluje, zda má SPL spustit jádro nebo U-Boot. Pokud během bootování stisknete klávesu 'c', funkce vrátí 1, což znamená, že U-Boot musí být spuštěn. Jinak by SPL mělo spustit jádro. Chcete-li jej uvést do provozního stavu, ve kterém může Ethernet MAC komunikovat s PHY, musí být PHY resetován z SPL pro rodinu i.MX 8M. To je také přidáno při použití opravy U-Boot. PHY se resetuje ve funkci board_init_r() umístěné v uboot-imx/common/spl/spl.c file.

Aplikujte náplast ATF:
$ cd imx-atf
$ git am 0001-Přidat-podporu-pro-skočit-na-kernel-přímo-z-ATF.patch
Patch přidává podporu pro skákání přímo do jádra. Protože ATF nepodporuje přímý skok do jádra na platformách NXP, musí být adresa FDT předána jako argument ve funkci bl31_early_platform_setup2() umístěné v imx-atf/plat/imx/imx8m// _bl31_setup.c pro i.MX8M Family a imx-atf/plat/imx/imx93/imx93_bl31_setup.c pro i.MX93.

Použijte mkimage patch:

$ cd imx-mkimage
$ git am 0001-Add-scripts-for-Fast-Boot-implementation-for-i.MX8M-.patch

Tato oprava přidává vlastnost „os“ do uzlu uboot-1 zdroje obrázku U-Boot FIT (u-boot.its). Tato vlastnost je vyžadována při načítání U-Boot (případ, kdy spl_start_uboot() vrací 1), zatímco Falcon Režim je povolen. V opačném případě se systém U-Boot nezavede.
Navíc patch přidává skript, který generuje obraz U-Boot FIT pro i.MX 93 (protože v této verzi neexistuje): imx-mkimage/iMX9/mkimage_fit_atf.sh.
Druhý skript přidaný touto opravou je ten, který se používá ke generování obrazu FIT jádra (ATF + jádro) – potřebného pro implementaci režimu Falcon. Tento skript se používá pro i.MX 8M Family i i.MX 93.

  1. Sestavte ATF, jak je uvedeno v Oddíl 5.1. Zkopírujte upravený binární soubor ATF do imx-mkimage//.
  2. Vytvořte obraz bootloaderu, jak je uvedeno v části 5.2 – Falcon Mode. Zapište výsledný binární soubor U-Boot podle části 6.
  3. [Pouze pro i.MX93] Vygenerujte obraz U-Boot FIT. Při vytváření obrazu flash.bin se obraz u-boot.itb FIT nevytváří automaticky pro i.MX93, protože neexistuje žádný skript, který by jej generoval.
    $ cd imx-mkimage/iMX9
    $ DEK_BLOB_LOAD_ADDR=0x80400000 TEE_LOAD_ADDR=0x96000000
    ATF_LOAD_ADDR=0x204e0000 ./mkimage_fit_atf.sh imx93-11×11-evk.dtb > u-boot.its
    $ ./mkimage_uboot -E -p 0x3000 -f u-boot.its u-boot.itb
  4. Zkopírujte binární soubor u-boot.itb umístěný v imx-mkimage/ na první (FAT) oddíl SD karty.
  5. Před sestavením linuxového jádra jej možná budete chtít optimalizovat podle části 8.2 „Odstranění nepotřebných ovladačů a file systémy“. Sestavte linuxové jádro podle části 5.3 „Sestavení linuxového jádra“.
  6. Vygenerujte obraz jádra FIT. Obrázek FIT obsahuje ATF a obrázek jádra. To je načteno během režimu Falcon pomocí SPL. Protože SPL nenačte obrázek ATF v režimu Falcon, musí být ATF zahrnut do obrázku FIT.
    K přípravě obrázku FIT (Image.itb) se používá skript mkimage_fit_atf_kernel.sh. Zkopírujte obraz jádra do adresáře imx-mkimage//:
    $ cp linux-imx/arch/arm64/boot/Image imx-mkimage/
    Vygenerujte obrázek FIT:
    • Pro i.MX8M
      $ cd imx-mkimage/iMX8M
      # pro i.MX8MM
      $ ATF_LOAD_ADDR=0x00920000 KERNEL_LOAD_ADDR=0x40200000 ../mkimage_fit_atf_kernel.sh
      > Image.its
      # pro i.MX8MN
      $ ATF_LOAD_ADDR=0x00960000 KERNEL_LOAD_ADDR=0x40200000 ../mkimage_fit_atf_kernel.sh
      > Image.its
      # pro i.MX8MP
      $ ATF_LOAD_ADDR=0x00970000 KERNEL_LOAD_ADDR=0x40200000 ../mkimage_fit_atf_kernel.sh
      > Image.its
      # Chcete-li vygenerovat binární běh FIT:
      $ ./mkimage_uboot -E -p 0x3000 -f Image.its Image.itb
    • Pro i.MX93
      $ cd imx-mkimage/iMX9
      $ ATF_LOAD_ADDR=0x204e0000 KERNEL_LOAD_ADDR=0x80200000 ../
      mkimage_fit_atf_kernel.sh > Image.its
      # Chcete-li vygenerovat binární běh FIT:
      $ ./mkimage_uboot -E -p 0x3000 -f Image.its Image.itb
  7. Zkopírujte výsledný Image.itb file do prvního (FAT) oddílu SD karty.
  8. Připravte si strom Flattened Device Tree a zapište jej na SD kartu. Při spouštění v režimu Falcon je klíčovým krokem příprava stromu zařízení. U-Boot obvykle provádí opravy FDT při spouštění Linuxu. To znamená, že do původního stromu zařízení U-Boot kromě jiných úprav přidá argumenty jádra a paměťový uzel. Tyto argumenty lze nalézt v jedné z konfigurací files: uboot-imx/configs/_evk.h, pod názvem bootargs. Určují parametry konzoly a říkají jádru, kde má najít kořen file Systém. Kde je: imx8mm, imx8mn, imx8mp nebo imx93. Existují dva způsoby generování stromu zploštěných zařízení:
    • Metoda 1: Ručním přidáním požadovaných oprav do stromu zařízení
    • Metoda 2: Tím, že necháte U-Boot provést opravy a uložit výsledný strom zařízení, je metoda 2 obecnější a vyžaduje méně znalostí, ale je také zdlouhavější a obsahuje několik dalších kroků.
      Metoda 1: Můžete zkusit vygenerovat FDT ručně přidáním zaváděcích argumentů a paměťového uzlu do stromu zařízení jádra. Napřample, pro i.MX 93 vytvořte soubor imx93-11×11-evk-falcon.dts file v linuximx/arch/arm64/boot/dts/freescale a přidejte řádky kódu zespodu. Paměťový uzel je zkopírován z DTS U-Bootu. Zahrnutý strom zařízení lze změnit podle vašeho případu použití. V tomto případě používáme výchozí strom zařízení jádra.
      #include “imx93-11×11-evk.dts” / { paměť { reg = <0x00 0x80000000 0x00 0x80000000>; device_type = „paměť“; }; selected { bootargs = “console=ttyLP0,115200 earlycon root=/dev/mmcblk1p2 rootwait rw”; }; };
      Znovu zkompilujte jádro, aby se vygeneroval přidružený binární strom zařízení a zkopírujte výsledný imx93-11×11-
      evk-sokol. dtb file do prvního oddílu SD karty.
      Pokud jste zvolili první způsob, dalším krokem je nabootování desky a režim Falcon by měl být funkční.
      Metoda 2: FDT lze připravit pomocí příkazu spl export v U-Boot stagE. Chcete-li vstoupit do ponorky, podržte klávesu C stisknutou. Příkaz je ekvivalentní spuštění boom, dokud není opraveno strom zařízení
      Hotovo. Strom zařízení v paměti je strom potřebný pro režim Falcon. Tento obraz je třeba uložit do spouštěcího oddílu karty SD.
      [Předpoklady]
      a. Sestavte dědictví jádra u Image file z obrázku.
      Obrázek je speciální obrázek file který přidá 64bajtovou hlavičku před skutečný obraz jádra, kde je loader
      jsou zadány informace (adresa načtení, vstupní bod, typ operačního systému atd.).
      Tento typ obrázku potřebuje příkaz spl ke generování stromu Flattened Device Tree.
    • Pro i.MX 8M
      $ cd linux-imx/arch/arm64/boot
      $ mkimage -A rameno -O linux -T jádro -C žádné -a 0x43FFFFC0
      -e 0x44000000 -n „Linuxové jádro“ -d Obrázek uImage
      Název obrázku: Linuxové jádro
      Vytvořeno: st 26. července 14:12:09 2023
      Typ obrázku: ARM Linux Kernel Image (nekomprimovaný)
      Velikost dat: 31072768 bajtů = 30344.50 KiB = 29.63 MiB
      Adresa zatížení: 43ffffc0
      Vstupní bod: 44000000
    • Pro i.MX 93
      $ cd linux-imx/arch/arm64/boot
      $ mkimage -A rameno -O linux -T jádro -C žádné -a 0x83FFFFC0
      -e 0x84000000 -n „Linuxové jádro“ -d Obrázek uImage
      Název obrázku: Linuxové jádro
      Vytvořeno: st 26. července 14:14:09 2023
      Typ obrázku: ARM Linux Kernel Image (nekomprimovaný)
      Velikost dat: 31072768 bajtů = 30344.50 KiB = 29.63 MiB
      Adresa zatížení: 83ffffc0
      Vstupní bod: 84000000
      Kde:
      • A [Architecture]: Nastavení architektury.
      • O [os]: Nastavení operačního systému.
      • T [typ obrázku]: Nastavení typu obrázku.
      • C [typ komprese]: Nastavení typu komprese.
      • n [název obrázku]: Nastavení názvu obrázku na název obrázku.
      • d [obrázková data file]: Použití obrazových dat z obrazových dat file.
      • a [adresa zatížení]: Chcete-li nastavit adresu zatížení pomocí hexadecimálního čísla.
      • e [vstupní bod]: Nastavení vstupního bodu pomocí hexadecimálního čísla.
    • b. Zkopírujte uImage jádra do oddílu EXT2 na SD kartě.
      sudo mount /dev/sd2 /mnt
      $ sudo mkdir -p /mnt/home/root/.falcon
      $ sudo cp uImage /mnt/home/root/.falcon
      $ sudo umount /mnt
      Chcete-li připravit FDT pomocí příkazu spl export, proveďte následující kroky.
      1. Nabootujte desku do U-Bootu a zastavte jej těsně před vstupem do sekvence autobootu. Chcete-li vstoupit do U-Bootu, musíte během spouštění stisknout klávesu 'c'. V tomto okamžiku Falcon Mode selže, protože na SD kartě není připraven FDT pro linuxové jádro.
      2. [Volitelné] Pokud potřebujete jiný FDT než výchozí, spusťte nejprve následující příkaz. The file musí být na oddílu FAT na SD.
        u-boot=> setenv fdtfile .dtb
      3. Nahrajte FDT do RAM.
        u-boot=> spustit loadfdt
        43801 bajtů přečteno za 15 ms (2.8 MiB/s)
      4. Nahrajte uImage jádra do paměti RAM.
        u-boot=> ext2load mmc 1:2 ${loadaddr} /home/root/.falcon/uImage
        31072832 bajtů přečteno za 387 ms (76.6 MiB/s)
      5. Pokud požadujete také optimalizaci doby zavádění jádra, spusťte před dalším krokem příkazy z Oddíl 8.1 „Přidat tiché“, krok 2.
      6. Načtěte zaváděcí argumenty jádra.
        u-boot=> spl export fdt ${loadaddr} – ${fdt_addr_r}
        ## Zavádění jádra z Legacy Image na 80400000…
        Název obrázku: Linuxové jádro
        Vytvořeno: 2023-07-19 6:57:40 UTC
        Typ obrázku: ARM Linux Kernel Image (nekomprimovaný)
        Velikost dat: 31072768 bajtů = 29.6 MiB
        Adresa zatížení: 83ffffc0
        Vstupní bod: 84000000
        Ověřování kontrolního součtu… OK
        ## Zploštělý objekt stromu zařízení na 83000000
        Spouštění pomocí blobu fdt na 0x83000000
        Pracovní FDT nastaveno na 83000000
        Načítání obrázku jádra
        Použití stromu zařízení na místě 0000000083000000, konec 000000008300db18
        Pracovní FDT nastaveno na 83000000
        dílčí příkaz selhal (err=-1)
        dílčí příkaz selhal (err=-1)
        Použití stromu zařízení na místě 0000000083000000, konec 0000000083010b18
        Pracovní FDT nastaveno na 83000000
        Obrázek argumentu je nyní v paměti RAM: 0x0000000083000000
        Poznámka: Rozdíl mezi počáteční a koncovou adresou nahoře tučně je velikost opraveného FDT v paměti. Zkopírujte výsledný FDT z paměti RAM do oddílu FAT na kartě SD, přičemž jako poslední parametr zadejte správnou velikost kopie. V exampvýstup výše, to by bylo 0x83010b18 – 0x83000000 = 0x10b18.
        # pro i.MX 93
        u-boot=> fatwrite mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} imx93-11×11-
        evk-falcon.dtb 0x10b18
        Poznámka: Název uloženého FDT se musí shodovat s názvem nastaveným v
        Proměnná CONFIG_SPL_FS_LOAD_ARGS_NAME v kroku 1 z části 7.3 „Režim Falcon
        implementace". V opačném případě SPL nenačte strom zařízení do DRAM a deska se nezavede.
  9. Po restartu se ve výchozím nastavení deska spustí v režimu Falcon.

Mapa paměti

Obrázek 3 je mapa paměti během Falcon Mode pro i.MX93.
BootROM načte SPL a SPL běží z RAM na čipu (OCRAM – vnitřní paměť procesoru). SPL inicializuje dynamickou RAM (DDR), načte ATF do OCRAM, poté načte strom zařízení jádra a obraz jádra do DDR. SPL má vyhrazený paměťový prostor v DDR pro malloc. Tato oblast nesmí být v SPL přepsána
Mapa paměti
Tabulka 2 uvádí adresy pro rodinu i.MX 8M.

Tabulka 2. Rodinné adresy i.MX 8M}

Platforma SPL ATF Obrázek jádra Jádro DTB
i.MX 8M Mini 0x007e1000 0x00920000 0x40200000 0x43000000
i.MX 8M Nano 0x00912000 0x00960000 0x40200000 0x43000000
i.MX 8M Plus 0x00920000 0x00970000 0x40200000 0x43000000

Volání funkcí během režimu Falcon
Obrázek 4 uvádí důležité funkce volané během režimu SPL Falcon
Mapa paměti

Optimalizace prostoru jádra

V této části jsou uvedeny kroky k části 8.1 „Přidat tichý provoz“ a části 8.2 „Odstranění nepotřebných ovladačů a file systémy“.

Přidejte ticho
Chcete-li zkrátit dobu jádra asi na polovinu, přidejte argument tichý v botargos jádra. Potlačí ladicí zprávy během spouštěcí sekvence Linuxu.

Poznámka: Strom zařízení musí být znovu vygenerován pomocí nových bootargů pomocí příkazu spl export.

  1. Chcete-li vstoupit do U-Bootu, podržte při spouštění stisknutou klávesu C.
  2. Upravte parametr mmcargs přidáním tichého.
    u-boot=> upravit mmcargs
    edit: setenv bootargs ${jh_clk} console=${console} root=${mmcroot} quiet
    u-boot=> saveenv
    Ukládání prostředí do MMC… Zápis do MMC(1)… OK
  3. Obnovte a uložte strom zařízení na SD kartu jako v Oddíl 7.3 „Implementace režimu Falcon“, krok 14.

Odstraňte nepotřebné ovladače a file systémy
V závislosti na vašem případu použití můžete zeštíhlit jádro odstraněním nepotřebných ovladačů a file systémy.
Funkce jádra můžete analyzovat během zavádění pomocí biografu, což je funkce jádra, která vám umožňuje zobrazit graf toho, co se děje v jádře během inicializace.

Chcete-li vytvořit bootgraph, proveďte následující kroky:

  1. Přidejte initcall_debug do botargos jádra.
    a. Chcete-li vstoupit do U-Bootu, podržte při spouštění stisknutou klávesu C,
    b. Upravte parametr mmcargs přidáním initcall_debug
    u-boot=> upravit mmcargs
    edit: setenv bootargs ${jh_clk} console=${console} root=${mmcroot} quiet
    initcall_debug
    u-boot=> saveenv
    Ukládání prostředí do MMC… Zápis do MMC(1)… OK
  2. Obnovte a uložte strom zařízení na kartu SD jako v části 7.3 „Implementace režimu Falcon“, krok 14.
  3. Spusťte desku a získejte protokol jádra
    root@imx8mn-lpddr4-evk:~# dmesg > boot.log
    Boot.log file obsahuje data jako následující protokol. Data lze analyzovat podle toho, kolik času jednotlivé funkce stráví během bootování jádra.
    [2.583922] initcall deferred_probe_initcall+0x0/0xb8 vráceno 0 po 895357
    [2.583955] volání genpd_power_off_unused+0x0/0x98 @ 1
    [2.583977] initcall genpd_power_off_unused+0x0/0x98 vrátilo 0 po 12 použití
    [2.583984] volání genpd_debug_init+0x0/0x90 @ 1
    [2.584312] initcall genpd_debug_init+0x0/0x90 vrátilo 0 po 321 použitích
    [2.584333] volání ubi_init+0x0/0x23c @ 1
    [2.584627] initcall ubi_init+0x0/0x23c vrátil 0 po 286 použitích
  4. Zkopírujte výsledný soubor boot.log file na hostitelském PC. Vraťte se na hostitelský počítač a vytvořte graf pomocí následujících příkazů.
    $ cd linux-imx/scripts
    $ ./bootgraph.pl boot.log > boot.svg
    Můžete získat něco takového a můžete analyzovat, jak se používá doba spouštění jádra.
    Přidejte ticho
  5. Chcete-li zakázat ovladač nebo funkci, aktualizujte konfiguraci jádra.
    Napřample, zakázali jsme ladění z jádra (které zmenšuje velikost obrazu) a UBI file systém.
    a. Spuštěním následujících příkazů zadejte minicontig jádra.
    $ cd linux-imx
    $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make imx_v8_defconfig
    $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make minikontig
    V menuconfig deaktivujte CONFIG_UBIFS_FS a CONFIG_DEBUG_KERNEL, podobně jako
    Oddíl 7.3 „Implementace režimu Falcon“. Výsledný soubor .config file obsahuje následující řádky.
    # CONFIG_UBIFS_FS není nastaveno
    # CONFIG_DEBUG_KERNEL není nastaveno
    b. Vytvořte nový obraz jádra.
    $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- vytvořit vše
    c. Znovu vygenerujte obraz jádra FIT jako v části 7.3 „Implementace režimu Falcon“, krok 13 a zkopírujte jej
    do spouštěcího oddílu SD karty (FAT).
    d. [Volitelné] Pokud chcete použít upravené jádro během normálního spouštění, zkopírujte nový binární obraz do prvního zaváděcího oddílu SD karty.

Optimalizace uživatelského prostoru

Tato část uvádí kroky k části „Spuštění aplikace před systemd“ a části „Změna závislostí jednotky systemd“.

Spusťte aplikaci před systemd
V případě potřeby lze program spustit před systemd.

  1. Vytvořte skript /home/root/newinit.sh, který spustí váš program před systemd. Níže je jednoduchý
    example o tom, jak spustit program před systemd. Nahraďte linku ozvěny požadovanou aplikací.
    #!/bin/sh
    echo „Předčasný start“ > /dev/kmsg
    exec /lib/systemd/systemd
  2. Udělejte skript spustitelný.
    $ chmod +x newinit.sh
  3. Propojte /sbin/init s vaším skriptem newinit.sh.
    $ ln -sf /home/root/newinit.sh /sbin/init 
    Poznámka: Chcete-li se vrátit k počáteční konfiguraci, použijte následující příkaz.
    $ ln -sf /lib/systemd/systemd /sbin/init
  4. Restartujte desku a zkontrolujte protokol jádra. Hledání řetězce „Early start“ v dmesg ukazuje, že skript newinit.sh je spuštěn před procesem init.

Změňte závislosti systémové jednotky
Nejjednodušší způsob, jak zkrátit čas strávený v uživatelském prostoru, je změnit pořadí, ve kterém jsou aplikace spouštěny.
Chcete-li službu spustit dříve, změňte závislosti, se kterými systém pracuje.
Na desce otevřete /lib/systemd/system/.service file a změnit závislosti jednotek. Napřample,
počínaje před local-fs-pre.target.
[Jednotka]

Before=local-fs-pre.target
Výchozí závislosti=ne

Pokud je příkaz system-analyze volán s argumentem viny, Systemd také poskytuje nástroj nazvaný systemd-analyze, který vypíše služby a jejich čas spuštění.
$ systemd-analyzovat vinu

Chcete-li službu zakázat, můžete použít příkaz systemctl disable. Chcete-li zakázat některé služby (zejména ty, které poskytuje systemd), použijte příkaz systemctl mask. Při deaktivaci služeb však buďte opatrní, protože systém na nich může záviset, aby správně fungovaly.

Výsledky

Tabulka 3. Počáteční měření doby spouštění

SPL U-Boot Jádro
Rada BootROM DDRinicializace SPLinicializace+ Načíst obraz U-Boot U-Boot inicializace (init_ sekvence_ f) U-Boot inicializace (init_ sekvence_ r) Bota sekvence Jádro obraz zatížení ATF + Kernel bootuje až do procesu INIT Celkový čas
(slečna) (slečna) (slečna) (slečna) (slečna) (slečna) (slečna) (slečna) (slečna)
i.MX 8MN 161 241 162 363 790 2894 333 3506 8450
i.MX 8MP 162 301 175 373 1726 4181 345 3627 10890
i.MX 8MM 142 265 117 412 812 2970 396 5002 10116
i.MX 93 369 111 117 628 1172 3271 412 3090 9170

Tabulka 4. Optimalizovaná měření doby spouštění

SPL Jádro
Rada BootROM Inicializace DDR Inicializace SPL Načtení obrazu jádra[1] ATF + Kernel Boot až do procesu INIT[2] Celkový čas
(slečna) (slečna) (slečna) (slečna) (slečna) (slečna)
i.MX 8MN 203 240 86 376 1185 2090
i.MX 8MP 187 301 97 382 1237 2204
i.MX 8MM[3] 139 265 63 1336 2956[3] 4759
i.MX 93 374 111 89 366 1391 2330
  1. CONFIG_DEBUG_KERNEL zakázáno, což má za následek menší velikost obrazu jádra => snižuje načítání obrazu jádra.
  2. Zprávy protokolu jádra jsou potlačeny pomocí tichého.
  3. i.MX 8M Mini EVK není dodáván s integrovaným Wi-Fi modulem připojeným k portu PCIe (na rozdíl od i.MX 8M Plus). Proto inicializace PCIe PHY spotřebovává čas čekání na aktivní spojení. Pokud je k rozhraní PCIe připojen modul Wi-Fi, doba spouštění jádra se sníží na 1215 ms, takže celková doba spouštění je 3018 ms.

Poznámka ke zdrojovému kódu v dokumentu

BývalýampKód zobrazený v tomto dokumentu má následující autorská práva a licenci BSD-3-Clause:

Copyright 2023 NXP Redistribuce a použití ve zdrojové a binární formě, s úpravami nebo bez nich, jsou povoleny za předpokladu, že jsou splněny následující podmínky:

  1. Redistribuce zdrojového kódu musí obsahovat výše uvedené upozornění na autorská práva, tento seznam podmínek a následující prohlášení o vyloučení odpovědnosti.
  2. Redistribuce v binární formě musí reprodukovat výše uvedenou poznámku o autorských právech, tento seznam podmínek a následující prohlášení o vyloučení odpovědnosti v dokumentaci a/nebo jiných materiálech dodávaných s distribucí.
  3. Jméno držitele autorských práv ani jména jeho přispěvatelů nelze použít k podpoře nebo propagaci produktů odvozených od tohoto softwaru bez zvláštního předchozího písemného souhlasu.

TENTO SOFTWARE POSKYTUJÍ DRŽITELÉ AUTORSKÝCH PRÁV A PŘISPĚVATELÉ „TAK, JAK JE“ A JAKÉKOLI
VÝSLOVNÉ NEBO PŘEDPOKLÁDANÉ ZÁRUKY, VČETNĚ, ALE NE OMEZENÍ, PŘEDPOKLÁDANÝCH ZÁRUK OBCHODOVATELNOSTI A VHODNOSTI PRO KONKRÉTNÍ ÚČEL SE ZŘÍKÁ. V ŽÁDNÉM PŘÍPADĚ NEBUDE DRŽITEL AUTORSKÝCH PRÁV NEBO PŘISPĚVATELÉ ODPOVĚDNÍ ZA JAKÉKOLI PŘÍMÉ, NEPŘÍMÉ, NÁHODNÉ, ZVLÁŠTNÍ, EXEMPLÁRNÍ NEBO NÁSLEDNÉ ŠKODY (VČETNĚ, ALE NEOMEZENO NA, ZAJIŠTĚNÍ NÁHRADNÍCH SLUŽEB, ZBOŽÍ FILO; NEBO PŘERUŠENÍ OBCHODNÍ ČINNOSTI), AŤ JAK ZPŮSOBUJEME A NA ZÁKLADĚ JAKÉKOLI TEORIE ODPOVĚDNOSTI, AŤ VE SMLOUVĚ, PŘÍMÉ ODPOVĚDNOSTI NEBO PŘEČINKU (VČETNĚ NEDBALOSTI ČI JINAK) VZNIKLÉM JAKÝKOLIV ZPŮSOBEM Z POUŽITÍ TOHOTO SOFTWARU.

Historie revizí

Tabulka 5. Historie revizí

Číslo revize Datum revize Popis
1 09. října 2023 Počáteční vydání

Právní informace

Definice
Koncept — Stav konceptu na dokumentu označuje, že obsah je stále pod interní revizíview a podléhá formálnímu schválení, které může vést k úpravám nebo doplnění. NXP Semiconductors neposkytuje žádná prohlášení ani záruky ohledně přesnosti nebo úplnosti informací obsažených v pracovní verzi dokumentu a nenese žádnou odpovědnost za důsledky použití takových informací.

Vyloučení odpovědnosti
Omezená záruka a odpovědnost — Informace v tomto dokumentu jsou považovány za přesné a spolehlivé. Společnost NXP Semiconductors však neposkytuje žádná prohlášení ani záruky, vyjádřené nebo předpokládané, pokud jde o přesnost nebo úplnost takových informací, a nenese žádnou odpovědnost za důsledky použití takových informací. NXP Semiconductors nenese žádnou odpovědnost za obsah tohoto dokumentu, pokud je poskytnut informačním zdrojem mimo NXP Semiconductors.

Společnost NXP Semiconductors v žádném případě nenese odpovědnost za jakékoli nepřímé, náhodné, trestné, zvláštní nebo následné škody (včetně – bez omezení – ušlého zisku, ušlých úspor, přerušení podnikání, nákladů souvisejících s odstraněním nebo výměnou jakýchkoli produktů nebo nákladů na přepracování), ať už nebo takové škody nejsou založeny na protiprávním jednání (včetně nedbalosti), záruce, porušení smlouvy nebo jiné právní teorii.

Bez ohledu na jakékoli škody, které by mohly zákazníkovi z jakéhokoli důvodu vzniknout, bude souhrnná a kumulativní odpovědnost NXP Semiconductors vůči zákazníkovi za produkty popsané v tomto dokumentu omezena v souladu s podmínkami komerčního prodeje NXP Semiconductors.

Právo na změny - Společnost NXP Semiconductors si vyhrazuje právo kdykoli a bez upozornění provádět změny informací zveřejněných v tomto dokumentu, včetně, bez omezení, specifikací a popisů produktů. Tento dokument nahrazuje a nahrazuje všechny informace poskytnuté před jeho zveřejněním.

Vhodnost použití — Produkty NXP Semiconductors nejsou navrženy, autorizovány nebo zaručeny tak, aby byly vhodné pro použití v systémech nebo zařízeních pro podporu života, život kritických nebo kritických systémech nebo zařízeních, ani v aplikacích, kde lze důvodně očekávat selhání nebo nesprávnou funkci produktu NXP Semiconductors. zranění osob, smrt nebo vážné poškození majetku nebo životního prostředí. Společnost NXP Semiconductors a její dodavatelé nepřijímají žádnou odpovědnost za zahrnutí a/nebo použití produktů NXP Semiconductors v takovém zařízení nebo aplikacích, a proto je takové zahrnutí a/nebo použití na vlastní riziko zákazníka.

Aplikace — Zde popsané aplikace pro kterýkoli z těchto produktů jsou pouze ilustrativní. NXP Semiconductors neposkytuje žádné prohlášení ani záruku, že takové aplikace budou vhodné pro specifikované použití bez dalšího testování nebo úprav. Zákazníci jsou zodpovědní za návrh a provoz svých aplikací a produktů využívajících produkty NXP Semiconductors a NXP Semiconductors nepřijímá žádnou odpovědnost za jakoukoli pomoc s aplikacemi nebo návrhem zákaznických produktů. Je výhradní odpovědností zákazníka určit, zda je produkt NXP Semiconductors vhodný a vhodný pro zákazníkovy aplikace a plánované produkty, jakož i pro plánovanou aplikaci a použití zákazníkem (zákazníků) jako třetí strana. Zákazníci by měli poskytnout vhodné konstrukční a provozní záruky, aby minimalizovali rizika spojená s jejich aplikacemi a produkty.

NXP Společnost Semiconductors nepřijímá žádnou odpovědnost za jakékoli selhání, poškození, náklady nebo problém, který je založen na jakékoli slabosti nebo selhání v aplikacích nebo produktech zákazníka nebo v aplikaci nebo použití zákazníkem (zákazníky třetí strany) zákazníka. Zákazník je odpovědný za provedení všech nezbytných testů pro aplikace a produkty zákazníka využívající produkty NXP Semiconductors, aby se zabránilo selhání aplikací a produktů nebo aplikace nebo použití zákazníkem (zákazníky třetí strany) zákazníka. NXP nenese v tomto ohledu žádnou odpovědnost.

Podmínky komerčního prodeje — Produkty NXP Semiconductors se prodávají v souladu se všeobecnými podmínkami komerčního prodeje, jak jsou zveřejněny na http://www.nxp.com/profile/podmínkách, není-li v platné písemné individuální smlouvě dohodnuto jinak. V případě uzavření individuální smlouvy platí pouze podmínky příslušné smlouvy. Společnost NXP Semiconductors tímto výslovně nesouhlasí s uplatňováním všeobecných obchodních podmínek zákazníka, pokud jde o nákup produktů NXP Semiconductors zákazníkem. Kontrola vývozu — Tento dokument, stejně jako položky zde popsané, mohou podléhat předpisům o kontrole vývozu. Vývoz může vyžadovat předchozí povolení od příslušných orgánů.

Vhodnost pro použití v neautomobilových produktech — Pokud tento dokument výslovně neuvádí, že tento konkrétní produkt NXP Semiconductors je způsobilý pro automobilový průmysl, není tento produkt vhodný pro použití v automobilech. Není kvalifikován ani testován v souladu s automobilovým testováním nebo aplikačními požadavky. Společnost NXP Semiconductors nenese žádnou odpovědnost za zahrnutí a/nebo použití jiných než automobilových kvalifikovaných produktů v automobilovém vybavení nebo aplikacích.

V případě, že zákazník použije produkt pro návrh a použití v automobilových aplikacích podle automobilových specifikací a norem, zákazník (a) použije produkt bez záruky NXP Semiconductors na produkt pro takové automobilové aplikace, použití a specifikace a ( b) kdykoli zákazník použije produkt pro automobilové aplikace nad rámec specifikací NXP Semiconductors, takové použití bude výhradně na vlastní riziko zákazníka a (c) zákazník plně odškodní společnost NXP Semiconductors za jakoukoli odpovědnost, škody nebo neúspěšné nároky na produkt vyplývající z návrhu a použití zákazníka. produkt pro automobilové aplikace nad rámec standardní záruky NXP Semiconductors a specifikace produktu NXP Semiconductors.

Překlady — Neanglická (přeložená) verze dokumentu, včetně právních informací v tomto dokumentu, je pouze orientační. V případě jakéhokoli rozporu mezi přeloženou a anglickou verzí má přednost anglická verze.

Bezpečnostní - Zákazník je srozuměn s tím, že všechny produkty NXP mohou být předmětem neidentifikovaných zranitelností nebo mohou podporovat zavedené bezpečnostní standardy nebo specifikace se známými omezeními. Zákazník je odpovědný za návrh a provoz svých aplikací a produktů po celou dobu jejich životního cyklu, aby se snížil účinek těchto zranitelností na aplikace a produkty zákazníka. Odpovědnost zákazníka se vztahuje také na další otevřené a/nebo proprietární technologie podporované produkty NXP pro použití v aplikacích zákazníka. NXP nenese žádnou odpovědnost za jakoukoli zranitelnost. Zákazník by měl pravidelně kontrolovat aktualizace zabezpečení z NXP a patřičně je sledovat. Zákazník si musí vybrat produkty s bezpečnostními prvky, které nejlépe splňují pravidla, předpisy a normy zamýšlené aplikace a učinit konečná rozhodnutí o designu týkající se svých produktů a je výhradně odpovědný za soulad se všemi právními, regulačními a bezpečnostními požadavky týkajícími se jeho produktů, bez ohledu na jakékoli informace nebo podporu, kterou může NXP poskytnout.

NXP má tým PSIRT (Product Security Incident Response Team) (dostupný na adrese PSIRT@nxp.com), který řídí vyšetřování, hlášení a uvolňování řešení bezpečnostních zranitelností produktů NXP.

NXP BV — NXP BV není provozní společností a nedistribuuje ani neprodává produkty.

ochranné známky

Oznámení: Všechny odkazované značky, názvy produktů, názvy služeb a ochranné známky jsou majetkem příslušných vlastníků.
NXP — wordmark a logo jsou ochranné známky společnosti NXP BV
EdgeLock — je ochranná známka společnosti NXP BV
i.MX — je ochranná známka společnosti NXP BV
Microsoft, Azure a ThreadX — jsou ochranné známky skupiny společností Microsoft.

Dokumenty / zdroje

NXP AN14093 Fast Boot Falcon Mode Kernel [pdfUživatelská příručka
AN14093 Fast Boot Falcon Mode Kernel, AN14093, Fast Boot Falcon Mode Kernel, Boot Falcon Mode Kernel, Falcon Mode Kernel, Mode Kernel

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *