Added my progress

This commit is contained in:
2024-09-30 10:55:55 +02:00
parent 237a69130e
commit e3c6907bb3
2 changed files with 443 additions and 0 deletions
+249
View File
@@ -0,0 +1,249 @@
# Travail Pratique 2
## Bootloaders shinanegans
## Connection à la carte
On a un cable usb serie avec 4 couleurs
- Noir = Ground
- Rouge = +5v
- Blanc = RX
- Vert = TX
On trouve les ports à côté du port RJ45 de la carte quand on la tient avec le dit port sur la droite.
Après avoir branché le cable usb et en allant dans le dossier /dev de ma machine. Un 'ls' me permet de voir que le ttyUSB0 est bien apparu.
`tail /var/log/kern.log`
Je me suis rajouté dans le groupe dialout avec la commande
`usermod -a -G dialout $USER`
et
`su $USER`
Pour relancer un shell avec les privileges
pour me connecter en série à la carte on utilise picocom avec la commande :
`picocom --b 115200 /dev/ttyUSB0`
Et grâce à ca on se retrouve avec un invite de commandes
Pour sortir c'est `ctrl+a` et `ctrl + x`
Ensuite dans le répertoire des bootstraps je clone le répo de at91
`http://github.com/linux4sam/at91bootstrap`
Grâce à la commande `git tag`
On peut voir toutes les versions disponibles et ensuite avec
`git checkout v4.0.9`
On peut naviguer sur la version qui est demandée dans l'énoncé
Dans le répertoire configs on peut voir pleins de fichiers avec des noms à coucher dehors
## [Q1] Quel fichier de configuration avez vous choisi ?
Déja on sait que notre Board s'appelle Sama5d3... donc si on cherche parmis toutes les configs celles qui commencent par ce préfixe il n'en reste plus que 9
Parmis ces 9 on peut chercher les mots u-boot et on peut se rappeller que le mot clé Xplained nous intéresse et il ne reste plus que deux options.
Une version NF et une version SD. Je dirais que SD veut dire SD card et NF Nand flash
Comme c'est la nandflash qui nous intéresse je pense que le bon nom de config est le
`sama5d3_xplainednf_uboot_defconfig`
Depuis le repertoire at91bootsrap on peut executer
`make mrproper`
et ensuite on peut tenter un
`make sama5d3_xplainednf_uboot_defconfig`
Attention ne pas mettre /config/sama5d3... par ce que c'est pas le fichier que il veut c'est simplement son nom
On peut maintenant essayer
`make menuconfig`
Mais il manque des libs donc pour trouver la bonne j'ai utilisé
`apt-cache search ncurses | grep lib | grep dev`
Et une des lib s'appellait `libncurses-dev` et donc après un
`sudo apt install libncurses-dev`
la commande make menuconfig fonctionne !
Une fenêtre graphique s'ouvre et on peut naviguer dans les menus un peu comme dans un bios.
On doit verifier différentes informations.
1. La carte cible correspond à votre carte — LeCPU est à 528MHz
Pour trouver ces informations il faut aller sous `MPU PRODUCT` et la on a une liste de cpus et on peut voir notre modèle la SAMA5D3 qui est bien selectionnée.
Ensuite on va sous `CLOCK SIGNAL` -> `CPU clock` et on voit bien que l'option 528mhz est bien selectionnée.
2. Il y a bien 256MB de RAM
Pour ca j'ai pas trouvé honnêtement mais dans le menu `DRAM` -> `DRAM PARTS` je vois que la ram DDR2 est selectionnée et que c'est le seul champ qui porte le nom de notre carte SAMA5D3 et avec un identifiant MT47H64M16 x2 et honnêtement je sais pas complêtement ce que ca veut dire mais l'info doit être la...
3. “Next Software Type” est bien “U-Boot”
Pour ca on peut le voir directement depuis le menu principal avec un champ qui s'appelle `Next software type` et la on voit direct que c'est marqué U-BOOT mais on pourrait aussi choisir LINUX KERNEL ou Android par exemple.
4. A quelle adresse en NAND AT91Bootstrap trouvera U-Boot
Dans `U-BOOT STORAGE SETUP` on peut voir trois valeurs hexa qui donnent des infos.
L'addresse dans la ram ou on pourra trouver l'image de U-BOOT se trouve en `0x26F00000` C'est donc la que le bootloader de niveau 1 doit aller chercher les infos pour lancer U-BOOT complet de ce que j'ai compris.
5. Quelle est la taille maximale dU-Boot configurée dans AT91Bootstrap
On peut chopper cette info juste au dessus de l'addresse de U-BOOT. Ici c'est 0x000C0000. C'est pas la taille MAX mais la taille directement de l'image qui est exprimée en byte j'imagine et ca fait 786432 bytes ou 786kb ce qui parait cohérent.
## [Q2] A quelle adresse se trouve U-Boot en flash NAND et quelle est la taille maximale de celui-ci (donnez les tailles en hexadécimal et en base 10) ? (rappel : loutil qalc permet de réaliser des conversions de bases)
J'ai pas tout compris de cette question par rapport à la précédente. Je vais donc partir du principe que c'est une question redondante des deux précédentes par ce que je ne vois aucune autre infos à propos de U-BOOT que celles que j'ai déja notée plus haut.
## Compiler le bootloader
Avant de tenter une quelconque compilation il faut se rappeller que pour Cross Compile il faut changer certaines variables d'environnements pour que notre machine utilise le bon gcc linker etc...
On peut le faire en l'écrivant dans chaque commande mais c'est un coup à l'oublier. On va donc faire comme dans le cour.
On va ajouter dans notre -bashrc la variable d'environnement CROSS_COMPILE à arm-linux-
On édite notre fichier .bashrc et à la fin on ajoute
`export CROSS_COMPILE=arm-linux-`
On peut ensuite verifier que ca a marché en ouvrant un nouveau terminal et en faisant
`echo $CROSS_COMPILE` et en voyant que ca nous renvoie bien `linux-arm-`
Maintenant on devrait pouvoir compiler avec la commande `make`
Je me retrouve avec une erreur comme quoi il n'arrive pas à trouver mon gcc alors que je peux complêtement accèder à mon gcc depuis le repertoire du bootloader at91...
Après quelques recherches j'ai lu que il se pouvait que make n'utilise pas le bon shell et que donc le fichier .bashrc ne soit pas lu.
J'ai donc ajouté `SHELL := /bin/bash` tout en haut du MakeFile et j'ai ensuite pu compiler
A la fin de la compilation on a même quelques infos intéressantes :
```
[Succeeded] It's OK to fit into SRAM area
[Attention] The space left for stack is 110756 bytes
```
Le fichier binaire peut apparemment tenir dans notre SRAM et il reste encore un peu de place.
## [Q3] Dans quel répertoire se trouve le bootloader que vous venez de compiler, comment se nomme-t-il et quelle est sa taille ?
je suis remonté dans l'invite de commande pour voir si je pouvais trouver des indices et j'ai vu cette ligne
`Size of sama5d3-nandflashboot-uboot-4.0.9.bin is 20316 bytes`
J'ai ensuite été voir dans le répertoire `build/binairies` et avec ca j'ai pu retrouver notre fichier .bin pour avoir sa taille un petit `du -sh` et ca nous donne :
```
du -sh sama5d3-nandflashboot-uboot-4.0.9.bin
16K sama5d3-nandflashboot-uboot-4.0.9.bin
```
Le fichier .bin fait donc 16kb
## Configuration et compilation d'U-BOOT
Pour U-boot on va chercher les fichier à l'adresse "https://ftp.denx.de/pub/u-boot/"
Et on va choisir la version 2021.07 et comme il y a plusieurs liens et que je n'arrive pas à voir ce qui les différencient concrètement je vais prendre le premier qui se nomme `u-boot-2021.07-rc1.tar.bz2`
Après avoir copié et extrait l'archive dans le répertoire /bootloaders je peux passer à la suite.
Apparemment on devrait pouvoir configurer U-BOOT de la même manière que le bootloader at91...
Deja en essayant de faire un `make mrproper` le make me casse les couilles à cause du même problème que sur la At91 quand j'ai voulu compiler. J'ai pas eu ce problème si tôt sur la at91 par ce que je n'avais pas encore changé le .bashrc pour cross compile.
Après avoir changé le MakeFile comme avec le at91 j'ai pu faire le monsieur propre.
## [Q4] Quelle configuration U-Boot avez-vous utilisée ?
Dans le fichier config on peut en voir UN PAQUET !
Pour trouver celle qui m'intéresse `ls | grep sama5d3` ca nous donne deja pas mal moins d'options et avec un `ls | grep sama5d3_xplained` il ne nous reste que deux configs et comme dans l'énoncé il est indiqué que notre U-Boot va trainer dans la NAND alors on peut prendre la config `sama5d3_xplained_nandflash_defconfig`
Pour load la config on peut faire comme avec le bootloader et faire
`make sama5d3_xplained_nandflash_defconfig`
En faisant cette commande je me tape encore une erreur qui me dit que je n'ai pas BISON (wtf?)
du coup bah `sudo apt install bison` par ce mon linux m'a dit wallah
Encore une erreur cette fois c'est flex qu'il me manque... `sudo apt install flex`
La ca a l'air de marcher. Pas d'erreur même si il me dit que il a pas trouvé mon compilateur. Mais comme il n'indique pas d'erreur je vais faire comme si de rien n'était . Si ca se trouve c'est la facon dont j'ai modifi le makefile qui le fait geuler.
La on peut faire un `make menuconfig` pour verifier différentes choses comme précédemment.
## [Q5] Sur quel type de support de stockage est sauvegardé lenvironnement dU-Boot ?
Clairement ce menuconfig est plus fournis que pour le bootloader de niveau 1 et c'est beacoup plus dur de s'y retrouver.
Après genre 10min à me balader j'ai pu trouver que dans le menu `Environnement` on peut choisir dans quel environnement U-BOOT est sauvegardé. Et on peut voir que "ENVIRONNEMENT IN A NAND DEVICE" est selectionné. C'est donc bien en NAND que U-BOOT sera stocké pour que le bootloader de niveau 1 puisse venir le chercher.
## [Q6] A quelles adresses se trouvent lenvironnement et son backup ?
On a l'addresse de l'environnement qui est la suivante :
`0x140000`
Et une addresse vers un environnement redondant qui est donc celui de backup je pense qui est à
`0x100000`
## [Q7] Quelle est la taille de lenvironnement ?
Toujours dans le même menu ENVIRONNEMENT on peut voir que la taille de l'environnement est de
`0x20000`
Ou 131072 bytes ou juste un peu plus de 131kb
## Menu de boot