PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SMBus auslesen?



BoMbY
05.10.2004, 12:13
Hallo,

ich suche eine Möglichkeit (unter Windows XP) die auf Mainboards vorhandenen Temperatursensoren per SMBus auszulesen, so wie es ja mittlerweile viele Tools machen.

Ein wenig Beispielcode würde mir vermutlich schon weiterhelfen. Leider werde ich über meine üblichen Quellen nicht fündig.

Ich wäre für jede Info dankbar ...

Gruß,
BoMbY

i_hasser
05.10.2004, 18:45
Der SMBus ist über ein paar IO-Ports erreichbar, allerdings brauchst du noch Treiber für die einzelnen Sensorchips.
Wie das ganz genau funktioniert kann ich dir aber auch net sagen, schau dir am besten mal den Source vom Linux SMBus Treiber an, das kommt auch aufs Board an (der nforce2 hat zum Bleistift einen etwas anderen SMBus).

PuckPoltergeist
05.10.2004, 22:48
Original geschrieben von intel_hasser
schau dir am besten mal den Source vom Linux SMBus Treiber an,

Das wird nicht funktionieren. Unter Linux greifen die Treiber direkt auf die Hardware zu, was Windows normalerweise verweigern müßte.

i_hasser
06.10.2004, 06:07
Ja, aber dafür gibts ja Treiber wie PortIO die einen den Zugriff auf so ziemlich alles ermöglichen (und auch unter Windoofs können Treiber PortIOs ausführen ;)).

Die 'großen' Programme wie MBM oder Speedfan machen das auch net anders, weil das der einfachste Weg ist um schnell neue Hardware zu implementieren und der SMBus ist auch nicht irgendein extrem kompliziertes Stück Technik.

PuckPoltergeist
06.10.2004, 07:26
Original geschrieben von intel_hasser
Ja, aber dafür gibts ja Treiber wie PortIO die einen den Zugriff auf so ziemlich alles ermöglichen (und auch unter Windoofs können Treiber PortIOs ausführen ;)).

Unter Linux wird das aber über MMIO gemacht, AFAIK. Ist also nicht wirklich eine gute Vorlage.

i_hasser
06.10.2004, 07:34
Du meinst, dass eine oder mehere Pages abgestellt werden die bei einem Zugriff eine Exception auslösen die abgefangen wird?

Hmm... wäre ziemlich aufwändig und der Sinn erschließt sich mir nicht so ganz. MMIO ist eigentlich per Hardware und nicht per Software realisiert, also ein Gerät wofür auch immer trägt sich irgendwo im physikalischen Speicher ein und fängt da alle Speicherzugriffe auf den eigenen Bereich ab und interpretiert das wie IO Zugriffe auf bestimmte Ports.

Klar, das OS könnte sowas auch emulieren... nur erschließt sich mir der Sinn nicht ;).

...


Hab mal nachgeguckt. Also im nforce2 Treiber (i2c-nforce2.c) stehen die Ports ausgehend vom Basisport des SMB Controller drinnen, und den bekommt man schlimmstenfalls per Gerätemanager raus.

Aber wie gesagt, es gibt haufenweise verschiedene SMB Controller und man müsste eigentlich für jeden einen Treiber implementieren.

Das Problem ist, dass Speedfan und MBM kein OpenSource sind - da hängen zuviele NDA Spezifikationen drinnen.

BoMbY
07.10.2004, 10:03
Danke erstmal.

Ich bin aber auch noch auf ein paar interessante Infos gestoßen. Zum einen die Seite http://www.smbus.org auf der einige interessate PDFs sind, mit Zugriffsinfo für deren standard SMBbus und SMB-Windows-Treiber. Außerdem habe ich noch gelesen das im WindowsXP DDK ein SMBbus-Treiber von Microsoft enthalten ist, den werde ich mir auch mal ansehen. Mit ein bisschen Glück halten sich auch andere Hersteller an diese Standards und ich kann darüber irgendwas erreichen.

Gruß,
BoMbY