Configuration du système d'exploitation

Le projet Yocto fournit un ensemble d’outils pour créer des distributions Linux pour les systèmes embarqués. Lors de la création d’un nouveau projet, le système de construction télécharge et compile tous les composants logiciels nécessaires, y compris les outils de compilation, les bibliothèques, le noyau Linux. Comme cette étape est très longue, nous en avons exécuté une partie pour vous à l’avance.

Préparation de l’environnement de compilation

Ouvrez un nouveau terminal et exécutez les commandes suivantes pour initialiser les variables d’environnement nécessaires :

cd /Data/etudiant/soc2020/poky
source oe-init-build-env ../build

Cette commande change automatiquement le dossier courant et vous place dans build.

Construction du logiciel embarqué

Cette commande exécute la construction du système d’exploitation, des bibliothèques et des applications qui seront déployées sur la cible :

bitbake core-image-minimal

Cette commande produit une image du logiciel embarqué dans le dossier build/tmp/deploy/images/zybo-zynq7/. Nous utiliserons les fichiers suivants :

Fichier Rôle
uImage Le noyau Linux
zynq-zybo.dtb Un fichier device tree qui décrit la plate-forme matérielle pour le noyau Linux
core-image-minimal-zybo-zynq7.cpio.gz.u-boot Le système de fichiers, qui sera monté en RAM
u-boot.elf Le programme d’amorçage (bootloader) U-Boot

Dans la configuration que nous avons choisie ici, U-Boot va charger en RAM le noyau Linux, le fichier device tree et le système de fichiers, puis démarrer Linux.

Pour démarrer le composant Zynq, U-Boot n’est pas suffisant. Nous devons construire un fichier boot.bin de la manière suivante :

Construction du programme d’amorçage

Pour le composant Zynq, le programme d’amorçage se présente sour la forme d’un fichier boot.bin qui se compose de trois parties :

Le FSBL réalise les opérations suivantes :

  1. Initialiser le processeur en respectant la configuration du bloc ZYNQ processing system effectuée dans Vivado.
  2. Charger le bitstream dans le FPGA.
  3. Exécuter le Second Stage Bootloader.

Pour créer le fichier boot.bin, revenez dans le terminal où vous avez lancé Vivado, et exécutez les commandes suivantes :

xsdk -batch -source scripts/fsbl.tcl zybo-minimal zybo_minimal_design
bootgen -w -image scripts/zybo-minimal.bif -o fpga/zybo-minimal/boot.bin

La première commande compile le FSBL. La seconde construit le fichier boot.bin.

Vous devrez refaire ces deux opérations à chaque changement de configuration du composant ZYNQ processing system dans Vivado.

Vous devrez exécuter la commande bootgen seule lorsque l’une de ces situations se présente :

Préparer une carte microSD

Utilisez une carte microSD dont la première partition est au format FAT32. Copiez les fichier suivants sur la carte :

Démarrer le système d’exploitation

  1. Vérifiez que l’interrupteur d’alimentation de la carte Zybo est en position OFF.
  2. Vérifiez que le cavalier à droite de l’interrupteur est sur la position USB.
  3. Vérifiez que le cavalier JP5 est sur la position SD.
  4. Insérez la carte microSD dans le lecteur situé sous la carte Zybo.
  5. Connectez la carte ZYBO à un port USB de votre PC.
  6. Mettez l’interrupteur d’alimentation en position ON.

Dans un premier temps, nous accéderons à l’invite de commande du shell à travers un terminal sur port série.

  1. Ouvrez le terminal pour port série gtkterm.
  2. Dans le menu Configuration, choisissez Port.
  3. Indiquez le périphérique à utiliser : ttyUSB1.
  4. Indiquez la vitesse de communication (Baud rate) : 115200.
  5. Validez.
  6. Dans le terminal série, connectez-vous au shell de la carte Zybo en indiquant le nom d’utilisateur « root », sans mot de passe.

Accéder aux GPIO depuis le shell

Sur la carte Zybo, les programmes peek et poke permettent de lire et écrire des données à des adresses de votre choix.

Cette commande allume les voyants 0 et 2 :

poke 0x41200000 0x5

Cette commande affiche l’état des boutons :

peek 0x41210000

Vous pouvez même utiliser la commande watch pour exécuter la commande peek de façon répétitive toutes les secondes (pressez Ctrl-C pour terminer) :

watch -n 1 peek 0x41210000