Faible niveau d'accès d'e/S à l'aide de outb et inb

je vais avoir du mal à comprendre comment les interruptions de travail.

le code ci-dessous initialiser le Contrôleur d'interruptions Programmable

  #define PIC0_CTRL 0x20    /* Master PIC control register address. */
  #define PIC0_DATA 0x21    /* Master PIC data register address. */

  /* Mask all interrupts*/
  outb (PIC0_DATA, 0xff);

  /* Initialize master. */
  outb (PIC0_CTRL, 0x11); /* ICW1: single mode, edge triggered, expect ICW4. */
  outb (PIC0_DATA, 0x20); /* ICW2: line IR0...7 -> irq 0x20...0x27. */
  outb (PIC0_DATA, 0x04); /* ICW3: slave PIC on line IR2. */
  outb (PIC0_DATA, 0x01); /* ICW4: 8086 mode, normal EOI, non-buffered. */

  /* Unmask all interrupts. */
  outb (PIC0_DATA, 0x00);

quelqu'un peut m'expliquer comment cela fonctionne:

-le rôle de outb (je n'ai pas compris le linux homme)

-les adresses et leur signification

une autre question sans rapport,j'ai lu que outb et inb sont pour port-mapped I/O, peut-on utiliser memory-mapped I/o pour faire d'Entrée/sortie de la communication?

grâce.

Pour le matériel qui est contrôlé par mappés en mémoire IO (dont le PIC est pas), vous pouvez bien sûr le faire de mémoire mappée IO.
Le 8086 hérité de ces instructions de ses prédécesseurs, 8080 et 8085, où une e/S distincts de l'espace a été très utile afin de ne pas perdre l'un de l'64 ko d'espace d'adressage de mémoire.

OriginalL'auteur Amine Hajyoussef | 2012-01-22