Autor Thema: Mehrere kleine Fragen.  (Gelesen 5432 mal)

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« am: 05. September 2005, 05:26 »
Hallo zusammen,

ich habe mehrere Fragen, stelle die einfach mal nummeriert hier rein:

1) Wenn ich mein OS über den Boot-Sektor lade, bleibt anschließend die Lampe für Disketten-/Festplattenaktivität an und ich höre (beim Laptop) auch das Diskettenlaufwerk. Ich nehme an, dass ich den Motor nach dem Lesen von Sektoren manuell wieder abschalten muss. Wie mache ich das?

2) Moderne PCs/Laptops kann man programmgesteuert ausschalten (macht Windows beispielsweise nach dem Runterfahren automatisch). Kann mir jemand sagen, wie das geht bzw. einen Codeschnipsel dafür geben?

3) Kann mir jemand einen Tipp zum Thema PCI nennen? V2OS beispielsweise kann alle PCI-Geräte auflisten, aber was genau hat man davon? Hilft PCI auch beim Lesen/Schreiben? Die bisher von mir gefundenen Tutorials waren diesbezüglich etwas zu theoretisch gehalten, wäre toll, wenn mir jemand einen anderen Link oder Buchtipp geben könnte.

4) Thema DMA: Hat das schon mal jemand verwendet? Wird es durch PCI ersetzt oder ist es sinnvoll, beides parallel zu betreiben?

Mag sein, dass die beiden letzten Fragen schwachsinnig sind, dafür entschuldige ich mich dann im Voraus in aller Form!

Danke für alle, die mir helfen!

Gruß!

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #1 am: 05. September 2005, 09:21 »
1) Da kann ich dir nur grad sagen das deine Vermutung richtig ist, das man dies extra programmieren muss, ist eine OUT instruktion wenn ich mich richtig erinnere, aber hab hier auf der Arbeit grad meinen Code nicht zur Verfügung!

2) Codeschnipsel wird schwierig, ich bin mir nicht sicher ob das APM das noch konnte, oder ob man dafür schon ACPI braucht - dann wäre es auf jeden Fall eine extrem komplizierte Aufgabe.

3) Nun ja, was hat man davon alle Geräte zu kennen - du weisst welche Treiber dein System benutzen sollte. Gute Sachen zum Thema PCI hatte ein Freund von mir, kann den mal Fragen ob der die noch hat ...

4) Okay, das wird wohl ne längere Antwort. PCI ist erstmal ein sogenanntes Bussystem, welches die Aufgabe hat, die einzelnen Geräte (on-board oder auf den Steckkarten) mit der CPU und RAM über den Chipsatz zu verbinden. Es hat daher relativ ähnliche Aufgaben zum Ethernet zwischen verschiedenen PC's, und noch ein paar mehr, damit man z.B. sich alle Geräte auflisten lassen kann! ;)

Bei DMA hingegen muss man erstmal zwischen DMA und Busmaster-DMA unterscheiden. DMA selber gibt es schon wesentlich länger als PCI, und war ein Chip den man programmieren konnte damit der Daten hin- und herkopiert ohne das man die CPU dafür benutzen muss. Für ältere Hardware, die damit noch arbeiten kann (z.B. der Floppycontroller den du ja scheinbar programmierst) sollte man damit auch arbeiten.

Busmaster-DMA sagt eigentlich mehr nur das das Busmaster-Gerät (z.B. ein Festplattencontroller, gab auch mal Grafikkarten zur Zeiten von der Voodoo 1 oder so die das gemacht haben) die "Kontrolle" über den PCI Bus übernimmt und sich selbstständig Daten aus dem RAM zieht, wenn ich mich richtig erinnere. Wieder sehr sinnvoll das zu Benutzen, da es die CPU entlastet, aber wie man das programmiert hängt von dem Gerät ab.
*post*

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 05. September 2005, 14:55 »
1) Der Code dafür ist:

mov dx,0x3F2
mov al,0x0C
out dx,al


2) Afaik hatten wir mal in einer der erste Lowlevel-Ausgaben eine Funktion dafür (im Bereich Codeschnipsel/Codecorner/oder so), der Name war irgendwie APM-Powerdown. Sie hat auf jeden Fall den Int 0x15 benutzt.

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 05. September 2005, 21:20 »
Dank euch allen für die Antworten - haben mich erstmal weiter gebracht!

 

Einloggen