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:
- 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í.
- 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.
- 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.
- 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í.
- 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.
- 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.