| Zeile 6: | Zeile 6: | ||
| Kernel = Modulares Kernel System (MKS) | | Kernel = Modulares Kernel System (MKS) | ||
| API = n/a | | API = n/a | ||
| − | | Binaerformat = | + | | Binaerformat = BIN, (event. EXE) |
| Sprache = [[Assembler]], [[C]]/[[C++]] | | Sprache = [[Assembler]], [[C]]/[[C++]] | ||
| IPC = Channels | | IPC = Channels | ||
| Zeile 19: | Zeile 19: | ||
= Entwicklungsumgebung = | = Entwicklungsumgebung = | ||
| − | * Intel Core 2 Quad mit | + | * '''Hardware''' |
| − | * Microsoft [[Windows]] | + | ** Intel Core 2 Quad mit 8 GiB RAM |
| − | * Microsoft Visual Studio 2008 Express | + | * '''Software''' |
| − | * Mircosoft .NET Framework v3.5 | + | ** [http://www.microsoft.com/germany/windows/windows-xp/ Microsoft XP Pro] >>> [[Windows]] |
| − | * Microsoft Windows-Debugger x86/x64 für Kernel-Debug | + | ** [http://www.microsoft.com/germany/express/ Microsoft Visual Studio 2008 Express] |
| − | * Microsoft Virtual PC 2007 | + | ** [http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=de Mircosoft .NET Framework v3.5] |
| + | ** [http://www.microsoft.com/whdc/devtools/debugging/default.mspx Microsoft Windows-Debugger x86/x64 für Kernel-Debug] | ||
| + | ** [http://www.microsoft.com/downloads/details.aspx?FamilyID=28c97d22-6eb8-4a09-a7f7-f6c7a1f000b5&DisplayLang=de Microsoft Virtual PC 2007 inkl. SP 1] | ||
| + | * '''Referenzmaterial''' | ||
| + | ** [http://www.codeplex.com/singularity Microsoft Singularity RDK 2.0] | ||
| + | ** [http://www.fh-zwickau.de/doc/prmo/start.htm Protected Mode Tutorials] | ||
| + | ** [http://ra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws0304/frank_lemke/praesentation.pdf Paging verschiedener CPUs] | ||
| − | '''Testumgebung:''' Es wird immer zuerst in der VM auf dem Entwicklungssystem getestet und erst wenn da alles ohne Probleme läuft, wird auf der realen Maschine getestet. Als Test-PC dient da einmal ein P2 mit müden 400 MHz als Single-Core, um vor allem die Boot-Phasen zu testen. OK, derzeit benutze ich einen Laptop mit P3 mit 1 GHz und satten 256 MiB RAM. Versehentlich auch mal Tests auf meinem Quad-Core, wenn ich vergessen habe die Diskette nach dem Testen rauszunehmen. Aber da zeigt sich schon, dass auf der realen Maschine alles genauso läuft wie bisher in der VM. | + | |
| + | '''Testumgebung:''' | ||
| + | |||
| + | Es wird immer zuerst in der VM auf dem Entwicklungssystem getestet und erst wenn da alles ohne Probleme läuft, wird auf der realen Maschine getestet. Als Test-PC dient da einmal ein P2 mit müden 400 MHz als Single-Core, um vor allem die Boot-Phasen zu testen. OK, derzeit benutze ich einen Laptop mit P3 mit 1 GHz und satten 256 MiB RAM. Versehentlich auch mal Tests auf meinem Quad-Core, wenn ich vergessen habe die Diskette nach dem Testen rauszunehmen. Aber da zeigt sich schon, dass auf der realen Maschine alles genauso läuft wie bisher in der VM. | ||
| Zeile 35: | Zeile 44: | ||
* Die Aufgabe des Bootsektors sollte wohl ja klar sein, nämlich unabhängig vom Medium den Bootloader zu laden und auszuführen. | * Die Aufgabe des Bootsektors sollte wohl ja klar sein, nämlich unabhängig vom Medium den Bootloader zu laden und auszuführen. | ||
=== Bootloader === | === Bootloader === | ||
| + | * Protected-Mode | ||
| + | * Paging mit Physical-Address-Extension (PAE), max. 64 GiByte | ||
* Soll erste Möglichkeiten des Kernel-Debugging ermöglichen. | * Soll erste Möglichkeiten des Kernel-Debugging ermöglichen. | ||
* Einrichten des MKS und laden bedingter Treiber. | * Einrichten des MKS und laden bedingter Treiber. | ||
| Zeile 68: | Zeile 79: | ||
''' Fertig: ''' | ''' Fertig: ''' | ||
* Bootsector für ROFS, FDD-Version. (0.00.22.16) | * Bootsector für ROFS, FDD-Version. (0.00.22.16) | ||
| − | * Bootloader | + | * Bootloader (0.00.23.20) |
| − | ** Entry16: 16-Bit-Einsprung | + | ** Entry16: 16-Bit-Einsprung (0.00.23.20) |
| + | ** Entry32: 32-Bit-PM-Einsprung (0.00.23.20) | ||
''' In Arbeit: ''' | ''' In Arbeit: ''' | ||
* Bootloader | * Bootloader | ||
| − | ** | + | ** Paging mit PAE |
* Homepage für AiCOS | * Homepage für AiCOS | ||
| Zeile 85: | Zeile 97: | ||
| − | = Screenshot = | + | = Aktueller Screenshot = |
| − | http://aicos.amazing-fx.de/images/screenshots/ | + | http://aicos.amazing-fx.de/images/screenshots/bootloader_002.gif |
= Böse Falle = | = Böse Falle = | ||
* Ständig kackte meine VM ab, als mein Bootloader ins den PM-Segment prang. Man kann sich echt todsuchen, wenn man Hexzahlen und Dezimalzahlen nicht unterscheiden kann. 20d != 20h | * Ständig kackte meine VM ab, als mein Bootloader ins den PM-Segment prang. Man kann sich echt todsuchen, wenn man Hexzahlen und Dezimalzahlen nicht unterscheiden kann. 20d != 20h | ||
| − | * Und wieder einmal stellte meine VM ihren Dienst beim Sprung ins PM-Segment ein und wieder suchte ich mich blöd. War letztenendes auch logisch, wenn der Bootsektor nur ein Sektor (512 Bytes) des Bootloaders lädt, aber der Sprung in PM-Segment aber an Offset 0x0200 sich befinden. | + | * Und wieder einmal stellte meine VM ihren Dienst beim Sprung ins PM-Segment ein und wieder suchte ich mich blöd. War letztenendes auch logisch, wenn der Bootsektor nur ein Sektor (512 Bytes) des Bootloaders lädt, aber der Sprung in PM-Segment aber an Offset 0x0200 sich befinden. '''Böse Falle''' |