Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ Several exercises are available :
* GNU/Linux System Programming
* Embedded system with RPI3
* Usefool Tools (autotools, docker, git, ...)
My new fix
17 changes: 17 additions & 0 deletions TPs/TP1.txt
Original file line number Diff line number Diff line change
@@ -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 <stdio.h>" >> 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"


20 changes: 20 additions & 0 deletions TPs/TP2.txt
Original file line number Diff line number Diff line change
@@ -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



34 changes: 34 additions & 0 deletions TPs/TP3.txt
Original file line number Diff line number Diff line change
@@ -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.
15 changes: 15 additions & 0 deletions TPs/TP5.txt
Original file line number Diff line number Diff line change
@@ -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.