Speicher auf PCI-Karte auslesen.



  • Hallo

    ich hab eine PCI-Karte, und möchte Daten aus einem Register auslesen (Adresse: EC000000)

    Jetzt hab ich versucht mit c und Visual Studio mithilfe eines Zeigers die Adresse auszulesen. Allerdings hab ich damit so meine Probleme.

    int *Zeiger;
    int Wert;
    
    Zeiger = (int*)0xEC000000;
    
    Wert = *Zeiger;
    

    Leider funktioniert das nicht, die Zeigervariable hat keinen Inhalt. Kann mir jemand weiterhelfen?
    Ist es überhaupt möglich einen Zeiger auf eine Adresse auserhalb des Hauptspeichers zu setzten?



  • Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Klar hat die Variable einen Inhalt - aber es ist fraglich, ob der mit deinem Register übereinstimmt (bzw. du überhaupt Leseberechtigung auf diese Adresse hast). Was passiert denn exakt, wenn du das Programm startest?



  • Unter was für einem OS (falls überhaupt) soll es denn laufen?
    Bei Windows z.B. brauchts dazu Treiber.

    Gruss Simon



  • simon.gysi schrieb:

    Bei Windows z.B. brauchts dazu Treiber.

    es geht auch ohne treiber, dazu sind allerdings ein paar tricks nötig.
    1. --> http://wookey.org/usermodehardwareportio.html
    2. einen 'fake-treiber' installieren der nichts macht, nur damit die karte im system angemeldet wird und ihr ein I/O bereich zugeteilt wird.
    nachteil: interrupt-behandlung ist so nicht möglich, aber es geht ja auch oft ohne.
    🙂



  • Danke für den Hinweis.
    Gehen tut vieles, aber ist es der geeigete Weg?
    simon



  • simon.gysi schrieb:

    Danke für den Hinweis.
    Gehen tut vieles, aber ist es der geeigete Weg?
    simon

    für experimente ist es manchmal einfacher so.
    🙂



  • Soll unter Win XP funktionieren.

    Ich hab einen sog. Fake Treiber installiert. Hab ich ich mir durch ein Softwaretool (Driver Wizzard von jungo) generieren koennnen. Mit diesem tool kann ich dann auch den Memorybereich der Karte auslesen.

    Will aber mit den Daten weiterarbeiten also brauch ich ein eigenes c Programm.
    Aber wenn ich mir den Inhalt des Zeigers im Debuggmodus ansehe steht nur, undefinierter Wert drin also kein Inhalt.

    Ich will nur die Adresse auslesen das kann doch nicht so ein gro-er Aufwand sein oder!



  • kommt drauf an schrieb:

    simon.gysi schrieb:

    Danke für den Hinweis.
    Gehen tut vieles, aber ist es der geeigete Weg?
    simon

    für experimente ist es manchmal einfacher so.
    🙂

    Stimmt... :-))



  • Soll unter Win XP funktionieren.

    Ich hab einen sog. Fake Treiber installiert. Hab ich ich mir durch ein Softwaretool (Driver Wizzard von jungo) generieren koennnen. Mit diesem tool kann ich dann auch den Memorybereich der Karte auslesen.

    Will aber mit den Daten weiterarbeiten also brauch ich ein eigenes c Programm.
    Aber wenn ich mir den Inhalt des Zeigers im Debuggmodus ansehe steht nur, undefinierter Wert drin also kein Inhalt.

    Ich will nur die Adresse auslesen das kann doch nicht so ein gro-er Aufwand sein oder!



  • Hi,

    wer beschreibt denn den Speicher ? Vielleicht hilft volatile.
    Etwas mehr Info wär nicht schlecht ...

    🕶


Log in to reply