254 | | On souhaite modéliser une architecture structurée en quatre clusters presque identiques, |
255 | | Chaque cluster contiendra un processeur MIPS32 (avec son contrôleur de cache), un composant ICU, un contrôleur TTY, un TIMER et une mémoire RAM. |
| 254 | On souhaite modéliser une architecture structurée en quatre clusters. |
| 255 | Chaque cluster contiendra un processeur MIPS32 (avec son contrôleur de cache), une mémoire RAM, et un ou deux contrôleurs de périphériques: |
| 256 | * Le cluster 0 contient le contrôleur de disque IOC. |
| 257 | * Le cluster 1 contient le contrôleur DMA et et le contrôleur d'interruptions ICU. |
| 258 | * Le cluster 2 contient le contrôleur d'écran graphique FBF et le contrôleur de timers TIM. |
| 259 | * Le cluster 3 contient la ROM de boot et le contrôleur TTY. |
266 | | Pour ce qui concerne les interruptions: |
267 | | * Dans chaque cluster (i), la ligne d'interruption du TIMER sera connectée à l'entrée IRQ_IN[0] du composant ICU[i]. |
268 | | * Dans chaque cluster (i), la ligne d'interruptiondu TTY sera connectée à l'entrée IRQ_IN[1] du composant ICU[i]. |
269 | | * La ligne d'interruption du contrôleur IOC sera connectée à l'entrée IRQ_IN[2] du composant ICU[0]. |
270 | | * La ligne d'interruption du contrôleur DMA sera connectée à l'entrée IRQ_IN[3] du composant ICU[1]. |
271 | | |
272 | | On définit 25 segments pour cette plate-forme : |
273 | | |
274 | | * 4 segments '''seg_icu_i''' associés aux 4 composants ICU[i], |
275 | | * 4 segments '''seg_tty_i''' associés aux 4 composants TTY[i] |
276 | | * 4 segments '''seg_tim_i''' associés aux 4 composants TIMER[i] |
277 | | * 4 segments '''seg_stack_i''' pour les 4 piles d'exécution des 4 processeurs |
278 | | * 1 segment '''seg_reset''' pour le code de RESET à l'adresse imposée 0xBFC00000 |
| 268 | Pour ce qui concerne les interruptions: |
| 269 | * Les 4 lignes d'interruption du périphérique TIM seront connectée aux entrées IRQ_IN[3:0] du composant ICU. |
| 270 | * Les 4 lignes d'interruption du périphérique DMA seront connectée aux entrées IRQ_IN[7:4] du composant ICU. |
| 271 | * Les 4 lignes d'interruption du périphérique TTY seront connectée aux entrées IRQ_IN[11:8] du composant ICU. |
| 272 | * La ligne d'interruption du périphérique IOC sera connectée à l'entrée IRQ_IN[12] du composant ICU. |
| 273 | |
| 274 | On définit les segments suivants pour cette plate-forme : |
| 275 | |
| 276 | |
| 277 | |
| 278 | * 1 segment '''seg_rom''' pour le code de RESET à l'adresse imposée 0xBFC00000 |
280 | | * 1 segment '''seg_kdata''' pour les données cachables du système d'exploitation. |
281 | | * 1 segment '''seg_kunc''' pour les données non-cachables du système d'exploitation. |
282 | | * 1 segment '''seg_text''' pour le code des programmes utilisateur |
283 | | * 1 segment '''seg_data''' pour les données globale des programmes utilisateur |
284 | | * 1 segment '''seg_fbf''' associé au frame buffer |
285 | | * 1 segment '''seg_ioc''' associé au contrôleur de disque |
286 | | * 1 segment '''seg_dma''' associé au contrôleur DMA |
| 280 | * 1 segment '''seg_kdata''' pour les données cachables du système d'exploitation, dans la zone protégée. |
| 281 | * 1 segment '''seg_kunc''' pour les données non-cachables du système d'exploitation, dans la zone protégée. |
| 282 | * 1 segment '''seg_text''' pour le code des programmes utilisateur, dans la zone non protégée. |
| 283 | * 1 segment '''seg_data''' pour les données globale des programmes utilisateur, dans la zone non protégée. |
| 284 | * 4 segments '''seg_stack_i''' pour les 4 piles d'exécution de 4 tâches, dans la zone non protégée (une pile par cluster. |
| 285 | * 1 segment '''seg_fbf''' associé au frame buffer, dans la zone protégée. |
| 286 | * 1 segment '''seg_ioc''' associé au contrôleur de disque, dans la zone protégée. |
| 287 | * 1 segment '''seg_dma''' associé au contrôleur DMA, dans la zone protégée. |
| 288 | * 1 segment '''seg_icu''' associé au composant ICU, dans la zone protégée. |
| 289 | * 1 segment '''seg_tty''' associé au composant TTY, dans la zone protégée. |
| 290 | * 1 segment '''seg_tim''' associé au composant TIM, dans la zone protégée. |