GNU/Linux >> Znalost Linux >  >> Linux

Jak změnit konfiguraci u-boot v Yocto

Je možné přidat defconfig jako běžný soubor, jako příklad vkládám nějaký funkční bbappend:

PR = "r7"
BRANCH = "ti-u-boot-2020.01"
SRCREV = "ae8ceb7b6e3acb4bc90f730e33dafc7b65066591"
FILESEXTRAPATHS_prepend := "${THISDIR}:" 

SRC_URI +=  "file://0001-Add-am335x-cmpc30-target.patch \
         file://am335x-cmpc30.dts;subdir=git/arch/arm/dts \
         file://am335x_cmpc30_defconfig;subdir=git/configs/ \
        "

Takže řádek "file://am335x_cmpc30_defconfig;subdir=git/configs/" ve skutečnosti vložil celý defconfig do zdrojového kódu u-boot.


není nutné kopírovat celý soukromý .config soubor do složky sestavení u-boot, pokud je nutné změnit některá nastavení v defconfig, sed funguje perfektně uvnitř do_compile_prepend metoda také. příklad:

`

do_configure_prepend() {
        sed -i -e 's,CONFIG_DEFAULT_DEVICE_TREE=,CONFIG_DEFAULT_DEVICE_TREE= ${BOARD_DEVICE_TREE},g'  ${S}configs/mx7ulp_evk_defconfig
}

`

mezery jsou uvnitř vzorů hledání a nahrazování naprosto v pořádku. ${BOARD_DEVICE_TREE} lze definovat v jednom z konfiguračních souborů Yocto. tato metoda také funguje dobře pro zdrojové/hlavičkové soubory, které jsou již opraveny seznamem oprav založených na receptu.


Technicky mi postup, který jste popsal, zní správně. Existuje však několik překážek, na které je třeba si dát pozor, respektive věci, které je třeba zkontrolovat:

  1. je váš soubor .bbappend skutečně zpracován?

I když se zdá, že je to váš případ (zjistili jste to prostřednictvím výstupu ladění), obvykle je to snazší zkontrolovat pomocí:

bitbake-layers show-appends

Získáte tak úplný a podrobný seznam všech příloh, které jsou platné ve vaší aktuální situaci sestavení.

  1. Má .bbappend skutečně požadovaný účinek?

Pokud se jedná o více než jeden recept, věci se mohou komplikovat a navzájem se přepisovat. Zkontrolujte pomocí

bitbake -e u-boot-imx

vidět, co se vlastně děje. To je nejlepší kombinovat s napojením na méně (nebo do pageru dle vašeho výběru) a poté vyhledáním upravených hodnot, jako je SRC_URI.

  1. Zjistěte, jaký je váš u-boot stroj.

Vzhledem k informacím z 2. je to poněkud triviální:zkontrolujte proměnnou nazvanou

UBOOT_MACHINE

protože to by měl u-boot skutečně vidět.

  1. Snažte se neříkat bitbake, co má dělat, příliš podrobně.

Zejména kombinace přepínačů -f a -c může mít neočekávané výsledky, protože si v podstatě pohráváte se závislostmi úloh. Podle mých zkušeností něco spolu

bitbake -c clean u-boot-imx && bitbake u-boot-imx

by měl fungovat lépe, protože prochází celou závislostí sestavení, včetně konfigurace, záplatování a tak dále.

UPRAVIT / DODATEK

Zkontroloval jsem to u vývojářů OE a hlavním problémem je, že mechanismus defconfig je specifický pro (linux-)kernel, proto je také vysvětlen v manuálu kernel-dev.

Aby se vaše konfigurace dostala do skutečného sestavení, existuje jeden a půl řešení.

  1. Správný způsob:

Připravte patch pro zdroje u-boot. Ve vašem případě je to pravděpodobně jen malá úprava souboru defconfig, který se již používá. Mějte patch v kanonickém formátu a přidejte ho do SRC_URI, pak by měl být automaticky vyzvednut a provést trik.

  1. Hackerský (a nevyzkoušený, tedy jen poloviční) způsob:

Připravte si konfiguraci v plném formátu (nikoli verzi zbavenou defconfig). Poté jej přidejte do SRC_URI a použijte jej prostřednictvím dalšího úkolu ve vašem .bbappend:

do_compile_prepend() {
  cp YOURFILENAME ${S}/.config
}

To by mělo vložit novou konfiguraci přímo před zahájením kompilace. Možná to bude chtít trochu šťourat, ale určitě to pochopíte. Dalším přístupem by bylo vložit váš defconfig přes původní soubor.

Přesto důrazně doporučuji první způsob.


Linux
  1. Jak změnit identitu systému Linux

  2. Jak změnit název hostitele?

  3. Změnit oprávnění souboru

  1. Jak změnit název hostitele na Ubuntu

  2. Jak připojit výstup do souboru?

  3. SSH - Jak zahrnout příkaz -t do souboru ~/.ssh/config

  1. Jak změnit limit_paměti v souboru .htaccess

  2. Jak přidat nový řádek na konec souboru?

  3. Jak změnit oprávnění pro jeden soubor?