Seite 1 von 1

PCI-Karte schreiben und lesen

Verfasst: 10.05.2017 15:55
von gbalzarek
Hallo,

ich habe eine PCI-Karte für die ich eine PB-Software zur Ansteuerung geschrieben habe.
Das funktionierte bisher immer anstandslos (PB5.44, winXP und Win7 32-Bit).

Jetzt habe ich einen Rechner, der eine Fehlermeldung liefert: Invalid memory access (read error at address 0)

Ich habe da Versuche gemacht. Im einen Rechner funktioniert alles, im anderen kommt der Fehler.
So einen Effekt hatte ich früher zu DOS-Zeiten auch schon mal. Da lag es daran, dass neue Rechner plötzlich eine andere PCI-Bus-Nummer nutzten. Das habe ich hier jetzt mal geprüft und es ist so, dass in dem Rechner in dem alles funktioniert PCI-Bus 0 benutzt wird, in dem anderen, in dem es nicht funktioniert, wird PCI-Bus 1 benutzt.
Leider habe ich keinen Zugriff auf den Sourcecode des sys-Treibers.
Die aktuelle PB-Version habe ich auch getestet, da gibt es keine Änderung.

Hat hier jemand dieses Problem schon mal gelöst und kann mir Tipps geben?

Hier im Forum gibt es einen anderen Thread (PCI-Bus suchen), der wohl ein ähnliches Problem behandelt. Das will ich die Tage mal checken.

Re: PCI-Karte schreiben und lesen

Verfasst: 10.05.2017 17:02
von NicTheQuick
Das sind viel zu wenige Informationen um damit etwas anfangen zu können. Ich wüsste nicht mal, was ich jetzt googeln könnte um die helfen zu können.

Geht's etwas genauer?

Re: PCI-Karte schreiben und lesen

Verfasst: 10.05.2017 18:15
von DarkDragon

Re: PCI-Karte schreiben und lesen

Verfasst: 11.05.2017 15:07
von gbalzarek
Ja, das Thema ist komplex.

Ich bekomme die Basisadresse eines IO-Bereichs auf der PCI-Karte aus der Registry. Dort ist die Karte eingetragen. Die Daten schreibe und lese ich mit Funktionen, die sich in einer DLL befinden, sowas wie z.B. antwort=init(basisadresse).

Mein Verdacht hinsichtlich des DOS-Programms hat sich nicht bestätigt. Die korrigierte Version liefert die richtige Basisadresse und damit ist die Karte ansteuerbar. Das habe ich auf dem "Problemrechner" getestet.

Somit scheint der sys-Treiber die Wurzel des Übels zu sein, denn mein PB-Programm ist korrekt, meine DLL ist korrekt, meine DOS-Software auch.

Die Programmroutine aus dem anderen Thread werde ich auch noch testen, obwohl ich nicht glaube, dass das den Fehler behebt.