Autor Thema: Genuine Reihe - Beta Leser  (Gelesen 69579 mal)

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #40 am: 23. August 2006, 18:45 »
Schon seit fast einem Jahrzehnt sind IDE Controller über den PCI Bus angeschlossen ;). In der Regel jedoch nicht als separate Karte sondern innerhalb der Southbridge fest verdrahtet. Um Kompatibilität mit alten Betriebssystemen zu halten haben diese PCI IDE Controller fast immer 2 Modi -> Legacy Mode um wie eine "alte" ISA Karte zu funktionieren und den Standard DMA Controller zu nutzen ; und den Native Mode, in dem die Konfiguration über die PCI Configuration Register geht, andere Ports als üblich und außerdem MemoryMappedIO verwendet wird. Hier wird auch PCI DMA genutzt, welches im Gegensatz zum "alten" DMA Controller den 32bit Addressraum ansprechen kann. Durch PCI Busmastering kann der Übertragungsprozess sogar noch beschleunigt werden, indem der Controller für eine gewisse Zeit  den PCI Bus für sich allein haben kann.
Für SATA Controller wird man eigentlich immer einen eigenen Treiber brauchen, weil da erst gar kein "Legacy Mode" integriert wurde. Aber es gibt einen Standard: AHCI.
Inwiefern der eingehalten wird weis ich allerdings nicht, aber mindestens genauso gut wie viele andere ^^.
@T0ast3r: du solltest dein Tutorial vielleicht nicht DMA sondern DMAC oder 8237 DMAC nennen, weil es sich sicher nur auf diese einen "alten" Controller bezieht ;)
Agieren statt Konsumieren!

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #41 am: 23. August 2006, 18:53 »
@bluecode: KA inwieweit sich das ganze genau unterscheidet, fakt ist dass sata2 einige sehr nette sachen kann (z.b. Kommandosortierung für bessere geschwindigkeit) die ide nicht kann, und es aufjedenfall einen anderen controller hat, und man somit jeden ide-treiber dafür vergessen kann *g*
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #42 am: 23. August 2006, 18:58 »
@NOOB: Das hat nix mit IDE zu tun, sondern dass hat nur was mit der implementierten version von ATA/ATAPI zu tun. Dazu gibts die specs bei T13.org.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #43 am: 24. August 2006, 14:40 »
Zitat von: T0ast3r
Wieso?
DMA ist ein eindeutiger Name.

Stimmt ja auch, aber nicht für das womit du dich hauptsächlich in deinem Tutorial auseinandersetzt. Bei dir geht es zu 90% darum, wie man den alten i8237 DMAControler anspricht. Bei deinem Titel aber würde ich von einem umfassenderen Werk ausgehen, welches sich auch mit den anderen Möglichkeiten von DMA-Transfers auseinandersetzt. Allerdings sehe ich keine. Und die halbe Seite "Busmaster DMA" fällt ja komplett aus dem Konzept "Programming the ..." raus.
Zitat von: T0ast3r
Busmastering DMA (umgangssprachlich) bedeutet UDMA

Nicht wirklich. Busmastering ist die Möglichkeit einer Steckkarte Kontrolle über den Bus zu erlangen und losgelöst von der CPU darauf zu arbeiten. PCI DMA (und auch schon ISA DMA) nutzt dies um seine Übertragungen zu ermöglichen/zu beschleunigen. UltraDMA, was jetzt ein noch speziellerer Begriff ist, den es nur bei IDE-Controllern gibt, ist nur eine verbesserte Übertragungsweise, die ähnlich dem Übertragungskonzept von DDR-RAM ist. Desweiteren gibt es ja auch noch Single-Word und Multi-Word DMA bei IDE-Controllern, was dann wieder ein paar Dinge für ein "genuine" Dokument währen, die nicht angesprochen werden.
Ich hoffe du verstehst worauf ich hinaus will?
Agieren statt Konsumieren!

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #44 am: 24. August 2006, 22:37 »
Use the power of google ;)
Ansonsten kommt man recht schnell an Informationen, z.B. beim Herausgeber der ATA-6-Spezifikation T13 oder bei Tecchannel oder auf http://ata-atapi.com/ oder im Linux-Quellcode. Man muss sich nur mal umschauen, die Infos sind überall.
Kleiner Tipp: such mal in der ATA-6 Spezifikation nach "Bus Mastering" oder ähnlichem, und sag mir wie oft du das findest ^^.
Agieren statt Konsumieren!

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #45 am: 25. August 2006, 10:35 »
Moin

ist zwar ne tux seite aber was solls

http://linux-ata.org/devel.html

und bevor jemand anfängt zu schrein da sind nur die ATA - Comandsets verlinkt, der sollte mal etwas tiefer schauen, da hats  z.B. auch die datasheets von Silconimage für ihre sata-Controller (SIL3114 / SIL3112 / SIL3124) der von Intel. Sowie einige Standard Documente Wie z.B. "AHCI"

Das Document "ATA Host Adapter Standards spec" müste für dich Toster eigentlich interesant sein da stehen auch die register drinnen sowie die port offsets.

gruss

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #46 am: 25. August 2006, 11:20 »
Was ist bitte eine Mikroprozessorsprache?
Ich würde nicht die erweiterten Register (also EAX, EBX, etc...), gs & fs und va. nicht Cr0-Cr4 zum realmode zählen. Das verwirrt doch nur die in dem Zusammenhang zu verwenden.

Die vielzweckregister können nicht frei verwendet werden (zumindest nicht im realmode). zB. kann ein div nur mit best. Registern gemacht werden oder nimmt ein "loop" immer (e)cx als counter. Desweiteren kann man zum Adressieren nur si, di, bp und bx verwendet werden.

Dein BIOS befindet sich aber an einer komischen Stelle (0xA0000 = VRAM). Soweit ich informiert bin fängt das (normale) BIOS bei 0xF0000 erst an. Davor (kann?) es noch ein anderes BIOS sein, nämlich das von der Grafikkarte. Das ist imho meist bei 0xC0000. (Etwas weiter im Text erklärstes dann richtig. Ich würds dann am anfang auch ausbessern) btw. VGA ist ein einheitlicher Standard für Grafikkarten.

Es gibt mehr als eine Calling Convention in C/C++ und es gibt noch nen Spezialfall für den Rückgabewert, namens "return value optimization". Es könnte auch sehr wichtig sein, wer den den Stack wieder aufräumen muss (Aufrufer oder Aufgerufener).

Könntest du evtl. dein Denglisch rauslassen, also zB englische Pluralbildung bei deutschen Wörtern ("Interrupt Vektors"). Aber am meisten nerven eigentlich total überflüßige englische Wörte (wie "quite"), die du einfach zusammenhangslos reinschusterst.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #47 am: 25. August 2006, 11:26 »
Zitat von: bluecode
Könntest du evtl. dein Denglisch rauslassen, also zB englische Pluralbildung bei deutschen Wörtern ("Interrupt Vektors"). Aber am meisten nerven eigentlich total überflüßige englische Wörte (wie "quite"), die du einfach zusammenhangslos reinschusterst.

Du verstehst einfach nicht, daß Englisch die Sprache der Informatik ist und jeder halbwegs proffesionele Programmierer (sic!) deswegen zumindest ein paar englische Wörter einstreuen muß. :P
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Biehler Productions2

  • Beiträge: 47
    • Profil anzeigen
    • http://biehlos.biehler-josef.de
Gespeichert
« Antwort #48 am: 25. August 2006, 13:00 »
Zitat

Im Prinzip ist die Adressierung im Real Mode quite einfach.


It's hearing echt ziemlich fucking scheiße, if du use Denglish.

The Rest habe I not gelesen now.

Biehler Productions2

  • Beiträge: 47
    • Profil anzeigen
    • http://biehlos.biehler-josef.de
Gespeichert
« Antwort #49 am: 25. August 2006, 15:03 »
Now I habe the Rest gereadet.
Und that's mein piece of Kritik:

Zitat

Der erste Prozessor der den Real Mode unterstützt ist der 8086er, der erste 16 Bit Prozessor
und der Urvater aller späteren Prozessoren.


<vermutung>
Könnte es eventuell nicht sein, dass der 8008er auch bereits den Real Mode verwendete?
</vermutung>


Zitat

Die Segment Register FS und GS haben keine besondere Verwendung, man sollte sie nach
Möglichkeit nicht verwenden.


ich dachte, du redest vom Real Mode?
Dann kann man FS und GS völlig frei verwenden, insofern man min. einen 386er zu Verfügung hat.

Zitat

Microsoft Windows verwendet intern und für die API die Pascal Calling Convention,

Nö, soweit ich aus meiner Win32 Zeit noch weis, ist es eine Mischung aus Pascal und C.
Das ganze nennt sich dann Stdcall.

Und ich glaube eher, dass die meisten Hobby OS Coder Fast Call nehmen.
Vor allem Anfänger.

Zitat

Overflow wird vom Prozessor gesetzt wenn das Ergebnis für den Zieloperanden zu groß oder
zu klein ist.


Ich würde das "Overflow" dick markieren.
(Der Satz war nur ein Beispiel - davon gibt es mehrere).
Dann sticht das eher ins Auge.

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #50 am: 25. August 2006, 15:26 »
Moin

so wie ich das mal mühsam zusammengesucht hab sieht der Obere speicherbereich so aus.

Adressen
0xA0000 - 0xAFFFF VGA Grafikspeicher 64K
0xB0000 - 0xBFFFF Hercules Grafikspeicher 1 und 2 2 mal 32k
0xC0000 - 0xC7FFF BIOS erweiterungen 32k
0xC8000 - 0xCBFFF BIOS erweiterungen 16k
0xCC000 - 0xCFFFF BIOS erweiterungen 16k
0xD0000 - 0xD3FFF BIOS erweiterungen 16k
0xD4000 - 0xD7FFF BIOS erweiterungen 16k
0xD8000 - 0xDBFFF BIOS erweiterungen 16k
0xDC000 -  0xDFFFF BIOS erweiterungen 16k
0xE0000 - 0xFFFFF BIOS 128k

Wobei dei der Einsprinpunkt in das Bios bei 0xFFFF0 liegt, da nach dem Reset CS = 0xFFFF und IP = 0x0000

Und die anzahl der BIOSe SCSI oder SATA Kontroller bringen z.B. ihre eigenes BIOS mit das beim systemstart eingerichtet wird. Das gleiche gilt für netzwerkkarten (netBoot systeme).

Zu der Himem.sys gabs noch die EMM368.exe. Der Speicher nennt sich übrigens XMS oder EMS

Das Flat speichermodell wird ganz weggelassen?

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #51 am: 25. August 2006, 15:31 »
Moin

ich bezweifle das beim 8086 der begriff RealMode überhaupt geboren war. Der konnte ja nur genau den und sonst nichts. erst die nachfolger konnten mehr. Daher brauchte man eine unterscheidung zwischen den Modis in denen der Prozessor lief.

gruss

4004 8008 8080A 8085 8086 8087 8088 Z80 80186 80286

Biehler Productions2

  • Beiträge: 47
    • Profil anzeigen
    • http://biehlos.biehler-josef.de
Gespeichert
« Antwort #52 am: 25. August 2006, 17:16 »
Zitat von: T0ast3r


Und bei fs und gs, da heißt es sie haben keine Verwendung so wie CS oder SS.



Da steht (stand), dass man sie wenn möglich nicht verwenden sollte.
Und das ist im Real Mode ja völlig egal, da diese ja keine Bedeutung haben ;)

Soll man Rechtschreibfehler auch melden?
Mir sind vor allem ein paar Groß- und Kleinschreibefehler aufgefallen.

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #53 am: 25. August 2006, 17:46 »
Tach auch!
Hab mal das Realmode-Tut überflogen: erstmal schön das du dir immer solche Mühe machst. Allerdings (man mags kaum glauben) habe ich wieder einige Kritikpunkte: ich fand so einige Stilblüten wie z.B. auf Seite 5
Zitat
mov ist ein Befehl um Inhalt zu moven.
Klingt komisch, ist aber so!
Da findest du doch bestimmt noch eine bessere Erklärung für. Dann finde ich das Dokument ein wenig inkonsistent was den 16bit Realmode angeht:
Du beschreibst einen 16-bit Modus, benutzt dazu 32-bit Register um am Ende noch das 64-bit Register CR8 zu nennen? Das letzte, ok, da hast du sogar selbst geschrieben dass das nicht hinpasst. Aber bei den E-Register, hmm, halt ich für leicht überflüssig für ein Realmode Tutorial. Im übrigen solltest du dafür sorgen, dass die Registergrafik nicht Page-Boundaries crosst ^^.
Genauso solltest du am Ende einen Großteil der CRx Register weglassen, da die ja mal so überhaupt nix mit dem Realmode zu tun haben. Nimm lieber das MSW rein, was ja immerhin der untere Teil von CR0 ist und schon ab 286er bekannt und sinnvoll im Realmode einzusetzen ist (CoPro Emulation).

Und ein kleiner Nachtrag: die Register findest du auch bei T13 oder noch spezifscher beim Hersteller des Controllers z.B. Intel ;)
Agieren statt Konsumieren!

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #54 am: 27. August 2006, 12:42 »
Zitat von: n3Ro
Im übrigen solltest du dafür sorgen, dass die Registergrafik nicht Page-Boundaries crosst ^^.


 <:?: >
Zitat von: T0ast3r

und wegen dem Page Boundary, hehe in einer vorherigen version ist da noch gestanden in Klammer 4 KB Alignment

</ :?: >

ich glaub n3Ro hat gemeint, dass es besser wäre wenn die Grfiken in dem PDF-File nicht auf zweiseiten verteilt(wie die erste Grafik) wären.
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #55 am: 27. August 2006, 14:49 »
So war es auch gemeint :!:
Agieren statt Konsumieren!

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #56 am: 27. August 2006, 17:04 »
Zunächsteinmal möchte ich sagen, dass ich die Idee dieser Dokumente sehr gut heiße. Mir persönlich
werden sie wohl noch sehr viel Nutzen erweisen, da ich gerade erst am Anfang der OS-Entwicklung stehe.

Zum Dokument: Programming the PIT genuine (II) ist mir folgendes aufgefallen:

Auf der ersten Seite des Dokuments muss es heißen:
"(...) handelt vom PIT, (...)"
den Ausdruck handeln um hab ich noch nicht gehört.

Weiter auf Seite 2:
"Zu beachten ist hierbei, dass immer mir korrekten Einheiten gerechnet wird(...)"

Ich denke, dass es offensichtlich ist, dass mit korrekten Einheiten gerechnet wird ;)

Die Vorsätze Mega bedeutet immer 1000000 und Kilo immer 1000.
Die einzige Ausnahme ist die Einheit Byte. Laut Standard (SI-System) müsste
1 MegaByte 1000 KiloByte entsprechen, aber oft wird auch mit dort
mit dem Faktor 1024 gerechnet, was falsch ist.
Wobei mittlerweile auch andere Vorsätze gelten:
Gi(Gibi)  = 1.073.741.824
Mi(Mebi) = 1048576
Ki(Kibi)   = 1024

Für die Zeilen wie:
"(...) dort jedes Nibble(=4 Bit Block) Werte von (...)" Seite 3
Würde ich Fußnoten verwenden.

Dann noch ein Grammtikfehler:
Der Plural von Modus ist Modi.
Ebenfalls Seite drei: "(die anderen Moduse sind auch schlecht dokumentiert)"

Auf Seite 4 noch etwas:
"Es wird der Zähler 0 zu seinen Standardwerten gesetzt,(...)"
man setzt etwas auf einen bestimmten Wert nicht zu.
Ist meine Meinung... Also:
"Der Zähler 0 wird auf die Standardwerte gesetzt; der Code(...)"

Weiter auf Seite 4:
"Die Standardwerte sind 0,010 ms Aktivierungszeit, Modus 3 und binäre Zählung, wobei man auch oft auf BCD Zählung trifft."
Kann das sein, dass du 10ms oder 0,010 s meinst?

Das viel mir so beim Überfliegen auf... Sonst ein sehr schönes Dokument... weiter so ;)

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #57 am: 27. August 2006, 19:38 »
ich find die idee auch gut slebst wenn cih von den themen im mom nix brauche^^

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #58 am: 27. August 2006, 20:25 »
ein sehr schweres thema: netzwerke über http

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #59 am: 27. August 2006, 20:29 »
schau dir erstmal netzwerke an sich an... was du vermutl. meinst sind tcp/ip-netzwerke... http ist sooo weit oben im stapel, das ist absolut irrelevant... und geht an sich auf Clienseite nicht über "GET Deineadresse HTTP/1.1" hinaus ;)
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

 

Einloggen