Nachladen des Kernels durch eigenen Bootloader
-
cool Aber das klappt nur, wenn der Kernel maximal 128KB groß ist? Das mit dem ISA DMA hab ich noch nicht ganz verstanden, soweit ich das verstanden hatte, konnte man "nur" nicht über eine 64KB-Grenze im RAM lesen?
-
Aber das klappt nur, wenn der Kernel maximal 128KB groß ist?
Nein, mit diesem Code kann der Kernel größer sein. Hier werden mit einem "zum Testen künstlich aufgepumpten" Kernel z.B. 500 Sektoren gelesen: http://www.henkessoft.de/OS_Dev/Downloads/20090712_69b.zip
http://www.henkessoft.de/OS_Dev/OS_Dev3.htm#mozTocId882541Das mit dem ISA DMA hab ich noch nicht ganz verstanden, soweit ich das verstanden hatte, konnte man "nur" nicht über eine 64KB-Grenze im RAM lesen?
Ja, das stimmt, wird z.B. bei Linux 0.01 auch bereits erwähnt. Kernel wurde damals nach 0x10000 geladen.
Linux 0.01 boot.s:
http://www.linuxgrill.com/anonymous/kernel/Archive/historic/linux-0.01.tar.bz2| This routine loads the system at address 0x10000, making sure
| no 64kB boundaries are crossed. We try to load it as fast as
| possible, loading whole tracks whenever we can.
|
| in: es - starting address segment (normally 0x1000)Ich bin noch nicht völlig sicher, ob der Aufbau ausreichend robust ist, aber das Design mit dem Stack bei 0x7000, dem Bootloader bei 0x7C00 und dem Kernel ab 0x8000 gefällt mir nach wie vor recht gut.
-
Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum Assembler in das Forum Projekt: OS-Development verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.