Skip to content

Speedstor/aldrinOS

Repository files navigation

Aldrin OS

  • This OS started with following the tutorial of from Youtuber Poncho
  • After finishing the tutorial, I have been trying to add USB compability. While improving on existing code's organization and efficiency.
  • Poncho's Tutorial code Github Repo: https://github.com/Absurdponcho/PonchoOS
  • current working code in on the dev branch

Notes

Kernel Setup Outline (sequential)

  • bootloader -> prepare struct bootInfo
  • kernel
    • prepareKernel
      • BasicRenderer
      • GDT //Global Descriptor Table (sections of memory)
      • Prepare memory
        • PageFrameAllocator
        • Reserve EFI Memory
        • Lock Kernel Pages
        • Lock Framebuffer
        • replace EFI Virtual Memory (Page Map?)
      • Prepare interrupts
      • initialize heap (w/ page map)
      • Handle ACPI (devices)
        • get xsdt from rsdp
        • use xsdt to get MCFG
        • use MCFG to get all the devices

Brainstorm

  • Implement USB devices (keybaord)
  • PCI -> Serial Bus
  • get access to Serial Bus ids first
  • figure out the outb and inb to interface with it
  • notes
    • qemu existing acpi tables
      • FACP - The Fixed ACPI Description Table starts with the “FACP” signature.
      • APIC - Application Policy Infrastructure Controller - Multiple APIC Description Table
      • HPET - IA-PC High Precision Event Timer Table. See Links to ACPI-Related Documents under the heading “IA-PC High Precision Event Timer Table”.
      • MCFG - PCI Express Memory-mapped Configuration Space base address description table. PCI Firmware Specification, Revision 3.0.
      • WAET - Windows ACPI Emulated Devices Table**. See Links to ACPI-Related Documents under the heading “Windows ACPI Emulated Devices Table”.
      • BGRT - Boot Graphics Resource Table

bootInfo

struct bootInfo {
    framebuffer,
    psf1-font,
    EFI_MEMORY_MAP mMap,
    mMapSize,
    mMapDescSize,
    RSDP, //Root System Descriptor Pointer
}

Acronyms

acronym stands for
GDT Global Descriptor Table
EFI Extensible Firmware Interface
ACPI Advanced Configuration and Power Interface
RSDP Root System Descriptor Pointer
PCI Peripheral Component Interconnect
IDT Interrupt Descriptor Table
SDT Service Descriptor Table
MCFG Memory Mapped Configuration Space Access (info about PCI configuration space base)
LPC Low Pin Count
AHCI Advanced Host Controller Interface (Protocal to communicate with Serial ATA(SATA) devices
UPC Unit Procedure Call
USB SS USB SuperSpeed
USB CDC-ACM USB Communications Device Class – Abstract Control Model
BAR Base Address Register
SBRN Serial Bus Release Bumber Register
MMIO Memory mapped I/O

Structure

folder sub-folder what's inside
sys boot - kernelUtil
- gdt
- efiMemory
memory - memory
- heap
- paging
- PageFrameAllocator
- PageMapIndexer
- PageTableManager
storage - ahci
-
time - pit
interrupts - IDT
- interrupts
- panic
devices - apci
- IO
- pci
- pciDescriptors
userinput - kbScancodeTranslation
- keyboard
- mouse
inc - Bitmap
- cstr
- math
graphics - BasicRenderer
- Framebuffer
- simpleFonts
- kernel.cpp

TODO

  • LoadGDT asm
  • PCI Serial Bus
  • cursorColor & layers
  • update pci list/buffer devices

Resources

Docs Websites

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published