Giter Site home page Giter Site logo

slice's Introduction

Slice OS

Slice is (going to be) a very basic operating system for the Raspberry Pi, written from the ground up. It is designed with the following principles in mind:

  1. Simplicity. By eschewing portability and focusing only on the Raspberry Pi the code base can be kept small and sane.

  2. Modularity. Slice is a meant to be pulled apart and is constructed with perforated seams. Logically separate slices of Slice (pun absolutely intended) are kept as independent as possible to facilitate their replacement or inclusion in other projects. It is the OS designer's playground.

  3. Readability. Modern operating systems are large, complex beasts. the novice developer trying to understand them through their source code is faced with a daunting task. Slice is heavily commented and aims to be self-documenting. Each compilation unit contains an explanation of its its role in Slice, how it works and why it was designed that way.

Progress

Below I will report progress on the various sub-systems as I write them. They appear roughly in order of conception.

Framebuffer

I have basically written enough of a framebuffer driver to dump basic text output on the screen. It supports a built-in bitmapped font and scrolling.

Console

The console doesn't do a whole lot. This code will act as a thin layer around the framebuffer driver when it comes time to implement a terminal driver. Basic responsibilities involve managing the cursor position, text wrapping and scrolling when necessary.

SD Card Controller

Although the EMMC supports MMC as well, I am only implementing SD to keep things simple. This driver detects and initializes the SD card and provides a simple interface for reading and writing.

File System

Slice uses the 32 bit version of Microsoft's FAT file system (FAT32). While FAT is not the most intuitive design for a filesystem, it is (arguably) the simplest that is widely supported by other systems. This will allow the user to access the filesystem from a machine running a production OS.

References

This undertaking would not be possible without the vast corpus of freely available tutorials, literature, and forums online. Here is a comprehensive list of sources that I consulted in writing Slice. All of these documents are (as far as I'm aware) completely free although some of the hardware manuals require you to register with the vendor - usually just and e-mail will suffice.

Technical Manuals

Tutorials

Existing Code

Miscellany

slice's People

Contributors

dkudrow avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.