Étape 3: Installation de Linux sur le globe
Il est temps de mettre en place de Linux sur le processeur ARM de la Zynq. Pour des raisons pratiques, nous voulons que le système soit sur une carte micro SD. Cette étape doit se terminer sur un système d’exploitation basé sur Linux.
Pour cette étape, vous aurez besoin du chargeur de démarrage première étape et le bitstream globe compilés à l’étape 1.
Mais avant de commencer, nous allons donner quelques explications.
Le bitstream que vous avez compilé contient la configutaion de la logique programmable de la Zynq. Comme nous voulons utiliser le processeur ARM du système de traitement de le Zynq, nous devons également configurer qu’à lancer un système d’exploitation basé sur Linux lors du démarrage. Le chargeur de démarrage première étape sera le premier programme exécuté et initialisera les ressources du processeur (horloges et mémoire) afin qu’un plus grand chargeur de démarrage peut être chargé. Ce bootloader et plus grand est le U-Boot, il est responsable du chargement et exécution du noyau Linux. Le noyau Linux devra son système de fichiers pour travailler. Par souci de simplicité, ce système de fichiers sera chargé sur la RAM de la Zynq.
Pour compiler les U-Boot, télécharger les sources sur github en utilisant les commandes suivantes :
- git clone https://github.com/Xilinx/u-boot-xlnx.git
- git checkout e2d21cedaa70356fa2f45729d9401933c9c0cfd4
- Entrez le dossier de U-Boot et tapez :
- faire zynq_zybo_defconfig
- faire
Pour compiler le noyau linux, téléchargez d’abord les sources :
- git clone https://github.com/Xilinx/linux-xlnx.git
- git checkout 7ad8e6023d969336961312ef751228cbb8874752
- Avant de compiler, vous aurez besoin de remplacer le fichier .config par le fichier linux-config. Après, vous tapez les commandes suivantes :
- faire menuconfig
- faire
- Après avoir tapé la première commande, vous frappez ESC pour quitter la configuration du noyau. L’exécution de la deuxième commande prendra quelques minutes.
Pour générer l’initramfs (image compressée du système de fichiers Linux), vous devez "BuildRoot" :
- git clone git://git.buildroot.net/buildroot
- git checkout b8a8ecd43b81fc2fda90ce24be8914a074fa5fd5
- Vous devez remplacer le fichier busybox-config de celle donnée. Vous devez également remplacer le fichier .config par le fichier "BuildRoot"-config donné. Ce nouveau fichier .config doit être modifié qu’ils correspondent à votre environnement. Ces deux lignes doivent être changées :
- BR2_TOOLCHAIN_EXTERNAL_PATH = « / opt/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux / »
- BR2_PACKAGE_BUSYBOX_CONFIG = « / home/orcad/UVF12B501/Zybo/buildroot/busybox-config »
- Pour la première ligne, entrez le chemin du dossier contenant le bras cross compilateur.
- Pour la deuxième ligne, entrez le chemin menant au fichier du dossier "BuildRoot" busybox-config.
- Puis, vous tapez « faire ».
Cette partie est facultative. Il permettra aux Linux monter vos applications et les pilotes et les configurer automatiquement.
- Vous allez dans le dossier "BuildRoot", vous entrez dans le dossier de /target/, vous devriez voir le système de fichier généré.
- Vous pouvez modifier le fichier etc/init.d/rcS et ajouter ces quelques lignes à la fin :
- mount/dev/mmcblk0p2/MNT
- source /mnt/load.sh
- Puis vous tapez « make » encore une fois, vos modifications seront être tenues compte.
Maintenant, nous allons générer les fichiers de démarrage. Vous aurez besoin Télécharger le fichier Makefile-bootgen et le renommer dans Makefile. Dans le même dossier, vous allez télécharger les fichiers zynq-zybo.dts et bootimage.bif. Copiez le FSBL dans votre répertoire de travail et renommez-le en zynq_fsbl.elf. Copiez le fichier de u-boot de votre répertoire de u-boot et le renommer en boot.elf-u. Copiez le fichier zImage de votre dossier de linux de git (arch/bras/boot/zImage). Copiez le ramfs depuis votre répertoire "BuildRoot" (c’est output/images/rootfs.cpio.uboot) et renommez-le en uramdisk.image.gz. Après, vous lancez la génération de fichiers de démarrage avec un « make ». Puis vous ont juste renommer le output.bin fichier dans BOOT.bin et uImage.bin en uImage.