Dimungkinkan untuk menambahkan defconfig sebagai file biasa, sebagai contoh saya menempelkan beberapa bbappend yang berfungsi:
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/ \
"
Jadi baris "file://am335x_cmpc30_defconfig;subdir=git/configs/" benar-benar memasukkan seluruh defconfig ke kode sumber u-boot.
tidak perlu menyalin seluruh .config
pribadi file ke folder build u-boot, jika perlu mengubah beberapa pengaturan di dalam defconfig, sed
bekerja dengan sangat baik di dalam do_compile_prepend
metode juga. contoh:
`
do_configure_prepend() {
sed -i -e 's,CONFIG_DEFAULT_DEVICE_TREE=,CONFIG_DEFAULT_DEVICE_TREE= ${BOARD_DEVICE_TREE},g' ${S}configs/mx7ulp_evk_defconfig
}
`
spasi benar-benar OK di dalam pencarian dan ganti pola. ${BOARD_DEVICE_TREE}
dapat ditentukan di salah satu file konfigurasi Yocto. metode ini juga berfungsi dengan baik untuk file sumber/header yang sudah ditambal dengan daftar patch berbasis resep.
Secara teknis proses yang Anda jelaskan terdengar benar bagi saya. Namun ada beberapa kendala yang harus diperhatikan, masing-masing hal yang harus diperiksa:
- apakah .bbappend Anda benar-benar diproses?
Meskipun ini tampaknya menjadi kasus Anda (Anda mengetahuinya melalui output debug), ini biasanya lebih mudah diperiksa dengan:
bitbake-layers show-appends
Ini akan memberi Anda daftar lengkap dan terperinci dari semua tambahan yang berlaku dalam situasi pembangunan Anda saat ini.
- Apakah .bbappend benar-benar memiliki efek yang diinginkan?
Jika lebih dari satu resep yang terlibat, hal-hal dapat menjadi rumit, dan saling menimpa. Periksa dengan
bitbake -e u-boot-imx
untuk melihat apa yang sebenarnya terjadi. Ini paling baik digabungkan dengan menyalurkan ke less (atau pager pilihan Anda) dan kemudian mencari nilai yang dimodifikasi, seperti SRC_URI.
- Cari tahu mesin u-boot Anda.
Mengingat informasi dari 2., ini agak sepele:periksa variabel yang disebut
UBOOT_MACHINE
karena inilah yang seharusnya dilihat oleh u-boot.
- Cobalah untuk tidak memberi tahu bitbake apa yang harus dilakukan terlalu detail.
Terutama menggabungkan sakelar -f dan -c mungkin memiliki hasil yang tidak terduga, karena pada dasarnya Anda mengotak-atik dependensi tugas. Dalam pengalaman saya, ada sesuatu yang terjadi
bitbake -c clean u-boot-imx && bitbake u-boot-imx
seharusnya berfungsi lebih baik, karena melewati seluruh dependensi build, termasuk konfigurasi, patching, dan seterusnya.
EDIT / TAMBAHAN
Saya telah memeriksa dengan OE devs, dan masalah utamanya adalah bahwa mekanisme defconfig khusus (linux-)kernel, itu juga mengapa dijelaskan dalam manual kernel-dev.
Jadi untuk memasukkan konfigurasi Anda ke dalam build yang sebenarnya, ada satu setengah solusi.
- Cara yang benar:
Siapkan tambalan ke sumber u-boot. Dalam kasus Anda, itu mungkin hanya sedikit modifikasi pada file defconfig yang sudah digunakan. Miliki tambalan dalam format kanonis dan tambahkan ke SRC_URI, maka tambalan itu akan diambil secara otomatis dan lakukan triknya.
- Cara hackish (dan belum teruji, oleh karena itu hanya setengah):
Persiapkan konfigurasi Anda dalam format lengkap (bukan versi defconfig yang dipreteli). Kemudian tambahkan ke SRC_URI dan gunakan melalui tugas tambahan di .bbappend:
Andado_compile_prepend() {
cp YOURFILENAME ${S}/.config
}
Ini harus menyuntikkan konfigurasi baru secara langsung sebelum kompilasi dimulai. Mungkin perlu sedikit mengutak-atik, tetapi Anda pasti mengerti. Pendekatan lain adalah menyuntikkan defconfig Anda ke file asli.
Karena itu, saya sangat merekomendasikan cara pertama.