1
2
Fork
You've already forked emberjade
0
simple but useful OS for underpowered communication devices [super experimental and unfinished!]
  • C 96.5%
  • Makefile 3%
  • Scheme 0.5%
2025年09月27日 21:54:36 +01:00
initfs More of the settings system, and mkinitfs 2025年09月27日 21:54:36 +01:00
os More of the settings system, and mkinitfs 2025年09月27日 21:54:36 +01:00
platform More of the settings system, and mkinitfs 2025年09月27日 21:54:36 +01:00
util/mkinitfs More of the settings system, and mkinitfs 2025年09月27日 21:54:36 +01:00
vendor Beginnings of the settings subsystem 2025年09月27日 20:18:43 +01:00
.gitignore More of the settings system, and mkinitfs 2025年09月27日 21:54:36 +01:00
.gitmodules Improve storage and add basic text/icon display for debugging & errors 2025年09月27日 00:56:14 +01:00
Doxyfile Add basic storage and filesystem APIs + LittleFS backend 2025年09月07日 22:44:25 +01:00
LICENSE.md Relicense to OQL 2025年09月27日 13:01:22 +01:00
Makefile More of the settings system, and mkinitfs 2025年09月27日 21:54:36 +01:00
manifest.scm more filesystem functions and global filesystem manager 2025年09月14日 15:21:42 +01:00
README.md More of the settings system, and mkinitfs 2025年09月27日 21:54:36 +01:00

Emberjade

Emberjade is an experimental application environment and mini-OS for underpowered communication devices.

It's in development!! You can't use it for anything yet!!

Emberjade is licensed under the Opinionated Queer License, version 1.2.

Architecture

The codebase is split into two main sections, "OS" and "platform" (abbreviated "PF"). The OS section deals with general functionality and high level features, while the platform section is responsible for interacting with the hardware, effectively a hardware abstraction layer. Additionally, there is only one unified implementation of the OS, while the platform code is specific to a particular device (or virtual device), providing a consistent API to the OS code that abstracts the differences in hardware backends.

Currently, the only supported platform is sdl3. This is also the default option in the Makefile.

Building

The exact build steps will depend on the target device, but in general, you will need to provide a libc implementation (maybe this will change in future?) as well as your cross compilation toolchain of choice (unless building for a virtual device).

To build for the sdl3 platform, you can use your system's libc and toolchain, plus you need to install SDL3 in such a way that pkg-config can find it.

To build all sources and create the default binary output, run make. You can specify the platform using make PLATFORM=... or by editing the Makefile. To build documentation (which requires Doxygen), run make docs. The sdl3 platform also provides a convenience target to build and launch the system at once: make run.

When building using make or make run, the initial filesystem images will be built at the same time (initfs-system.bin and initfs-data.bin usually). These will not be rebuilt automatically if the contents of initfs/ are changed! You should either run make clean to force them to be rebuilt, or individually rebuild them with make initfs-system.bin etc.