Skip to content

Latest commit

 

History

History
45 lines (35 loc) · 1.81 KB

File metadata and controls

45 lines (35 loc) · 1.81 KB

Genesis Roadmap

v0.1.0: Minimum viable bootloader

  • RV64GC and RV32IMA support from a single codebase, selected at build time
  • M-mode bare-metal boot path
  • S-mode boot path via OpenSBI (SBI ecall wrappers)
  • NS16550A UART driver for QEMU virt
  • HAL abstraction layer (platform_* behind hal_*)
  • Structured logger with levels and source attribution
  • Panic handler independent of the logger
  • CLINT mtime reader and microsecond busy-wait
  • Linker scripts for RV32 and RV64
  • Makefile: build, run, debug, clean, size, disasm
  • GDB integration via make debug

v0.2.0: DTB parsing and memory map

  • Minimal FDT/DTB parser (read-only traversal, no libfdt)
  • Memory region discovery from /memory node
  • UART node discovery with base address extraction
  • Platform descriptor populated from DTB at runtime
  • Boot log reports discovered memory regions and peripherals

v0.3.0: Raw kernel image loading

  • Kernel image header validation (magic bytes, version field)
  • Relocation: copy kernel to execution address if load address differs
  • Pre-jump environment: clear BSS, pass hartid and DTB in a0/a1
  • Jump-to-kernel with correct privilege level
  • Boot log reports load address, entry point, image size

v0.4.0: VirtIO block device

  • VirtIO MMIO transport (queue setup, descriptor management)
  • VirtIO block driver (read-only, polling mode)
  • Load kernel from block device instead of fixed RAM address
  • Block read error detection and reporting

v0.5.0: Configuration and multi-boot

  • Simple INI-style config parser (no dynamic allocation)
  • Boot entry selection with timeout and UART menu
  • Boot variables: kernel path, kernel arguments, DTB path override
  • Fallback to first valid entry on bad config