Programmation FPGA depuis Linux avec FPGA Manager
Introduction
Les FPGA (Field-Programmable Gate Arrays) sont des circuits intégrés reprogrammables offrant une grande flexibilité pour diverses applications. Pour programmer ces dispositifs, des fichiers spécifiques sont utilisés : les fichiers BIT et BIN. Ce guide vous explique comment générer un fichier BIN à partir d'un fichier BIT et l'utiliser pour programmer votre FPGA en utilisant l'outil FPGA Manager sous Linux.
Les fichiers nécéssaires pour la programmation FPGA
Qu'est-ce qu'un Bitstream ?
Un bitstream est un fichier qui contient les informations nécessaires pour configurer un FPGA. Il détermine comment les ressources logiques et les interconnexions du FPGA doivent être programmées pour effectuer des tâches spécifiques. Les bitstreams peuvent être générés à l'aide d'outils de conception FPGA comme Vivado.
Différences entre Fichiers BIT et BIN
Caractéristique | Fichiers BIT (Bitstream) | Fichiers BIN |
---|---|---|
Contenu | Inclut les informations nécessaires pour programmer les ressources logiques et les interconnexions du FPGA. | Versions binaires du bitstream de configuration. Compatibles avec les outils de gestion FPGA sous Linux. |
Génération | Générés par des outils de synthèse et de placement/routage comme Vivado . |
Générés à partir des fichiers BIT en utilisant l'outil bootgen . |
Pourquoi utiliser un fichier BIN ?
Les fichiers BIN sont utilisés pour charger les bitstreams dans les FPGA depuis un environnement Linux. Ils sont compatibles avec les outils de gestion FPGA comme FPGA Manager. Il n'est pas possible de charger directement un fichier BIT dans un FPGA depuis Linux.
Génération d'un Fichier BIN à partir d'un Fichier BIT
bootgen est un outil fourni par Xilinx qui permet de générer des fichiers BIN à partir de fichiers BIF (Boot Image Format). L'outil est fourni avec Vitis de base et n'est pas disponible directement en open-source. Il se situe généralement dans le dossier d'installation de Vitis, par exemple avec la version 2023.1 Vitis/2023.1/bin/
.
Pour générer un fichier BIN à partir d'un fichier BIT, nommé ici project.bit
, suivez ces étapes :
-
Créez un fichier de configuration BIF nommé
project.bif
dans le même répertoire que votre fichierproject.bit
avec le contenu suivant :project.bifall: { project.bit /* Nom du fichier Bitstream */ }
Plus d'informations sur le format BIF sont disponibles dans la documentation Xilinx.
-
Utilisez la commande
bootgen
, situé par exemple avec la version 2023.1 dansVitis/2023.1/bin/
, pour générer le fichier BIN dans le même répertoire que le BIF :bootgen -image project.bif -arch zynq -process_bitstream bin
NE PAS UTILISER VIVADO !
Vivado génère des fichiers BIN qui ne sont pas compatibles avec le chargement du FPGA depuis Linux. Pour générer un fichier BIN compatible, utilisez bootgen
.
Paramètres -> Bitstream -> -bin_file : activer
Le fichier sera généré dans proj_name/proj_name.runs/impl_1
ne sera pas compatible avec le chargement du FPGA depuis Linux.
l'utilisation de bootgen
est nécessaire pour générer un fichier BIN compatible.
FPGA Manager
Introduction à FPGA Manager
FPGA Manager est une interface du noyau Linux qui permet de charger et de gérer les bitstreams des FPGA. Il simplifie l'interaction avec le FPGA en exposant des fichiers virtuels à travers le système de fichiers Linux, ce qui facilite la reconfiguration et la mise à jour des FPGA.
Composants Principaux du FPGA Manager
-
flags : Ce fichier permet de définir des options pour le chargement du bitstream. Par exemple, définir la valeur à
0
pour indiquer un bitstream complet.Plus d'informations sur les types de bitstreams fournies par le support xilinx
-
firmware : Ce fichier est utilisé pour spécifier le nom du bitstream à charger. Le bitstream doit être placé dans le répertoire
/lib/firmware
.
Activation du FPGA Manager
Avant de pouvoir utiliser FPGA Manager, vous devez vous assurer qu'il est activé dans votre configuration PetaLinux. Suivez les étapes détaillées dans le guide PetaLinux Tools Documentation: Reference Guide (UG1144) pour activer FPGA Manager pour les dispositifs Zynq-7000 et Zynq UltraScale MPSoC.
Mise à Jour du FPGA depuis Linux
Suivez les étapes ci-dessous pour mettre à jour le FPGA en utilisant FPGA Manager. (source)
-
Connectez-vous en tant qu'utilisateur root :
sudo -i
-
Définissez les flags pour le Bitstream complet :
echo 0 > /sys/class/fpga_manager/fpga0/flags
-
Chargez le Bitstream dans le PL :
mkdir -p /lib/firmware cp project.bit.bin /lib/firmware/ echo project.bit.bin > /sys/class/fpga_manager/fpga0/firmware
-
Félicitations, le FPGA a été mis à jour avec succès !
-
Préparation du Device Tree Overlay (DTO)
Assurez-vous que votre DTO est correctement configuré pour votre projet. La configuration et compilation d'un DTO est détaillée dans la section Les Devices Tree.
Vous devez avoir un fichier
.dtbo
prêt à être utilisé pour configurer le FPGA. -
Chargement du DTO et Programmation du FPGA
-
Connectez-vous en tant qu'utilisateur root :
sudo -i
-
Définissez les flags pour le Bitstream complet :
echo 0 > /sys/class/fpga_manager/fpga0/flags
-
Copiez le Bitstream et le DTBO dans le répertoire
/lib/firmware
:mkdir -p /lib/firmware cp project.bit.bin /lib/firmware/project.bit.bin cp pl.dtbo /lib/firmware/
-
Appliquez le DTBO :
mkdir /configfs mount -t configfs configfs /configfs cd /configfs/device-tree/overlays/ mkdir full echo -n "pl.dtbo" > full/path
Remarque
Lorsque vous appliquez un DTBO, le FPGA est automatiquement programmé avec le bitstream spécifié dans le DTO.
-
Félicitations, votre FPGA a été mis à jour avec succès en utilisant un DTO !
Suppression du DTBO
Pour supprimer le DTBO :
cd /configfs/device-tree/overlays/ rmdir full
-