Compare commits
4 Commits
7aba9aeef5
...
7c04c6f8ac
Author | SHA1 | Date |
---|---|---|
~erin | 7c04c6f8ac | |
~erin | 2ec8c62908 | |
~erin | 7711c553b2 | |
~erin | 4565edf679 |
|
@ -12,6 +12,10 @@
|
||||||
- [Filesystem](development/design/filesystem.md)
|
- [Filesystem](development/design/filesystem.md)
|
||||||
- [Configuring a Build Environment](development/environment.md)
|
- [Configuring a Build Environment](development/environment.md)
|
||||||
- [Development Workflow](development/workflow.md)
|
- [Development Workflow](development/workflow.md)
|
||||||
|
- [Debugging](debugging/README.md)
|
||||||
|
- [GDB]()
|
||||||
|
- [Logging]()
|
||||||
|
- [Performance Profiling]()
|
||||||
|
|
||||||
# User Guide
|
# User Guide
|
||||||
- [Using the OS](user/README.md)
|
- [Using the OS](user/README.md)
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Debugging
|
||||||
|
|
||||||
|
Debugging code and understanding what's going wrong is highly important, especially in a complex setup such as this.
|
||||||
|
We will try to make it as easy as possible, with tools such as [tracing](https://lib.rs/crates/tracing).
|
||||||
|
|
||||||
|
There are several external tools that can be used as well.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
# GDB
|
|
@ -34,7 +34,7 @@ The source for this site, and our [website](https://mercury.the-system.eu.org) i
|
||||||
All `crates`/`libraries` are in a `no-std` environment. This means we only have access to the [libcore](https://doc.rust-lang.org/core/) functionality.
|
All `crates`/`libraries` are in a `no-std` environment. This means we only have access to the [libcore](https://doc.rust-lang.org/core/) functionality.
|
||||||
However, we will be using the `alloc` crate to access the heap, and`collections` to have access to data structures like `Vec`.
|
However, we will be using the `alloc` crate to access the heap, and`collections` to have access to data structures like `Vec`.
|
||||||
|
|
||||||
We should, however, have basic support for [async](https://ferrous-systems.com/blog/stable-async-on-embedded/).
|
We should, however, have basic support for [async](https://ferrous-systems.com/blog/stable-async-on-embedded/) and [threading]() in `core::`.
|
||||||
|
|
||||||
## Learning
|
## Learning
|
||||||
Before jumping in, I highly recommend learning some stuff abotu **Rust** and embedded development with it.
|
Before jumping in, I highly recommend learning some stuff abotu **Rust** and embedded development with it.
|
||||||
|
@ -45,6 +45,7 @@ A thorough series of steps might be:
|
||||||
4. Take a quick look through the [Embedded Rust Book](https://docs.rust-embedded.org/book/intro/index.html)
|
4. Take a quick look through the [Embedded Rust Book](https://docs.rust-embedded.org/book/intro/index.html)
|
||||||
5. Read the [RISC-V Guide](https://github.com/mikeroyal/RISC-V-Guide)/[RISC-V Bytes](https://danielmangum.com/categories/risc-v-bytes/) to learn more about the **RISC-V** architecture
|
5. Read the [RISC-V Guide](https://github.com/mikeroyal/RISC-V-Guide)/[RISC-V Bytes](https://danielmangum.com/categories/risc-v-bytes/) to learn more about the **RISC-V** architecture
|
||||||
6. Read the OSDev Wiki entries on [Microkernels](https://wiki.osdev.org/Microkernel) and [Message Passing](https://wiki.osdev.org/Message_Passing)
|
6. Read the OSDev Wiki entries on [Microkernels](https://wiki.osdev.org/Microkernel) and [Message Passing](https://wiki.osdev.org/Message_Passing)
|
||||||
|
7. Read the [Async Book](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html)
|
||||||
|
|
||||||
Additionally you might want to learn about **Vulkan** if you're going to be hacking on the [GUI](/development/design/gui.md):
|
Additionally you might want to learn about **Vulkan** if you're going to be hacking on the [GUI](/development/design/gui.md):
|
||||||
1. Go through the [Vulkan Tutorial (Rust)](https://kylemayes.github.io/vulkanalia/introduction.html) to learn some of the basics
|
1. Go through the [Vulkan Tutorial (Rust)](https://kylemayes.github.io/vulkanalia/introduction.html) to learn some of the basics
|
||||||
|
|
|
@ -24,6 +24,8 @@ We may also use [Rhai](https://lib.rs/crates/rhai) for scripting, for easy user
|
||||||
It will also use a global configuration - similar to **Guix** or **NixOS**. This allows it to be easily setup.
|
It will also use a global configuration - similar to **Guix** or **NixOS**. This allows it to be easily setup.
|
||||||
It will likely use [RON](https://lib.rs/crates/ron) for configuration.
|
It will likely use [RON](https://lib.rs/crates/ron) for configuration.
|
||||||
|
|
||||||
|
**Note:** [figlet-rs](https://lib.rs/crates/figlet-rs) can be used for cool `ASCII` art!
|
||||||
|
|
||||||
Further design decisions are gone into detail in the next few chapters.
|
Further design decisions are gone into detail in the next few chapters.
|
||||||
|
|
||||||
## Code Organization
|
## Code Organization
|
||||||
|
|
|
@ -10,6 +10,15 @@ Afterwards, we can put focus towards building out various features.
|
||||||
|
|
||||||
Support for multiple targets will be done via `Cargo.toml` targets, cross-compilation, and [conditional compilation](https://doc.rust-lang.org/reference/conditional-compilation.html).
|
Support for multiple targets will be done via `Cargo.toml` targets, cross-compilation, and [conditional compilation](https://doc.rust-lang.org/reference/conditional-compilation.html).
|
||||||
|
|
||||||
|
## Concurrency
|
||||||
|
For performance, we will be using various concurrency programming techniques.
|
||||||
|
|
||||||
|
For **IO** intensive operations, `async` will be used.
|
||||||
|
This will include the [filesystem](/development/design/filesystem.md), [actors](/development/design/actor.md), and [GUI](/development/design/gui.md).
|
||||||
|
|
||||||
|
**CPU**-bound operations are better suited to individual `threads`, however.
|
||||||
|
This might include operations like *hashing*, *encryption*, and *indexing*.
|
||||||
|
|
||||||
## Boot Process
|
## Boot Process
|
||||||
*To be implemented*
|
*To be implemented*
|
||||||
|
|
||||||
|
|
|
@ -11,4 +11,4 @@
|
||||||
## Isolation
|
## Isolation
|
||||||
*To-Do*
|
*To-Do*
|
||||||
|
|
||||||
[^hmac]: https://cryptobook.nakov.com/mac-and-key-derivation
|
[^hmac]: [MAC and Key Derivation](https://cryptobook.nakov.com/mac-and-key-derivation)
|
||||||
|
|
Loading…
Reference in New Issue