Autor Thema: RTC mit QEMU  (Gelesen 5653 mal)

jo2105

  • Beiträge: 58
    • Profil anzeigen
Gespeichert
« am: 20. January 2013, 10:58 »
Tag Leute,

ich bin gerade dabei eine date()-Funktion, wie man das aus PHP kennt zu implementieren. Dabei ist mir aufgefallen, dass das Datum bei QEMU total falsch ist (zB haben wir laut QEMU das Jahr 2019). Außerdem werden die Sekunden bis 100 gezählt anstatt 60.
Ansonsten funktioniert das ganze eigentlich richtig, die Sekunden steigen auch im Sekundentakt usw.
Ich habe die QEMU Version 1.1.2 :) Ist das ein Bug oder gibt es da Einstellungsmöglichkeiten?

Grüße,
jo

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 20. January 2013, 11:49 »
Hi,

das CMOS verwendet standardmäßig den BCD-Code (gepackt). Das heißt, du musst die ausgelesenen Werte erst umrechnen, indem du die oberen 4 Bits durch 16 dividierst und mit 10 multiplizierst, und dann die unteren 4 Bits dazuaddierst. (x >> 4) * 10 + (x & 0xf) oder so.

Alternativ kannst du auch dein printf die Zahlen in Hexadezimaldarstellung ausgeben lassen (kprintf("%x:%x:%x", stunden, minuten, sekunden);).

Die 19 aus deiner 2019 ist zum Beispiel im CMOS als hexadezimal 0x13 abgelegt. Das ist der BCD-Code für 13 -> Jahr ist 2013.
« Letzte Änderung: 20. January 2013, 11:51 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

jo2105

  • Beiträge: 58
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 19. February 2013, 17:36 »
Ich merke gerade das ich meinen Post vor einem Monat nicht richtig abgeschickt habe. :D

Die Antwort hat mir sehr geholfen, jetzt stimmen alle Daten. Vielen Dank. :)

 

Einloggen