Sourcecode Fortschritt
-
Wer die Version 0.0.4.86 ausprobieren möchte:
in os.h:/// #define _BOOTSCREEN_ // Enables the bootscreen displayed at startup #define _SERIAL_LOG_ // Enables log information over the COM-Ports /// #define _EHCI_ENABLE_ // EHCI driver will be installed and used on the disadvantage of UHCI/OHCI if supported by the attached device /// #define _OHCI_ENABLE_ // OHCI driver will be installed /// #define _UHCI_ENABLE_ // UHCI driver will be installed /// #define _XHCI_ENABLE_ // xHCI driver will be installed
in ckernel.c:
if (apic_available()) log("APIC", apic_install()) else // PIC as fallback // Use APIC+PIC until our APIC driver is ready to replace PIC simpleLog("PIC", pic_install()); // Cf. interrupts.asm
Testen kann man am besten mit VBox oder qemu. VMware bringt die 't' etwas langsamer. Bochs verbeisst sich in die FDD und bleibt nach einem 't' hängen.
Dies ist ein unkalibrierter timer interrupt des neu eingerichtenen local APIC.
idt_install wird übrigens am Ende von isr_install ausgeführt.
-
version = "0.0.4.87 - Rev: 1475"
apic.h/c zwischenstand (läuft noch nicht korrekt!)
-
version = "0.0.4.88 - Rev: 1476"
apic.h/c: APIC timer mittels PIT justiert.
Tests: Test-PC und VMware laufen zeitgenau. xHCI in os.h ausgeschaltet, da es bei VMware dabei massive Probleme gibt. Qemu läuft etwas zu schnell. Bochs stürzt ab (exception). VBox läuft sehr langsam.
-
Version 0.0.4.89:
- Fehler behoben: Crash bei Read-Only-Sektionen in PE/ELF-Dateien
- Interrupt-Code aufgeräumt: Weniger redundanter Code, alle 256 Interrupts nun benutzbar
- Ein paar unnötige memset entfernt
- bochs.bxrc repariert (reverted)
- APIC-Code stilistisch aufgeräumt
-
Version 0.0.4.90:
- Compilerfehler bei aktivierten DIAGNOSIS-Modi behoben
- _SERIAL_LOG_ standardmäßig deaktiviert (ist eine Debug-Option)
- Neue Testergebnislisten
-
version = "0.0.4.91 - Rev: 1479"
pit.h, apic.c: kleine Ergänzungen
Init IO APIC vor local APIC
-
Version 0.0.4.92:
- textgui und VBEShell entfernt
- const-correctness erhöht
- VM86-Handler um Befehlsvarianten erweitert
- Optimierungen in VGA-Treiber und vsnprintf
- VBE-Debugausgabe (via strg+v)
-
Version 0.0.4.93:
- initrd (initrd.c/h, make_initrd) und angehängtes vfs (fs.h/c) gelöscht
- Neue Ramdisk-Implementation begonnen
- Shell nun direkt in kernel eingebunden, ohne Ramdisk-Wrapper
-
version = "0.0.4.94 - Rev: 1482"
ESC+p (paging_analyzeBitTable) korrigiert (schreibt nun korrekt auf den Bildschirm und auf den in os.h angegebenen seriellen Port)
-
"0.0.4.95 - Rev: 1483"
apic.c weiter optimiert (vmware, test-pc laufen; qemu, Vbox, bochs nicht bzw. nicht korrekt)
-
"0.0.4.96 - Rev: 1484"
apic.c: Potenzieller overflow vermieden
-
"0.0.4.97 - Rev: 1485"
apic.c: Kalibrierung läuft nun mit Emulatoren und Hardware
Mode 0 anstelle 1 beim PIT war die Lösung.
-
"0.0.4.98 - Rev: 1486"
xhci.h/c: MSI-Strukturen seitens PCI aufgebaut
-
"0.0.4.99 - Rev: 1487"
Zwischenstand: MSI eingerichtet und aktiviert, kommt leider noch nicht beim Prozessor an (sehr viele Parameter).
EDIT: Fehler beim Schreiben auf die PCI Cap.-Register (word anstelle dword)
-
"0.0.4.100 - Rev: 1488"
MSI läuft nun via APIC (am besten zu sehen mit VMware)
-
"0.0.4.101 - Rev: 1489"
xhci.c: Zeitschleife hinter RUN eingefügt, kleine Optimierungen
-
"0.0.4.102 - Rev: 1490"
xhci.c: Optimierungen bez. Zeitverhalten, sodass Test-PC die MSI-Interrupts erhält
(leider in ckernel.c jeweils eine Nummer zu hoch)
-
"0.0.4.103 - Rev: 1491" - Kleinigkeiten
(leider in ckernel.c momentan eine Nummer zu hoch)
-
version = "0.0.4.104 - Rev: 1492"
usb3-Transfers/-Transaktionen vorkonfiguriert
-
Version 0.0.4.105 - Revision 1493
- acpi.c/h: Treibergeruest fuer finden & mappen von ACPI-Tabellen (Parser dynamisch hinzufuegbar)
- acpi/parser.c/h: hardcodierte ACPI-Parser [fehlt im Commit]
- acpi/madt.c/h: rudimentaerer Parser fuer die Multi APIC Descriptor Table (liest bisweilen nur Infos ueber lokale APICs und IO-APICs aus und schiebt sie in IPC) [fehlt im Commit]
Version 0.0.4.105b - Revision 1494: Broken commit fix