Outils pour utilisateurs

Outils du site


wiki:linux_pour_zynq_de_xilinx:installation_buildroot

Installation et utilisation de Buildroot pour carte microzed

Buildroot est un outil permettant la création d'un système d'exploitation Linux complet adapté pour l'embarqué, incluant le “boot-loader”, le noyau, le “devicetree” et le système de fichiers “rootfs”.
Pour cette page, nous allons nous inspirer du tutoriel proposé par Xilinx.

Pré-installations

Nécessaires

Outils de récupération de sources :

  • wget
  • git

ATTENTION : pour ces deux outils, il ne faut pas oublier de configurer les paramètres de proxy, si nécessaire.

Outils de compilation :

  • sed
  • make (version 3.81 ou ultérieure)
  • binutils
  • build-essential (pour les distributions à base de Debian)
  • gcc (version 2.95 ou ultérieure)
  • g++ (version 2.95 ou ultérieure)
  • bash
  • patch
  • gzip
  • bzip2
  • perl (version 5.8.7 ou ultérieure)
  • tar
  • cpio
  • python (version 2.6 ou 2.7)
  • unzip
  • rsync
  • DTC
    $ git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git
    $ cd dtc/
    $ make
    $ export PATH=<path-containing-dtc>/dtc:$PATH 


    Ou, vous pouvez ajouter ce chemin vers le binaire dtc dans le fichier ~/.profile afin de le retrouver au prochain démarrage de votre session (pas besoin de la commande export).

  • libncurses5 et libncurses5-dev pour utiliser l'outil de configuration menuconfig.

Installation

  • Installation dans votre système : télécharger l'archive de buildroot décompresser l'archive dans le répertoire de travail. Ici, nous utiliserons la version 2016.05. Par exemple, on peut faire ainsi dans un terminal :
    $ cd Xilinx
    $ wget https://buildroot.org/downloads/buildroot-2016.05.tar.gz
    $ tar xzvf buildroot-2016.05.tar.gz
  • Installation dans une machine virtuelle pré-configurée avec Vagrant : voir ce sujet

Utilisation

$ cd buildroot-2016-05 
  1. Appliquer la configuration par défaut pour les cartes microzed qui dans le fichier zynq_microzed_defconfig dans le répertoire configs. Éventuellement, si comme moi, les clonages avec git ne fonctionnent pas avec une adresse en git:, changer la ligne ou le dépôt git est indiqué
    BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/Xilinx/linux-xlnx.git"

    en :

    BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git"

    Puis continuez ainsi :

    $ make zynq_microzed_defconfig
    ...
    #
    # configuration written to /.../Xilinx/buildroot-2016.05/.config
    #
  2. À partir de là, il est possible de changer les configurations par défaut avec menuconfig. Pur l'instant, nous ne changerons pas ces configurations, et nous allons juste les appliquer telles quelles :
    $ make menuconfig 

    Il faut choisir Exit pour rester avec la configuration par défaut.

    $ make  busybox-menuconfig 

    Il faut choisir Exit pour rester avec la configuration par défaut, et accepter de sauvegarder la configuration.

    $ make linux-menuconfig 

    Il faut choisir Exit pour rester avec la configuration par défaut.

  3. Maintenant, chargez et construisez les outils qui ont été configurés à l'étape précédente :
    $ make
    ...
    ...
    table='/.../Xilinx/buildroot-2016.05/output/build/_device_table.txt'
    /usr/bin/install -m 0644 support/misc/target-dir-warning.txt /.../Xilinx/buildroot-2016.05/output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM

    Cela prend du temps. S'il y a des erreurs vérifiez que les paquets mentionnés plus haut sont installés sur votre machine, que le chemin de la variable $PATH inclus l'accès au binaire du programme dtc et que les configurations proxy sont correctes en particulier pour wget et git.

Toutes les éléments générés se trouvent dans le répertoire output. Pour modifier cela, ce qui peut être utile pour générer des images avec plusieurs configurations possibles, on peut utiliser l'option O=. Par exemple :

$ make O=../output_microzed_default/ zynq_microzed_defconfig

Cela créera l'arborescence des différentes sorties de compilation ainsi que le fichier de configuration .config dans le répertoire output_microzed_default qui se trouvera au niveau inférieur du répertoire général de buildroot.

Installation sur la carte SD

<color red>REMARQUE</color> : à partir de ce point nous allons travailler avec la version de buildroot installée dans une machine virtuelle pré-configurée avec Vagrant, comme indiqué dans ce sujet. <color red>Il peut y avoir alors quelques différences avec une version installée sur votre système</color>.


Une fois le processus de construction par défaut complété, les images se trouvent dans le répertoire /output/images, ou celui définit par l'option O=:

$ cd buildroot-2016.08/output/images/
$ ls
boot.bin     rootfs.cpio.gz     rootfs.tar  uImage
rootfs.cpio  rootfs.cpio.uboot  u-boot.img  zynq-zed.dtb

Le fichier readme.txt dans le répertoire buildroot-2016.08/board/zynq donne les informations suivantes :
Créer une partition FAT32 au début de votre carte SD et copier les fichiers

  • boot.bin
  • u-boot.img
  • uImage
  • uramdisk.image.gz (rootfs.cpio.uboot renommé)
  • devicetree.dtb (zynq-***.dtb renommé)

sur votre carte SD. C'est tout. Une fois la carte installée sur la microzedzed, vous pouvez démarrer la carte.

Modifications

Lorsque qu'une modification est apportée quelque part dans les fichiers générés lors de la construction du système, il est nécessaire de recompiler la partie concernée.

Modifications dans l'arborescence de linux - influences de rootfs

 
$ touch .config
$ make

Cela reconstruira les fichiers rootfs.cpio ; rootfs.cpio.gz ; rootfs.cpio.uboot ; rootfs.tar.

Modifications dans l'arborescence de linux ou de "device tree"

$ make linux-rebuild

Cela reconstruira les fichiers uImage ; zynq-zed.dtb.

Modifications dans l'arborescence de u-boot

$ make uboot-rebuild

Cela reconstruira les fichiers boot.bin ; u-boot.img.

Utilisation un peu plus avancée

Architecture du système de démarrage

Sur la carte SD, on trouve :

  • boot.bin :
    ce fichier contient plusieurs éléments.
    • le FSBL (fisrt stage boot loader) : il est responsable de l'initialisation du processeur, optionnellement charge le bitstream dans la partie logique du FPGA, et donne la main au boot loader de second niveau.
    • Optionnellement, le Bitfile : il contient le bitstream pour configurer la partie logique du FPGA.
    • U-boot : c'est le boot laoder de second niveau qui va permettre d'effectuer éventuellement quelques taches bas niveau puis de charger le noyau en lui passant des variables d'environnement et le device tree.
  • uImage : c'est noyau Linux
  • un fichier dtb : il contient des informations sur la configuration matérielle. Ce fichier est utilisée par le noyau
  • Le système de fichiers.

1)2)

wiki/linux_pour_zynq_de_xilinx/installation_buildroot.txt · Dernière modification : 2016/11/24 13:33 de emeyer