All Projects → kivikakk → daintree

kivikakk / daintree

Licence: other
ARMv8-A/RISC-V kernel (with UEFI bootloader)

Programming Languages

Zig
133 projects
assembly
5116 projects
ruby
36898 projects - #4 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to daintree

Lumia950xlpkg
Non-EOL (yes!) AArch64 UEFI firmware for Lumia 950 / Lumia 950 XL
Stars: ✭ 300 (+837.5%)
Mutual labels:  uefi, armv8
Raspberrypipkg
DEPRECATED - DO NOT USE | Go here instead ->
Stars: ✭ 758 (+2268.75%)
Mutual labels:  uefi, armv8
Nintendoswitchpkg
WIP UEFI EDK2 Implementation for Nintendo Switch or generic Tegra210 platforms
Stars: ✭ 196 (+512.5%)
Mutual labels:  uefi, armv8
Hackintosh-ASUS-A455LF-Notebook
EFI Folder for ASUS A455LF-WX039D Notebook Series with Clover/OpenCore Legacy or UEFI
Stars: ✭ 27 (-15.62%)
Mutual labels:  uefi
picorv32 Xilinx
A picorv32-riscv Soc with DMAC and Ethernet controller & lwip & Kirtex7@333MHz
Stars: ✭ 49 (+53.13%)
Mutual labels:  risc-v
Tow-Boot
An opinionated distribution of U-Boot. — https://matrix.to/#/#Tow-Boot:matrix.org?via=matrix.org
Stars: ✭ 338 (+956.25%)
Mutual labels:  uefi
riscv-meta
RISC-V Instruction Set Metadata
Stars: ✭ 33 (+3.13%)
Mutual labels:  risc-v
platform-shakti
Shakti: development platform for PlatformIO
Stars: ✭ 26 (-18.75%)
Mutual labels:  risc-v
sicherboot
Unmaintained systemd-boot integration with secure boot support; consider https://github.com/Foxboron/sbctl instead.
Stars: ✭ 31 (-3.12%)
Mutual labels:  uefi
core-v-verif
Functional verification project for the CORE-V family of RISC-V cores.
Stars: ✭ 283 (+784.38%)
Mutual labels:  risc-v
FreeRTOS-RISCV
A port of FreeRTOS for the RISC-V ISA
Stars: ✭ 68 (+112.5%)
Mutual labels:  risc-v
bootutils
Utilities to create bootable disks, remaster ISO images, make multiboot ISO images
Stars: ✭ 18 (-43.75%)
Mutual labels:  uefi
WPBT-Builder
The simple UEFI application to create a Windows Platform Binary Table (WPBT) from the UEFI shell.
Stars: ✭ 72 (+125%)
Mutual labels:  uefi
meta-secure-core
OpenEmbedded layer for the use cases on secure boot, integrity and encryption
Stars: ✭ 80 (+150%)
Mutual labels:  uefi
discolix
distroless arm docker images
Stars: ✭ 22 (-31.25%)
Mutual labels:  armv8
UEFI-Utilities-2016
Various UEFI utilities built against UDK2015
Stars: ✭ 37 (+15.63%)
Mutual labels:  uefi
efi
Ergonomic Rust framework for writing UEFI applications.
Stars: ✭ 44 (+37.5%)
Mutual labels:  uefi
jsix
A hobby operating system for x86_64, boots with UEFI.
Stars: ✭ 60 (+87.5%)
Mutual labels:  uefi
CorePartition
Universal Cooperative Multithread Lib with real time Scheduler that was designed to work, virtually, into any modern micro controller or Microchip and, also, for user space applications for modern OS (Mac, Linux, Windows) or on FreeRTOS as well. Supports C and C++
Stars: ✭ 18 (-43.75%)
Mutual labels:  risc-v
FPGAmp
720p FPGA Media Player (RISC-V + Motion JPEG + SD + HDMI on an Artix 7)
Stars: ✭ 190 (+493.75%)
Mutual labels:  risc-v

daintree

An operating system plus a UEFI bootloader, all written in Zig. Currently targetting and testing on:

  • QEMU (arm64 + riscv64) with U-Boot
  • ROCKPro64 (arm64) with U-Boot
    • A mainline build is okay, but it must contain this EFI loader fix. At time of writing it has not been included in any release.

Planned support for:

  • HiFive Unmatched with U-Boot

There's a little dev blog I hope to maintain as I go. See also my personal blog:

dainboot

A gentle introduction to Zig's UEFI support. Boots like this:

  • Checks loaded image options.
    • You can pass kernel 0x12345678 0x1234 to give it the location of the kernel already loaded in RAM. Useful for TFTP boot, which itself is handy for faster development cycles on bare metal.
    • You may also pass dtb 0x12345678 0x1234 to give information about a DTB/FDT (device tree blob/flattened device tree) already in memory.
    • Separate successive options with spaces, i.e. kernel <addr> <len> dtb <addr> <len>.
  • If DTB wasn't loaded from memory, checks to see if one was passed in via UEFI.
  • If kernel or DTB (or both) were not loaded from memory, scans filesystems the UEFI system knows about, looking in the root directories for files named dainkrnl and dtb.
  • Picks the biggest unused slab of conventional memory and places the kernel there.
  • Clears data and instruction caches for loaded memory.
  • Parses the DTB and attempts to locate the serial UART port.
  • Exits UEFI boot services.
  • If necessary, disables a whole lot of traps and goes to EL1.
  • Jumps to the kernel, passing the memory map, UART write port, and framebuffer prepared by UEFI.

dainkrnl

  • Uses the UART write port to debug before the MMU is enabled.
  • Sets up the MMU, mapping the kernel, stack, framebuffer, DTB, UART device, etc. into high addresses.
  • Parses the DTB to understand what kind of serial device is connected and how to access PSCI.
  • Implements a console using a classic VGA font.
  • A shell lets you reset or poweroff the system. You can only use serial for input, but the output is muxed to the framebuffer if one is available.

license

MIT.

Some included binaries are GPL-2+ or GPL-2.0+ -- copyright notices retained and sources noted where so.

The roms/ directory contains an arm64 build of U-Boot, (C) Wolfgang Denk and licensed under GPL 2. See U-Boot's Licensing page for details. The source can be found at https://git.src.kameliya.ee/~kameliya/u-boot/log/qfw-ramfb.

It also contains a riscv64 build of same at https://git.src.kameliya.ee/~kameliya/u-boot/log/qfw-ramfb-riscv. It is embedded in a build of OpenSBI, (C) 2019 Western Digital Corporation, licensed under BSD-2-Clause.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].