Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: joachim_neu am 27. February 2005, 02:08

Titel: HDD
Beitrag von: joachim_neu am 27. February 2005, 02:08
hallo,

mich würd mal gerne interessieren, wie ich eine festplatte benutze. is das wie bei FDC, dass ich erstmal darauf scharfmachen muss, und motor an, und irq abwarten und co. oder is das leichter? arbeitet man da auch mit DMA oder läuft das mit portbefehlen ab? für hilfe und links währe ich sehr dankbar (ich hab schon gegoogled und so, aber vll. kennt ja jemand ein tut, das er besonderst empfehlen kann oda so!)

mfg

J!N
Titel: HDD
Beitrag von: Roshl am 27. February 2005, 12:19
Also man kann DMA verwenden muss es aber nicht. Zum Glück ist das ansprechen wesentlich einfacher als beim FDC.
Einfach die LBA/CHS Nummer an die entrsprechenden Ports senden, den Befehl schicken, warten bis er fertig ist und dann über insw auslesen.
Geschieht über die Ports 0x1F0-0x1F7 den Rest darfste dir selbst aus einer Portliste raussuchen^^ Falls du Probleme hast, kann ich dir auch mal meine Funktionen dafür geben, aber versuchs erstmal selbst, so schwer ist das nicht.
Titel: HDD
Beitrag von: joachim_neu am 27. February 2005, 13:40
ich habs schon fertig, das is net das problem  :lol:  das is verdammt leicht. ich mach mir nur sorgen, was is, wenn ein taskwechsel passiert, während die daten übertragen werden... is dann ein error oder stört das net oder wie?
Titel: HDD
Beitrag von: Roshl am 27. February 2005, 13:59
nie probiert hm...Setzte doch einfach während der Aktion die Interrupte aus ein Cli am Anfang ein Sti am Ende. Das sollte eventuellen Problemen Vorbeugen
Titel: HDD
Beitrag von: joachim_neu am 27. February 2005, 18:09
hm... das verzögert aber das taskzeug! wie lange dauert sowas etwas?
Titel: HDD
Beitrag von: Roshl am 01. March 2005, 17:13
Keine Ahnung aber die Tasks sollte das kaum stören, falls ein PIT-Int dazwischen kommt wird der ja gleich ausgeführt sobald du die Ints wieder anmachst, wird ja zwischengespeichert. Nur wenn es länger dauert als ein Taskwechsel (was höchst unwahrscheinlich ist) dann könnte vielleicht ein Aufruf draufgehen, aber darum würde ich mir kaum Gedanken machen.
Titel: HDD
Beitrag von: joachim_neu am 01. March 2005, 18:20
also soweit ich das bisher gelesen hab dauert es ~8,5 ms zum festplatte starten, dann nochmal ~1,5 ms zum positionieren = ~10 ms. das sin bei dann bei einer frequenz von 200 hz 2 bis 3 taskwechsel...
Titel: HDD
Beitrag von: Roshl am 01. March 2005, 19:32
Eigentlich sollte es die Festplatte ja nicht stören^^ ich meinte nur zur Sicherheit könnte man es machen. Musst halt nur dafür sorgen das nicht 2 Tasks kurz nacheinander die Platte haben wollen.
Titel: HDD
Beitrag von: joachim_neu am 01. March 2005, 19:40
jo, das is die sache vom system. das mach ich aber nur bei FDC und HDD, weil die treiber dazu vom system kommen. alle anderen geräte werden über ihre treiber gemanagt, die müssen dann schauen, dass es keine komplikationen gibt.