Skip to content

Drivers

Category

15 articles

  • 01
    AHCI

    The register interface a SATA controller exposes once its BAR is mapped: command lists, FIS types, and how a driver actually moves data through a port.

  • 02
    ATA/IDE in PIO Mode

    The legacy 0x1F0-0x1F7 ports, the IDENTIFY command, and the BSY-polling read cycle that make PIO the simplest storage driver to write, if not the fastest.

  • 03
    Audio (AC97/HDA)

    The circular buffer model AC97 and Intel HDA both use to deliver samples continuously, mixer versus bus-master registers, and why AC97 is the simpler starting point.

  • 04
    Console and Terminal Emulation (ANSI Escape Sequences)

    The layer most kernels build on top of raw text/pixel drawing: an escape-sequence state machine for color and cursor movement, and scrolling as a memory copy.

  • 05
    Floppy Disk Controller (FDC)

    The 8272A/82077AA controller's legacy I/O ports, sector-by-sector reads via the system's legacy channel 2 DMA, and why this obsolete device remains a common first storage driver.

  • 06
    Keyboard

    Reading scancodes from the PS/2 keyboard controller and turning them into characters.

  • 07
    Networking (NIC Driver Model)

    The transmit/receive descriptor rings most network controllers expose, how a received packet arrives as an interrupt pointing at a buffer, and why virtio-net is usually first.

  • 08
    NVMe

    The paired submission/completion queue model, the memory-mapped controller register at BAR0, and the Identify command, contrasted against AHCI's port-and-slot design.

  • 09
    PCI

    The bus every kernel uses to discover and configure the hardware attached to a machine, from disk controllers to network cards.

  • 10
    PS/2 Mouse

    Enabling the 8042 controller's second channel, the three/four-byte packet format reporting movement and buttons, and switching the device into streaming mode.

  • 11
    Real Time Clock (RTC/CMOS)

    The battery-backed chip that keeps calendar date and time across reboots and power loss, its BCD register format, and the update-in-progress race reading it has to avoid.

  • 12
    Serial Port

    Using the UART serial port as an early, reliable output channel for debugging.

  • 13
    USB

    How a device gets an address, what a descriptor tells the host about it, and why every USB keyboard on a modern board still answers to a PS/2 driver at boot.

  • 14
    VGA & Framebuffers

    Writing text and pixels to the screen, from VGA text mode to a linear framebuffer.

  • 15
    VirtIO and the Virtqueue

    The descriptor ring shared between guest and host that every virtio device (network, block, GPU) is built on, and why it's simpler than emulating real hardware faithfully.