Giter Site home page Giter Site logo

jakubgawron1 / bold Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wazzaps/bold

0.0 0.0 0.0 674 KB

My os thingy

License: GNU General Public License v2.0

Rust 97.39% Python 0.90% Shell 0.70% Dockerfile 0.16% Perl 0.08% Makefile 0.08% C 0.69%

bold's Introduction

BoldOS

Tested on Raspberry pi 3 on QEMU

Mix of:

  • https://github.com/cs140e/rpi3-rust-template
  • https://github.com/bztsrc/raspi3-tutorial
  • https://wiki.osdev.org/Raspberry_Pi_Bare_Bones
  • My ideas

Screenshot

Screenshot

Development environment (linux) - with GUI

  • Install dependencies:
    • apt install clang llvm binutils-aarch64-linux-gnu dosfstools mtools curl gdb-multiarch qemu-system-aarch64
  • Install rust:
    • curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
      • (Default everything)
    • rustup component add rust-src
    • rustup override set nightly
  • Run it:
    • cargo run --release

Development environment (linux) - without GUI

  • Install dependencies:
    • apt install clang llvm binutils-aarch64-linux-gnu dosfstools mtools curl gdb-multiarch
    • apt install --no-install-recommends qemu-system-aarch64
  • Install rust:
    • curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
      • (Default everything)
      • source $HOME/.cargo/env
    • rustup override set nightly
    • rustup component add rust-src
  • Run it:
    • cargo run --release -- -nographic -monitor none

Extra stuff

GDB

  • Run the kernel (either cargo run --release or cargo run-stopped)
  • ./scripts/gdb_attach.sh

Parsing exceptions

  • Copy the "ESR" value
  • Run parse_esr.py, and paste it in

Todo

  • Physical page allocator
  • Fixed virtual area for kernel data
  • Cooperative multi-tasking for kernel tasks
    • Naive executor
    • Async-ify FileInterface
    • Maybe Stream-ify FileInterface?
    • Proper executor
  • Read from SDHC card
  • Print kernel argv
  • Switch to EL1 from EL2
  • Enable paging for EL1
  • CI with Docker + GH actions
  • Dynamically sized virtual allocator for kernel data
    • Dynamically map pages and allocate page tables
  • Exception handling
  • Interrupts
    • UART1 interrupts
    • Timer interrupts
  • Multicore
    • Park cores properly
    • Execute tasks
  • Higher-half kernel
  • Make use of DTB
  • Parse tar initrd
  • Run code in EL0 (usermode)
  • Paging for usermode
  • FAT32 driver
  • IPC layer (basic)
  • VFS layer?
  • Structured Exception Handling
  • Simple Bluetooth
  • Power management for RPI3
  • USB
  • USB HID Keyboard
  • USB CDC Ethernet
  • Usermode ICMP ping utility

bold's People

Contributors

wazzaps avatar raz-b avatar dependabot[bot] 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.