Changes between Version 3 and Version 4 of TME2-2014


Ignore:
Timestamp:
Mar 4, 2010, 1:04:12 PM (14 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TME2-2014

    v3 v4  
    11{{{
    22#!html
    3 <h1>Le code en RAM et première interruption</h1>
     3<h1>Le bootloader</h1>
    44}}}
    55
     
    4444   Le bus système transfert en moyenne 2 octets par cycles, il est donc possible d'évaluer approximativement la fin de l'opération.
    4545 * Vous exécutez les codes `__do_init()` en notant la différence de date.
    46 
    47 == 4. Première interruption ==
    48 
    49 Il s'agit maintenant de commencer à traiter les interruptions. Nous allons seulement traiter les interruptions venant des TTY.
    50 Nous allons pour cela mettre un bout de code à l'adresse du point d'entrée du système (pour le mips32 c'est 0x80000180).
    51 Ce code va devoir analyser le registre de cause qui contient la raison pour laquelle le système est invoqué.
    52 Nous n'allons considérer que deux causes. Soit c'est une interruption, soit c'est autre chose.
    53 Dans le cas d'une interruption, nous sauvegarderons dans la pile courante, les registres temporaires avant d'appeler la fonction `__do_interrupt()`.
    54 Au retour de la fonction, les registres sont restaurés et on retourne au code interrompu.
    55 La fonction `__do_interrupt()` prendra comme paramètre, le numéro du CPU et le masque
    56 des interruptions (le second octet du registre cause).
    57 Son but est de déterminer quelle TTY a émis l'interruption, lire le caractère (ce qui acquitte l'interruption) et l'écrire sur l'écran. C'est un echo.
    58 Il faudra aussi modifier __do_init pour initialiser l'ICU.