92 | | * `tp3_mono_top.cpp` : top-cell d'une architecture simple à deux composants (fichier incomplet) |
| 92 | * `tp3_top.cpp` : top-cell d'une architecture simple à deux composants (fichier incomplet) |
| 93 | * `tp3_segmentation.h` : définition des adresses de base et des longueurs des segments. |
| 94 | |
| 95 | == 5.1 Segmentation de l'espace adressable == |
| 96 | |
| 97 | Cette architecture nécessite la définition de 6 segments: |
| 98 | * '''seg_lcd''' est le segment associé au coprocesseur LCD. On prendra pour adresse de base la valeur 0xD0000000. La longueur de 16 octets correspond aux quatre registres adressables de ce composant. |
| 99 | * '''seg_tty''' est le segment associé au contrôleur de terinaux TTY. On prendra pour adresse de base la valeur 0xC0000000, et pour longueur 64 octets, ce qui permet d'adresser jusqu'à 4 terminaux indépendants (consulter la spécification fonctionnelle du composant VciMultiTty). |
| 100 | * '''seg_reset''' est le segment contenant contient le code de ''boot'' exécuté à la mise sous tension. Il est évidemment assigné à la ROM. L'adresse de base 0xBFC00000 est imposée par la spécification du processeur MIPS32. On choisira une capacité de stockage de 4Koctets. |
| 101 | * '''seg_giet''' est le segment contenant le code du Gestionnaire d'Interruptions, Exceptions, et Trappes (GIET). Il est assigné à la RAM. L'adresse de base 0x80000000 est imposée par la spécification du processeur MIPS32. On choisira une capacité de stockage de 4 Koctets. |
| 102 | * '''seg_code''' est le segment contenant le code de l'application logicielle embarquée. Il est assigné à la RAM. On choisira pour adresse de base la valeur 0x00400000, et une capacité de stockage de 16 Koctets. |
| 103 | * '''seg_data''' est le segment contenant les données globales et la pile d'exécution de l'application logicielle embarquée. Il est assigné à la RAM. On choisira pour adresse de base la valeur 0x10000000, et une capacité de stockage de 64 Koctets. |
| 104 | |
| 105 | Contrairement à ce que nous avons fait dans le TP2, on ne définit pas les caractéristiques des segments (adresse de base et longueur) |
| 106 | directement dans le fichier '''tp3_top.cpp'', car ces valeurs ne sont plus utilisées par le matériel (par l'intermédiaire de la MappingTable), |
| 107 | mais aussi par le logiciel embarqué (qui a besoin des adresses de base des différents périphériques). |
| 108 | On définit donc ces valeurs dans un séparé fichier ''tp3_segmentation.h'', qui sera inclus dans tous les fichiers qui ont besoin de cette information. |
| 109 | |
| 110 | Compêtez le fichier ''tp3_segmentation.h''. |