Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: ScAr_TeX am 19. June 2007, 10:00
-
Hi Leutz ...
ich komm' einfach nicht weiter. Mein OS lädt, dank Grub, die Treiber als Module. Das Problem ist, ich weiß nicht ob ich die Treiber als Binärdateien (mit eigenem Header), als ELF-Datei (mit Reloc's) oder als eigenständigen Prozess (boaaa *g) laden soll. Außerdem weiß ich noch nicht, wie die Treiber mit dem System kommunizieren sollen...
Könnt ihr mir weiter helfen ???
-
Moin
Also das Dateiformat hat ja nix damit zu tun, wie du die Treiber in dein System einbinden willst. Du solltest dir halt mal Gedanken machen, wie das Design deines Kernels aussehen soll. Da wird eine der Ersten Fragen sein, welchen Kerneltyp du machen willst, ob Mikrokernel, oder eher einen Monolithen. Danach ist eigentlich auch Klar, was mit den Treibern geschieht, und auch schon in etwa, wie die Kommunikation aussehen soll.
-
... Danach ist eigentlich auch Klar, was mit den Treibern geschieht, und auch schon in etwa, wie die Kommunikation aussehen soll.
Genau da, weiß ich nicht weiter. Ich weiß halt einfach nicht wie so ein simples Treibermanagement zu realisieren ist.
Ahhhhh... :-D
-
Was soll es denn werden? Microkernel? Monolithischer Kernel? Oder was ganz anderes?
-
Was soll es denn werden? Microkernel? Monolithischer Kernel? Oder was ganz anderes?
Irgendwann soll es, hoffe ich mal, ein funktionierender Hybridkernel werden.
-
hm, das macht es auch nicht grad einfacher :mrgreen:
Mir fallen spontan folgende Funktionen ein, die ein Treiber benötigt:
* besondere Speicherallokationen: zB. Speicher unter 1MB, 16MB, 4GB ( und evtl. dann auch noch physikalisch kontinuierlich) Der Treiber sollte auch die Möglichkeit haben die physikalische Adresse herauszufinden
* I/O Ports reservieren (mit den nötigen Rechten, also IOPL oder TSS I/O Permission Bitmap), benutzen & freigeben
* ein Standardinterface zu anderen Treibern oder in den kernel eingebaute Funktionen um,
* den DMA Controller dazu zu bringen einen Transfer zu machen (wird zB gebraucht für floppy)
* den PCI Konfigurationsraum zu lesen/schreiben (kann man natürlich auch abstrakter machen)