Werte ASUS P4BGL-MX

  • Hi,


    nach vielen booten habe ich folgendes für mein neues Board herausbekommen:
    (erst mal die Boarddaten)


    /* Detection information:
    { asustek_computer_inc_p4bgl_, "asustek_computer_inc_p4bgl_", "ASUSTeK C
    omputer INC.", "P4BGL-MX", "REV 1.xx", "Award Software, Inc.", "ASUS P4BGL-MX AC
    PI BIOS Revision 1006", "02/27/2003" },


    Das Datum steht in 0x4C um eine Stelle verrückt also 11011111 für 15ter.
    Das Lowbit ist für wakeup enabled (1) oder disabled (0).


    Die Zeit steht in 0x68, 0x69, 0x6A allerdings BCD kodiert.


    guess wirft folgendes aus:
    void asustek_computer_inc_p4bgl_(struct biosinfo *b)
    {
    b->addr_stat = 0x4C /* but differs somewhere else */;
    b->addr_date = 0x4C /* but differs somewhere else */;
    b->shift_date = 1
    b->rtc_hour = 0x68;
    b->rtc_min = 0x69;
    b->rtc_sec = 0x6A;
    b->addr_chk_h = 0x6B
    b->addr_chk_l = 0x6C
    }


    Leider läßt sich das nicht maken. Wenn ich b->rtc_time=On setze läuft das
    maken komplett durch, leider werden die werte dann aber nicht ins nvram geschrieben.
    Kann mir jemand hier weiterhelfen????
    Vermute dass rtc durch addr zu ersetzen ist, nur muß es noch BCD kodiert werden - leider weiß ich noch nicht wie??????? ;(


    thnx a lot

    Andi


    (Celeron-1,8GHz ASUS P4BGL 256MB eisfair vdr incl. router)

  • so habe mal ein wenig experimentiert ->
    wenn ich rtc durch addr ersetze und mir "sinnvolle" zeiten berechne (d.h.
    das Ergebnis ist automatisch in BCD kodiert -sprich kleiner 9) und
    mittels nvram-wakeup in nvram reinschreibe, stehen fast die richtigen ergebnisse
    im Bios. Hatte auf 0Uhr heute nacht hochgerechnet und da stand bei der Std. 'ne 2 drin - aber das kann ich auch noch irgendwann klären (lassen).


    Jetzt bräuchte ich nur noch jemanden, der mir sagt wie ich std, min, und sec
    in BCD kodiere und nvram "umpatchen" kann..........

    Andi


    (Celeron-1,8GHz ASUS P4BGL 256MB eisfair vdr incl. router)

  • Zitat

    Original von A_n_d_r_e


    Die Zeit steht in 0x68, 0x69, 0x6A allerdings BCD kodiert.


    versuch mal bcd=on.



    nach shift_date und nach addr_chk_* fehlt am Ende jeweils ein Semikolon.

  • supiiii funktioniert --- fast!!


    das Problem ist jetzt, daß das Datum auch bcd kodiert ist und das sollte nicht sein!!!


    void asustek_computer_inc_p4bgl_(struct biosinfo *b)
    {
    b->addr_stat = 0x4C /* but differs somewhere else */;
    b->addr_date = 0x4C /* but differs somewhere else */;
    b->shift_date = 1;
    b->bcd=ON;
    b->addr_hour = 0x68;
    b->addr_min = 0x69;
    b->addr_sec = 0x6A;
    b->addr_chk_h = 0x6B;
    b->addr_chk_l = 0x6C;
    }


    haste noch einen Tipp für mich?? merci

    Andi


    (Celeron-1,8GHz ASUS P4BGL 256MB eisfair vdr incl. router)


  • nicht direkt aus dem Aermel, aber du kannst in Zeilen 521 und 522 von nvram-wakeup.c TOBCD und FROMBCD entfernen. nach Neukompillieren sollte es funktionieren.

  • So habe mal einige Änderungen in der nvram-wakup.c vorgenommen.
    Neben den 2 Zeilen habe ich überall wo addr_date vorkommt die BCD
    Umwandlung weggenommen (bei plausibilitätsprüfung etc).


    Hier nochmal die Datei (nur für ASUS P4BGL!):


    (übrigens das erste mal, daß ich für Linux C-code ins Netz stelle!!!! Nach 3 Monaten Linuxerfahrung - so
    kanns gehen!)

  • Zitat

    Original von A_n_d_r_e
    So habe mal einige Änderungen in der nvram-wakup.c vorgenommen.
    Neben den 2 Zeilen habe ich überall wo addr_date vorkommt die BCD
    Umwandlung weggenommen (bei plausibilitätsprüfung etc).


    aehm, genau. Da habe ich wohl geschlafen :sleep



    Zitat

    Hier nochmal die Datei (nur für ASUS P4BGL!): ...


    ich nehme an, dass es damit geht. richtig?

  • Zitat

    Original von A_n_d_r_e


    Code
    void asustek_computer_inc_p4bgl_(struct biosinfo *b)
    {
            ...
            b->bcd=ON;
            ...
    }


    noch eine kleine Korrektur: Diese Zeile sollte durch

    Code
    BCD(b);


    ersetzt werden, da sonst ein paar nr_* nicht stimmen.

  • Hi,


    bisher hat alles funktioniert!
    Werde aber mal noch testen, wenn ich b->bcd=ON durch BCD(b)
    ersetzte, ob es immer noch geht.....nur heute nicht mehr!
    bye

    Andi


    (Celeron-1,8GHz ASUS P4BGL 256MB eisfair vdr incl. router)

  • BCD(b) funktioniert nicht (kommt irgendwie der 38. Tag raus oder so......)
    -bin auch leider nicht mehr so tief im programmieren drin;



    aber soweit mal danke für die hilfe

    Andi


    (Celeron-1,8GHz ASUS P4BGL 256MB eisfair vdr incl. router)

  • Zitat

    Original von A_n_d_r_e
    BCD(b) funktioniert nicht (kommt irgendwie der 38. Tag raus oder so......)


    aehm.. genau. Bei dir ist das Datum nicht in BCD. Also:



    Das Problem ist das Folgende: Ein Wert in BCD braucht mehr bits als der gleiche Wert nicht in BCD.
    BCD(b) setzt bcd auf ON und setzt alle Werte nr_* auf die entsprechenden BCD-Laengen.
    nr_date muss man zuruecksetzen.


    Wenn du statt BCD(b) nur bcd=ON verwendest, hast du das gleiche Problem mit den
    Zeit-Werten. z.B. wuerdest du Minute statt 50 nur 10 bekommen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!