Mappés en mémoire IO - comment est-il fait?

J'ai lu à propos de la différence entre le port mappé IO et mappé en mémoire d'e /s, mais je ne peux pas comprendre comment la mémoire mappée Io est mis en œuvre dans les systèmes d'exploitation modernes (windows ou linux)

Ce que je sais, c'est qu'une partie de la mémoire physique est réservé pour communiquer avec le matériel et il y a un MMIO Unité impliquée dans la prise en charge de la communication du bus et d'autres liés à la mémoire des trucs

Comment un pilote de communiquer avec le matériel sous-jacent? Quelles sont les fonctions que le conducteur peut utiliser? Sont les adresses pour communiquer avec une carte vidéo fixe ou est-il une sorte de "contrat" avant de les utiliser?

Je suis encore un peu confus

  • Avez-vous regardé Utilisation de la Mémoire des e/S et Mappage de la Mémoire et de la DMA?
  • Voyons voir si je l'ai eu(sous linux): 1) - je attribuer une mémoire IO région à l'adresse le matériel producteur m'a dit de 2) - je utiliser ioremap à le faire traduire à partir d'une adresse physique, les adresses virtuelles (si cela résout à la fois la segmentation et la pagination, je suppose) 3) j'utilise iowrite/ioread et similaire à lire et à écrire dans cette zone. Est-ce correct?
  • C'est exact, n'oubliez pas de gratuit pour allouer de la mémoire de la région après l'utilisation.
InformationsquelleAutor paulAl | 2012-03-11