Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bios einstellen über Delphi (https://www.delphipraxis.net/115847-bios-einstellen-ueber-delphi.html)

Muetze1 19. Jun 2008 08:45

Re: Bios einstellen über Delphi
 
Zitat:

Zitat von Luckie
Wie auch immer, er müsste die Daten genauso wie es das BIOS erwartet in den EPROM schreiben. Das erste Problem dürfte sein, wie die Daten aussehen müssen und an welche Adresse sie geschrieben werden müssen. Das nächste dürfte sein dies über Windows zu realisieren. Da Windows Hardware Zugriffe nicht aus dem Usrmode erlaubt, müsste ein Treiber geschrieben werden, aber selbst dann ist es zweifelhaft, ob Windows überhaupt irgendwas zur Verfügung stellt, um auf den EPROM des BIOS zu zugreifen.

Ich vermute einfach mal, dass du den Teil in der Ausbildung noch nicht hattest, weil so ist das Mumpitz.

Das BIOS hatte früher einen CMOS Speicher auf der Platine, welche seine Einstellungen aufgenommen hatte (Portadresse 0x40 Adressselektion, Portadresse 0x41 Datenport). Dieser CMOS Speicher war durch eine onboard Pufferbatterie versorgt. Später hatte Dallas ihre RealtimeClocks recht erfolgreich vermarktet, da diese pinkompatibel waren zu den CMOS Schaltkreisen und die Batterie gleich mitbrachten.

Nun Reichen die 256 Speicherstellen nicht mehr aus und es würde das sogenannte NVRAM (non volatile RAM) eingeführt, welcher heutzutage direkt im Chipsatz liegt (genauso wie der BIOS Flash-Speicher, meist doppelt ausgelegt (DualBIOS) um die Auswirkungen von Flashfehlern zu verringern). Dieser NVRAM wird über eine Chipsatz Unterfunktion angesprochen und von daher findet man Adressen und Ports zum Zugang zum NVRAM in den Resourcen des Chipsatzes.

EPROM sind schon recht schnell in den 90'ern durch EEPROMs ersetzt worden und dann nochmals durch Flash Speicher, wo diese bezahlbar wurden (bzw. zur Massenware).

Zitat:

Zitat von hathor
NVRAM haben ALLE!

NVRAM ist eine Namenszusammenfassung für alle nichtflüchtigen Speicher und als Schlagwort für die Konfigurationsablage genutzt. Die damalige Kombination von CMOS und Pufferbatterie hätte man auch als NVRAM bezeichnen können, aber heutzutage steht dies eher auch als gleichbedeutend mit dem neuen Interface über den der Speicherbereich/Speicher angesprochen wird. Somit kann ich dir dort widersprechen: es haben nicht alle einen solchen Speicher - ab einem gewissen Baujahr und Entwicklungsstand bestimmt, aber alle älteren Mainboards sind davon ausgeschlossen.

Auch hat man für den Nachfolger des BIOS, dem EFI (Enhanced Firmware Interface), einen neuen Begriff gefunden und nennt es afaik nicht mehr NVRAM.

/EDIT: Rechtschreibfehler korrigiert.

hathor 19. Jun 2008 10:12

Re: Bios einstellen über Delphi
 
@Muetze1:

Kleine Korrektur:
Falsch: non violateable
Richtig: non volatile

Mehr Infos:
http://en.wikipedia.org/wiki/Non-volatile_memory

devidespe 19. Jun 2008 10:54

Re: Bios einstellen über Delphi
 
Im Prinzip kann jeder Mainboardhersteller die Belegung des NVRAM beliebig ändern, und man müsste eigentlich herausfinden, in welchen Bits/Bytes die Einstellungen gespeichert werden. Dafür bleibt nur die Try-Methode, also ein NVRAM-Speicherabbild erzeugen, die Optionen anpassen, und erneut ein Speicherabbild erzeugen bzw. die Ergebnisse vergleichen. Hier hilft Dir evtl. das Programm CMOSInfo (hier) bzw. dessen PDF-Anleitung. Grundsätzlich ist dieses Verfahren aber relativ mühselig und fehlerträchtig.

Falls Du ein Award-BIOS hast, könnte das Modbin6-Programm vielleicht helfen. Hierfür benötigtst Du neben dem eigentlichen Programm (welches übrigens nicht offiziell erhältlich ist, Google hilft aber) eine BIOS-BIN-Datei, die Du Dir entweder vom Mainboardhersteller herunterlädst oder mit der Backup-Option eines BIOS-Flash-Programms erstellst. Anschließend stellt Modbin6 den Inhalt des BIOS-Images dar, wozu mitunter auch die versteckten BIOS-Optionen gehören. Dort suchst Du die Option "Restore Restart at AC power loss" o.ä, und kannst Dir in den Eigenschaften anzeigen lassen, welche NVRAM-Register dazu verwendet werden.

Soweit ich aber weiß, erfolgen die NVRAM-Zugriffe über Ports, und die erfordern wiederum einen Gerätetreiber und Admin-Rechte. Der Aufwand ist also immens und nur für eine spezielle Gruppe von Zielrechnern erfolgreich. Solltest Du ein AMI- oder Phoenix-BIOS oder sogar EFI haben, sehen die Chancen proportional schlechter aus.

hathor 19. Jun 2008 11:31

Re: Bios einstellen über Delphi
 
SleepAndWakeUp

http://www.mirrorservice.org/sites/f...ll/aspower.zip

int asSleepAndWakeUpS(int n);
int asSleepAndWakeUp(int nDay,int nH,int nM,int nS);

First function have just one parameter, number of seconds. This will be time interval.
Another function will use more. You will set after what time interval you want PC to
wake UP. Remember, after you call this function, we create wait timer function and we
put PC to sleep. PC must have new motherboard with ACPI support.

----------------

int asOnlySetWakeUpTime(int nYear,
int nMonth,
int nDay,
int nHour,
int nMinute,
int nSecond);

This function will ONLY SET TIME when you want your PC to wake up. So, after
calling this function, you can continue working with your application, but put your PC to
sleep before this time. Please we don’t check these parameters, so YOU MUST provide
parameters checking. That moment of time MUST be after current time.

Codehunter 19. Jun 2008 15:58

Re: Bios einstellen über Delphi
 
NVRAM kenne ich aus dem Embedded-Linux-Bereich wo Bootloader, Kernel und Konfiguration in verschiedenen Bereichen des selben Flash-RAM liegen. Da gibts dann so Linux-Tools wie nvset und nvread. Aber das hat im Grunde nichts mit dem PC-BIOS zu tun.

RavenIV 19. Jun 2008 16:11

Re: Bios einstellen über Delphi
 
Ich hab da mal ein Code-Schnipsel aus dem nvram-wakeup unter Linux.
Vielleicht kannst Du damit was anfangen:

Code:

################################################
## Mainboard autodetection information:
##
## - Mainboard vendor: "MICRO-STAR INTERNATIONAL CO., LTD"
## - Mainboard type: "MS-6119 (i440BX)"
## - Mainboard revision: "1.X"
## - BIOS vendor: "Award Software International, Inc."
## - BIOS version: "4.51 PG"
## - BIOS release: "08/21/00"

addr_stat = 0x46
addr_day = 0x47
addr_hour = 0x48
addr_min = 0x49
addr_sec = 0x4A
addr_chk_h = 0x6F
addr_chk_l = 0x70

need_reboot = ON_ANY_CHANGE
Gefunden bei http://www.vdr-portal.de/board/search.php mit Suchbegriff "nvram".
Oder direkt dieser Beitrag:
http://www.vdr-portal.de/board/threa...&hilight=nvram

SaFu 19. Jun 2008 16:20

Re: Bios einstellen über Delphi
 
Wie gesagt ich glaube das ganze hatte sich schon erledigt, weil wenn ich sowas mache dann muss es für "alle" boards gehen.

Und Kompliziert sieht es auch aus.

zudem kommt noch dazu wenn ich jemanden das Programm geben sollte und irdgenwas schießt sich ab und die bekommen raus das mein Programm im Bios rumfummelt.

Wer haftet dann, ich? nein danke

Wer von euch, hat lust von jemandem ein Programm zunehmen das im NVRAM rummacht

devidespe 19. Jun 2008 16:23

Re: Bios einstellen über Delphi
 
Bietet der Scheduler oder die Aufgabenplanung keine Möglichkeit, den PC zeitgesteuert einzuschalten ?

SaFu 19. Jun 2008 16:25

Re: Bios einstellen über Delphi
 
Soweit wie mir bekannt ist, geht das nur im BIOS, aber ich lasse mich gerne eines bessern belehren.

devidespe 19. Jun 2008 16:46

Re: Bios einstellen über Delphi
 
Ich bin mir nicht sicher, kann mich aber wage erinnern, so etwas im Hotline-Bereich einer der letzten c't-Ausgaben gelesen zu haben. Einfach mal auf deren Seite suchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz