GNU/Linux >> Tutoriels Linux >  >> Linux

Comment changer la config de u-boot dans Yocto

Il est possible d'ajouter defconfig en tant que fichier normal, à titre d'exemple, je colle quelques bbappend fonctionnels :

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/ \
        "

Ainsi, la ligne "file://am335x_cmpc30_defconfig;subdir=git/configs/" met en fait tout le defconfig dans le code source de u-boot.


pas nécessaire de copier tout le .config privé fichier dans le dossier de construction u-boot, s'il est nécessaire de modifier certains paramètres dans defconfig, sed fonctionne parfaitement bien à l'intérieur du do_compile_prepend méthode aussi. exemple :

`

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

`

les espaces sont parfaitement OK à l'intérieur des modèles de recherche et de remplacement. ${BOARD_DEVICE_TREE} peut être défini dans un des fichiers de configuration du Yocto. cette méthode fonctionne également bien pour les fichiers source/en-tête déjà corrigés avec une liste de correctifs basée sur la recette.


Techniquement, le processus que vous avez décrit me semble correct. Mais il y a quelques obstacles à surveiller, respectivement des choses à vérifier :

  1. votre .bbappend est-il réellement traité ?

Bien que cela semble être le cas pour vous (vous l'avez découvert grâce à la sortie de débogage), cela est généralement plus facile à vérifier avec :

bitbake-layers show-appends

Cela vous donnera une liste complète et détaillée de tous les ajouts qui sont en vigueur dans votre situation de construction actuelle.

  1. Le .bbappend a-t-il réellement l'effet souhaité ?

Si plus d'une recette est impliquée, les choses peuvent être compliquées et s'écraser les unes les autres. Vérifiez avec

bitbake -e u-boot-imx

pour voir ce qui se passe réellement. Il est préférable de combiner cela avec un tuyau vers less (ou le pager de votre choix), puis en recherchant les valeurs modifiées, comme SRC_URI.

  1. Découvrez quelle est votre machine u-boot.

Compte tenu des informations de 2., c'est plutôt trivial :vérifiez la variable appelée

UBOOT_MACHINE

car c'est ce que u-boot devrait vraiment voir.

  1. Essayez de ne pas dire trop de détails à bitbake.

En particulier, la combinaison des commutateurs -f et -c peut avoir des résultats inattendus, car vous modifiez essentiellement les dépendances des tâches. D'après mon expérience, quelque chose le long

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

devrait mieux fonctionner, car il passe par toute la dépendance de construction, y compris la configuration, les correctifs, etc.

MODIFIER / ADDENDA

J'ai vérifié auprès des développeurs OE, et le principal problème est que le mécanisme de defconfig est spécifique au noyau (linux), c'est aussi pourquoi il est expliqué dans le manuel du noyau de développement.

Donc, pour intégrer votre configuration dans la version réelle, il existe une solution et demie.

  1. La bonne méthode :

Préparez un correctif pour les sources de u-boot. Dans votre cas, c'est probablement juste une modification mineure du fichier defconfig qui est déjà utilisé. Ayez le patch au format canonique et ajoutez-le à SRC_URI, puis il devrait être automatiquement récupéré et faire l'affaire.

  1. La méthode hackish (et non testée, donc à moitié) :

Préparez votre configuration au format complet (pas la version simplifiée de defconfig). Ajoutez-le ensuite à SRC_URI et utilisez-le via une tâche supplémentaire dans votre .bbappend :

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

Cela devrait injecter la nouvelle configuration directement avant le démarrage de la compilation. Il faudra peut-être un peu de bricolage, mais vous avez certainement l'idée. Une autre approche serait d'injecter votre defconfig sur le fichier d'origine.

Cela dit, je recommande fortement la première méthode.


Linux
  1. Comment changer le memory_limit dans le fichier .htaccess

  2. Comment changer l'identité d'un système Linux

  3. Comment ajouter une nouvelle ligne à la fin d'un fichier ?

  4. Comment changer le nom d'hôte ?

  5. Comment changer le shell par défaut sous Linux

Utilisation du fichier de configuration SSH

Comment modifier les autorisations de fichier

Comment changer le mot de passe root sous Linux

Comment changer le nom d'hôte du serveur dans Ubuntu

Comment changer le port SSH dans CentOS

Comment changer le fuseau horaire sur le serveur Ubuntu 18.04 ?