Changes between Version 16 and Version 17 of Archi-1-TP9
- Timestamp:
- Nov 15, 2020, 7:25:06 PM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP9
v16 v17 10 10 11 11 12 La séance est découpé en 5 étapes. Dans cette présentation, pour chaque étape, nous donnons une brève description, suivie d'une liste des objectifs principaux et d'une liste des fichiers présents. 12 La séance est découpé en 5 étapes. Dans cette présentation, pour chaque étape, nous donnons une brève description, suivie d'une liste des objectifs principaux et d'une liste des fichiers présents. Un bref commentaire est ajouté pour les fichiers. 13 13 14 14 [#hello_boot 1. hello_boot]:: \\ … … 24 24 25 25 **Fichiers** 26 {{{ 27 1_hello_boot 28 ├── hcpu.S : code dépendant du cpu matériel en assembleur 29 ├── kernel.ld : ldscript décrivant l'espace d'adressage pour l'éditeur de lien 30 └── Makefile : description des actions possibles sur le code : compilation, exécution, nettoyage, etc. 31 }}} 32 26 33 27 34 [#kinit_asm 2. kinit_asm]:: \\ 28 35 Dans le deuxième programme, nous restons en assembleur, mais nous avons deux fichiers source : (1) le fichier contenant 29 le code de boot et (2) le fichier contenant le code du noyau. Ici, le code du noyau c'est juste une fonction `kinit()`. 30 Cette étape permet de voir comment saute d'un fichier à l'autre. Il utilise aussi une version plus complète du fichier 31 `ldscript` du kernel. 36 le code de boot et (2) le fichier contenant le code du noyau. Ici, le code du noyau c'est juste une ''fonction'' `kinit()`. Ce n'est pas vraiment une fonction car on n'utilise pas la pile. 32 37 \\\\ 33 38 **Objectifs** 34 - S 39 - Savoir comment le programme de boot fait pour sauter à l'adresse de la routine kinit. 40 - Savoir un fichier kernel.ld un peu plus complet. 41 42 **Fichiers** 43 {{{ 44 2_init_asm/ 45 ├── hcpu.S : code dépendant du cpu matériel en assembleur 46 ├── kernel.ld : ldscript décrivant l'espace d'adressage pour l'éditeur de lien 47 ├── kinit.S : fichier contenant le code de démarrage du noyau, ici c'est une routine kinit. 48 └── Makefile : description des actions possibles sur le code : compilation, exécution, nettoyage, etc. 49 }}} 50 35 51 36 52 [#kinit_c 3. kinit_c]:: \\ 37 53 Dans ce troisième programme, nous faisons la même chose que pour le deuxième mais `kinit()` est désormais écrit en 38 langage C. Cela change peu t de chose, sauf une chose importante `kinit()` est une fonction et donc il faut absolument54 langage C. Cela change peu de choses, sauf une chose importante `kinit()` est une fonction et donc il faut absolument 39 55 une pile d'exécution. 40 56 \\\\ 41 57 **Objectifs** 42 - S 58 - Savoir comment et où déclarer la pile d'exécution du noyau. 59 - Savoir comment afficher un caractère sur un terminal depuis un programme C. 60 61 **Fichiers** 62 {{{ 63 3_init_c/ 64 ├── hcpu.S : code dépendant du cpu matériel en assembleur 65 ├── kernel.ld : ldscript décrivant l'espace d'adressage pour l'éditeur de lien 66 ├── kinit.c : fichier en C contenant le code de démarrage du noyau, ici c'est la fonction kinit(). 67 └── Makefile : description des actions possibles sur le code : compilation, exécution, nettoyage, etc. 68 }}} 43 69 44 70 [#nttys 4. nttys]:: \\ … … 48 74 \\\\ 49 75 **Objectifs** 50 - S 76 - Savoir comment compiler un programme C avec du code conditionnel. 77 - Comment décrire en C l'ensemble des registre d'un contrôleur de périphérique et y accéder. 78 79 **Fichiers** 80 {{{ 81 4_nttys/ 82 ├── hcpu.S : code dépendant du cpu matériel en assembleur 83 ├── kernel.ld : ldscript décrivant l'espace d'adressage pour l'éditeur de lien 84 ├── kinit.c : fichier en C contenant le code de démarrage du noyau, ici c'est la fonction kinit(). 85 └── Makefile : description des actions possibles sur le code : compilation, exécution, nettoyage, etc. 86 }}} 51 87 52 88 [#driver 5. driver]:: 89 90 **Fichiers** 91 {{{ 92 }}} 53 93 54 94