Forum: PC-Programmierung Mit Mikrokontroller auf BIOS zugreiffen


von Spartaner (Gast)


Lesenswert?

Guten Tag

Für ein Programm, welches ich gerne schreiben möchte, bräuchte ich Daten 
aus dem Bios. Wie machen das die Programme, wie Speed-Fan? Ich kenne 
mich da noch so gar nicht aus. Bisher habe ich mich nur mit Programme 
beschäftigt, bei denen ich die ganze Schaltung (also auch die Sensoren) 
auf einer Experimentierplatine hatte.
Eine andere Idee, die ich hatte wäre ein vorhandenes Programm auf seinen 
Code zu entschlüsseln...

Wie bringe ich die Auslastung und die Temperatur einer CPU also auf 
einen externen Bildschirm?

Dankeschön und Grüsse

: Verschoben durch User
von Christian (Gast)


Lesenswert?

Hallo,

direkt aus dem "Bios" bekommst du das auch nicht mit sinnvollem Aufwand 
heraus. Der einfachere Weg ist, ein PC-Programm zu schreiben, welches 
das Betriebssystem über entsprechende Funktionsaufrufe einfach nach den 
interessierenden Parametern fragt. Das Programm bereitet die Daten 
entsprechend auf und sendet sie über eine Schnittstelle deiner Wahl 
(USB, RS232, ... ) an den Mikrocontroller. Der macht dann nicht sehr 
viel mehr, als die Daten nochmal zu verwursten und auf dem Display 
auszugeben.

Viele Grüße
Christian

von Planlos (Gast)


Lesenswert?

Spartaner schrieb:
> Wie bringe ich die Auslastung und die Temperatur einer CPU also auf
> einen externen Bildschirm?

Fertige Software verwenden.
Beispiele:
LCDsmartie (windows)
LCD4Linux, LCDproc (Linux)

Vorteil: Damit geht dann gleich viel mehr als nur CPU-Last und 
Temperatur. z.B. aktueller Musiktitel aus Winamp, oder Benachrichtigung 
bei eingehenden Mails, oder, oder, oder ....

Die PC-Software kann dann entweder per Plugin o.Ä. an deine Hardware 
angepasst werden, oder (einfacher) die Hardware an die PC-Software.
(Google: LCDsmartie+Arduino+LCD für Beispiele)

von Martin (Gast)


Lesenswert?

für speedfan gibt es addons die die Daten zB auf einem externen LCD 
Display ausgeben

von Embedded (Gast)


Lesenswert?

Planlos schrieb:
> Winamp

In welchem Jahrtausend bist du denn stecken geblieben? ;)

von c.m. (Gast)


Lesenswert?

Spartaner schrieb:
> Für ein Programm, welches ich gerne schreiben möchte, bräuchte ich Daten
> aus dem Bios.
> Wie bringe ich die Auslastung und die Temperatur einer CPU also auf
> einen externen Bildschirm?

du brauchst keine daten aus dem bios, sondern daten aus den 
überwachungssensoren deines mainboard (für temperatur, lüfterdrehzahl).
die CPU-auslastung kann man hardwareseitig garnicht abfragen (afaik), 
das sind werte die aus dem scheduler des kernels kommen.

das bios macht im endeffekt nichts anderes: die bausteine abfragen. das 
problem ist, das es einen bunten zoo von sensorchips gibt (siehe z.b. 
lm-sensors treiber module), auch bekannt als "das schöne an standards 
ist, das man so viele davon haben kann".

solltest du trotzem ein eigenes programm schreiben wollen, würde ich den 
umgekehrten kommunikationsweg vorschlagen: das programm pollt die werte 
aus dem system, und überträgt sie (seriell, besser usb) an den µC.

von Planlos (Gast)


Lesenswert?

Embedded schrieb:
> Planlos schrieb:
>> Winamp
>
> In welchem Jahrtausend bist du denn stecken geblieben

Müsste so 1998 gewesen sein, als ich von Windows (MSDN-Abo, NT3.5, 
NT3.51, NT4, ...) auf Unix (Solaris, Irix, SCO (brrr), Linux) als 
Primär-Betriebssystem umgestiegen (worden) bin.
Damals war der Winamp aktuell, und der einzige Player der auch auf einem 
486DX2-66 einigermaßen "stotterfrei" lief.

Also: Ja, Windows-Mäßig stecke ich mit einem Bein noch im vorherigem 
Jahrtausend.

von Sparteaner (Gast)


Lesenswert?

Erstmals Danke für die vielen Antworten.

c.m. schrieb:
> bunten zoo von sensorchips

Ist man langsam nicht bestrebt, alle Sensoren in den Prozessor selbst zu 
integrieren? Ich war der Meinung, die Temperaturmessung der CPU war 
ursprünglich unter ihm auf der Hauptplatine angeordnet und nun befindet 
sich eine Schaltung mit einer Diode zur Temperaturmessung in der CPU 
selbst.

c.m. schrieb:
> solltest du trotzem ein eigenes programm schreiben wollen, würde ich den
> umgekehrten kommunikationsweg vorschlagen: das programm pollt die werte
> aus dem system, und überträgt sie (seriell, besser usb) an den µC.

Diesen weg wollte ich ursprünglich gehen, aber ich weiss nicht, wie ich 
meinem Programm sagen soll, wo es die Daten herholen soll (BUS-Abfrage)?
Die Idee von LCDSmartie find ich ganz toll, aber ich hätte es halt gerne 
selber geschrieben :-)

Martin schrieb:
> für speedfan gibt es addons die die Daten zB auf einem externen LCD
> Display ausgeben


Wie heisst das Addon denn?

Grüsse

von Sparteaner (Gast)


Lesenswert?

Planlos schrieb:
> Embedded schrieb:
>> Planlos schrieb:
>>> Winamp
>>
>> In welchem Jahrtausend bist du denn stecken geblieben

Als ich herausfand, dass es Simpsons/Futurama oder Family-Guy im 24h 
online Stream auf Winamp gab, hab ich mich in das Teil verliebt!!! Die 
Sendungs-Loops laufen bestimmt auch heute noch!

von Philipp L. (philipp_l89)


Lesenswert?

Sparteaner schrieb:
> Planlos schrieb:
>> Embedded schrieb:
>>> Planlos schrieb:
>>>> Winamp
>>>
>>> In welchem Jahrtausend bist du denn stecken geblieben
>
> Als ich herausfand, dass es Simpsons/Futurama oder Family-Guy im 24h
> online Stream auf Winamp gab, hab ich mich in das Teil verliebt!!! Die
> Sendungs-Loops laufen bestimmt auch heute noch!

Ich hab es vorletzte Woche nicht mehr gefunden - hab mal den alten 
"Werkstattrechner" hochgefahren und in der WinAmp Playlist den Link zum 
Family Guy & American Dad Channel gesehen...war leider offline. =/

von X2 (Gast)


Lesenswert?

Sparteaner schrieb:
> Ist man langsam nicht bestrebt, alle Sensoren in den Prozessor selbst zu
> integrieren? Ich war der Meinung, die Temperaturmessung der CPU war
> ursprünglich unter ihm auf der Hauptplatine angeordnet und nun befindet
> sich eine Schaltung mit einer Diode zur Temperaturmessung in der CPU
> selbst.

Vor ein paar Jahren war im Prozessor eine Diode, die jedoch extern 
ausgewertet wurde. Mittlerweile ist der Sensor digital und in der CPU.

Es gibt jedoch meist noch viele andere Sensoren, da die CPU ja nicht das 
einzige Bauteil in einem Rechner ist...

Um das DTS auszulesen musst du das richtige MSR finden (so macht das 
denk ich Speedfan) und dieses auswerten. Aber Vorsicht, der Inhalt des 
Registers gibt keine absolute Temperatur zurück, sondern die Differenz 
zu Tjmax.

von Rolf M. (rmagnus)


Lesenswert?

Sparteaner schrieb:
> Ist man langsam nicht bestrebt, alle Sensoren in den Prozessor selbst zu
> integrieren? Ich war der Meinung, die Temperaturmessung der CPU war
> ursprünglich unter ihm auf der Hauptplatine angeordnet und nun befindet
> sich eine Schaltung mit einer Diode zur Temperaturmessung in der CPU
> selbst.

Das wäre dann ein Sensor, nicht alle. Wie soll die Temperatur des 
Chipsatzes, des Speichers, der Festplatte, der Spannungswandler, die 
Drehzahl der Lüfter oder das Spannungsniveau der 12V- und 5V-Ausgänge 
des Netzteils im Prozessor gemessen werden?

von api oderr nicht (Gast)


Lesenswert?

Was nun Männer? Gibt es ein BIOS API für die Sensoren oder kocht jeder 
Boardhersteller sein eigenes geheimes Süppchen?

von X2 (Gast)


Lesenswert?

api oderr nicht schrieb:
> Was nun Männer? Gibt es ein BIOS API für die Sensoren oder kocht jeder
> Boardhersteller sein eigenes geheimes Süppchen?

Teilweise, wenn implementiert gibts ein paar über ACPI.

Für den Embedded Controller gibts keinen Standard. Falls es eine SuperIO 
gibt und daran die Sensoren/Lüfter angeschlossen sind, ist es evtl. 
möglich die Daten direkt auszulesen.

von Spartaner (Gast)


Lesenswert?

X2 schrieb:
> Um das DTS auszulesen musst du das richtige MSR finden (so macht das
> denk ich Speedfan) und dieses auswerten. Aber Vorsicht, der Inhalt des
> Registers gibt keine absolute Temperatur zurück, sondern die Differenz
> zu Tjmax.

Irgendwie raucht mir gerade ein bisschen der Kopf. Was ist MSR? 
Registry? Was bedeutet das `j`?
Gut die Werte müsste ich dann umschlüsseln so dass es später in der 
LCD-Anzeige stimmt.
Wäre es möglich, die Temperaturwerte direkt aus der Software SpeedFan 
zu entnehmen und diese in den Mikrokontroller zu übertragen?

von Planlos (Gast)


Lesenswert?

MSR:
https://en.wikipedia.org/wiki/Model-specific_register

Welches MSR nun Temperatur enthält und wie diese Codiert ist, ist je 
nach CPU-Generation, Hersteller usw. natürlich anders. Wenn's nicht nur 
auf deinem Rechner laufen soll: Viel Spaβ :)

Speedfan-Plugin ist möglich und viel, viel einfacher, weil da jemand 
anderes schon die ganze Arbeit gemacht hat.

Das oben genannte LCDsmartie hat z.B. ein solches Speedfan-Plugin.

LCDsmartie auf uC und uC auf LCD gäb es ja auch schon fertig.

d.H. such dir den Teil der Kette

Hardware - Speedfan - LCDsmartie - uC - LCD

raus, den du nicht fix-und-fertig verwenden willst, sondern selber bauen 
magst, und tu das.

von X2 (Gast)


Lesenswert?

Planlos schrieb:
> Speedfan-Plugin ist möglich und viel, viel einfacher, weil da jemand
> anderes schon die ganze Arbeit gemacht hat.

Aber er wollte es doch selber programmieren ;-)

von Le X. (lex_91)


Lesenswert?

Gibts das unter Linux nicht alles in irgendwelchen device-files bereits 
fertig aufbereitet?

Ein schnelles googeln hat folgendes ergeben:
http://ti-omap.blogspot.de/2013/05/cpu-board-temp.html

Aber keine Ahnung ob die Werte brauchbar sind und ob man damit alle 
Sensoren erschlagen kann.

von bluppdidupp (Gast)


Lesenswert?

Unter Windows könnten die gewünschten Daten ggf. über WMI abrufbar sein 
(CPU-Temp z.B. wird bei einigen Mainboard über ACPI bereitgestellt, 
ansonsten ist man quasi genötigt selbst einen Treiber für die 
wichtigsten Temperatur-Sensoren zu schreiben wie es z.B. speedfan tut)

Mit dem WMI Code Creator kann man da einfach mal rumspielen:
https://www.microsoft.com/en-us/download/details.aspx?id=8572
http://wutils.com/wmi/root/wmi/msacpi_thermalzonetemperature/
http://wutils.com/wmi/root/wmi/processorperformance/

von hrool (Gast)


Lesenswert?

Hallo Spartaner,

ein anderes Stichwort wäre "SMBus".

Vielleicht magst Du Dir ja mal HWMonitor von cpuid.com anschauen. 
Zumindest sieht man, was harwareübergreifend möglich ist. Für etwas Geld 
kann man da auch ein API kaufen.

Beste Grüße

hrool

von Draco (Gast)


Lesenswert?

So als kleiner Google Tipp und von Windows eine Stufe runter in Richtung 
Hardware zu kommen:

WinRing0

von Fruchtig-fleischige Flugtomate (Gast)


Lesenswert?

Du kannst auch mal hier schauen:
http://openhardwaremonitor.org/

Entweder mal im Sourcecode nachsehen und/oder die DLL benutzen. Das 
Auslesen der Temperatur(en) klappt komischerweise meist nur mit 
erweiterten Rechten bzw. Adminrechten (liegt aber nicht an dieser 
Bibliothek). Ob es bei dir damit generell funktioniert, kannst du auch 
erst einmal mit
http://www.cputhermometer.com/
ausprobieren (verwendet auch Open Hardware Monitor).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.