Ist eine Kollision zwischen I/O-Bereich und Speicherbereich möglich?

Gast #4303921
Lesenswert?
• ▲
▼
>Speziell interessiert mich das für Bausteine am ISA-Bus unter x86
ISA hat extra Leitungen für IO Operationen: /IOR /IOW
Für Speicher hat es /MEMR und /MEMW
Da kann nichts kollidieren außer man will es und baut seine ISA Karte 
halt so, daß der Adressdecoder bestimmte bereiche überlappen läßt.
OP (Firma: G.) #4303991
Lesenswert?
• ▲
▼
Aha, danke für die Antworten.
Bei vielen Mikrocontrollern gilt ja Speicherraum = I/O-Raum; da liegen 
Speicheradressbereiche und Portbereiche nebeneinander.

Nun bin ich bei der Fehlersuche zu einem PC/104-Board, bei dem einiges 
am ISA-Bus im gleichen Bereich ist wie ein "PCI Express Root Complex" in 
der Memory MAP (im Manual zu dem Board).
Gast #4304644
Lesenswert?
• ▲
▼
Die Intel-PC-Linie hat schon von Anfang an eigene Select-Leitungen für 
Speicher- und Peripheriezugriffe.

Schon zu Zeiten von 8080 oder Z80 und früher war das Usus. Ist ja auch 
logisch, da diese im Allgemeinen auch andere Zugriffsregeln und Zeiten 
haben. Am Anfang ging es darum den Speicher maximal schnell 
anzusprechen, wobei die externen Bausteine schon bald nicht mehr 
mithalten konnten. Schon sehr bald wurde das feiner Graduiert, um ja 
nach Adresse unterschiedliche Zugriffszeiten etablieren zu können. Am 
Anfang waren das RAM (schnell) und EPROM (langsam).

Natürlich hatten beide auch "eigene" Adressräume. Also widersprachen 
sich die Speicheradresse 0 und die Peripherieadresse 0 nicht.
#4304652
Lesenswert?
• ▲
▼
Max D. schrieb:
> Es gibt Milliarden verschiedener Systeme, irgendeines wird schon
> kollidieren....

OT aber lustig:
Ein Aldi-PC von ~08 wurde mir mit der Fehlerbeschreibung "Keine Töne" 
überantwortet. Als letztes wurde "nichts gemacht" - außer einem 
RAM-Upgrade, wie ich später erfuhr.

RAM voll (4 GB): Soundchip nicht ansprechbar. Mit drei oder zwei GB 
gings.
Ich tippte hier zumindest auf ein Addressierungsproblem.

Ich habe (zu meiner Schande gestanden) eine ganze Weile gesucht.
Gast #4304729
Lesenswert?
• ▲
▼
Augenblick mal -- unter ISA war das doch ein furchtbares Kuddelmuddel.

Die Karten hatten doch für Daten, und auch Befehle, Speicher in den 
Bereich A0000 - FFFFF eingeblendet. Daneben gab es Programme, die in den 
ungenutzten ISA-Bereich Hauptspeicher für TSRs einblendeten. Ergebniss 
waren abstruse Fehler, bei denen die Daten nur im Prozessorcache, aber 
nicht auf der Karte landeten...

Wenn du dich damit wieder beschäftigen musst... Mein herzliches Beileid!
Gast #4304739
Lesenswert?
• ▲
▼
>RAM voll (4 GB): Soundchip nicht ansprechbar. Mit drei oder zwei GB
>gings.
>Ich tippte hier zumindest auf ein Addressierungsproblem.

Wahrscheinlich wurde eine ältere Karte verwendet, die, als sie gebaut 
wurde, niemals von 4GByte geträumt hatte. Um die schnellen 
Speicherzugriffsmöglichkeiten zu nutzen - schneller als I/O - hat diese 
ihren eigenen Speicher, für den Treiber sichtbar, in den damals 
"ungenutzten" Speicherbereich, oberhalb von 3GByte, eingeblendet.
Aus diesem Grunde gehe ich auch nicht von einer Speicher <-> 
I/O-Kollision aus, sondern von einer Speicher <-> 
Speicher-Doppelbelegung.
Gast #4304820
Lesenswert?
• ▲
▼
Rolf F. schrieb:
> Nun bin ich bei der Fehlersuche zu einem PC/104-Board, bei dem einiges
> am ISA-Bus im gleichen Bereich ist wie ein "PCI Express Root Complex" in
> der Memory MAP (im Manual zu dem Board).

Kann man da nicht im BIOS bestimmte Bereiche ausblenden?
Was für ein BS läuft da?
Mindestens unter DOS/W98 konnte das per Initialisierung gemacht werden.
#4304874
Lesenswert?
• ▲
▼
Aber 2008 gab es schon laaaange das Plug&Play-Konzept, das mit PCI 
eingeführt wurde. Da wird die Startadresse der PCI-Karten erst vom Bios 
anhand aller benötigten MemIO-Bereiche ausgewürfelt und der Karte via 
Config-Space in den Basis-Adress-Registern (BAR*) mitgeteilt. 
Normalerweise ändert sich dieses Mapping bei unveränderter Peripherie 
auch nicht, wenn sich die RAM-Grösse ändert. Das Bios versucht schon 
generell, das "von hinten" her aufzubauen, sodass immer möglichst viel 
RAM übrigbleibt.

Ich habe eher den Verdacht, dass der Treiber ein Problem damit hat, dass 
die DMA-Adressen >2GB sein können. Wenn der Programmierer gepennt hat, 
wird das als negativ und damit evtl. als Fehler bei der 
DMA-Bereich-Allozierung interpretiert.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.