diff --git a/README.md b/README.md index c8cbeb53..50a6e5fc 100644 --- a/README.md +++ b/README.md @@ -21,3 +21,4 @@ Several exercises are available : * GNU/Linux System Programming * Embedded system with RPI3 * Usefool Tools (autotools, docker, git, ...) +My new fix diff --git a/TPs/TP1.txt b/TPs/TP1.txt new file mode 100644 index 00000000..af395211 --- /dev/null +++ b/TPs/TP1.txt @@ -0,0 +1,17 @@ +1. Un makefile est un fichier avec des paramètres qui permettent de compiler un code. Make va lire les makefiles et compiler le code source pour construire un code binaire exécutable. + +2. On utilise gcc ici. + +3. Une librairie partagée est un code source disponible à tout le monde, standardisé, associée aux programmes lorsqu'ils sont exécutes. Elle est chargée une fois et peut être utilisée par plusieurs programmes. + +4. Exemple de commandes qu'on peut utiliser : + +$ touch mycode.c +$ echo "#include " >> mycode.c +$ echo 'int main () {printf("Hello World !"); return 0;}' >> mycode.c +$ gcc mycode.c + +5. Le programme créé par les commandes précédentes utilise déjà des librairies partagées. On peut les repérer avec la commande +$ ldd "nom du binaire" + + diff --git a/TPs/TP2.txt b/TPs/TP2.txt new file mode 100644 index 00000000..d3954393 --- /dev/null +++ b/TPs/TP2.txt @@ -0,0 +1,20 @@ +Exercice 1 + +1. On a un message d'erreur : Segmentation fault (core dumped). Le code demande surement trop d'espace memoire et un signal d'arret a ete envoye + +2. Certainement le message RLIMIT_CORE + +3. L'erreur semble venir de la fonction __GI__IO_puts du fichier ioputs.c puisque c'est la derniere instruction qui a ete effectuee + +4. Une bibliotheque partagee est manquante + +5. Elle essaie de trouver les dépendances aux librairies et de les localiser + +6. On peut simplement modifier la variable LD_LIBRARY_PATH pour qu'elle donne le bon chemin vers les librairies + +7. La différence semble etre est la taille du pas pour passer les lignes de code (s fait des increments plus petits que n) + +8. Dans le cas d'un systeme embarque ne disposant pas d'un ecran pour pouvoir lire les messages, par exemple + + + diff --git a/TPs/TP3.txt b/TPs/TP3.txt new file mode 100644 index 00000000..ac6f7736 --- /dev/null +++ b/TPs/TP3.txt @@ -0,0 +1,34 @@ +1. Le fichier configs/embsys_defconfig permet de configurer Buildroot, qui décrit alors quelles fonctionnalités vont être utilisées. Il est au format KConfig. Meme chose pour le fichier busybox.config. +Le fichier users.tables permet de définir les utilisateurs et leurs droits d'accès par Buildroot. D'après la doc Buildroot, la syntaxe utilisée est "Makeusers syntax". + +2. Le fichier a utiliser est le configs/raspberrypi3_defconfig + +3. Il contient la liste des packages intallés. La plupart des packages contiennent un fichier Config.in propre à chaque package, un fichier .hash avec le package compressé, et un fichier .mk en Shell. + +4. Cette commande compile toutes les options utilisées par Buildroot. + +5. +Architecture matérielle cible : CPU +CPU ciblé : ARM (little endian) +ABI : EABIhf -> gestion des flottant, le "hf" précise que le modèle support le "Hard floating point model" +Librairie C : uClibc-ng +Version du cross-compilateur : Buildroot 2017.08 toolchain +Version du kernel : 4.9.x + +6. Oui il sera compilé puisque le BR2_PACKAGE_OPENSSH est défini sur y + +7. C'est un environnement d'outils. La commande compile et ouvre le menu configuration de busybox. On peut changer les paramètres de busybox et choisir ou non d'activer les outils disponibles. + +8. Il contient les fichiers relatifs à la chaine de cross compilation. Il correspond au binaire du compilateur qu'on utilise. + +9. Elle donne les informations sur la distribution, etc + +10. La distribution a changé. On ne peut pas executer ce binaire, puisque la distribution utilisée pour compiler n'est pas compatible avec la notre. + +11. Il contient les images iso du Kernel. rootfs.tar est une archive contenant les fichiers RFS, et sdcard.img une image de la carte SD. + +12. +zImage: Linux kernel ARM boot executable zImage (little-endian) +sdcard.img: DOS/MBR boot sector; partition 1 : ID=0xc, active, start-CHS (0x0,0,2), end-CHS (0x4,20,17), startsector 1, 65536 sectors; partition 2 : ID=0x83, start-CHS (0x4,20,18), end-CHS (0x1d,146,54), startsector 65537, 409600 sectors + +13. Le répertoire /tmp/rootfs contient l'architecture qu'on retrouvera telle quelle sur la RPi. diff --git a/TPs/TP5.txt b/TPs/TP5.txt new file mode 100644 index 00000000..189d5a83 --- /dev/null +++ b/TPs/TP5.txt @@ -0,0 +1,15 @@ +1. Il y a 2 partitions sur la carte SD + +2. Ce sont les GPIO15 et 14 + +3. Baudrate : 115200 +On peut trouver les infos dans la partition de 34MB, en ouvrant le fichier cmdline.txt. + +On a pu se connecter avec le login user et le mot de passe user1* + +4. On a du reboot la carte pour avoir une IP +Après avoir utilisé ifconfig on trouve l'IP : 192.168.1.74 + +5. On peut se connecter en user mais on ne peut pas effectuer toutes les commandes. Par exemple, la commande 'ls' ne renvoit rien. En revanche, la commande 'ping Google.fr' renvoie des informations. +On ne peut pas se connecter en ssh avec root. +