Skip to content

Commit

Permalink
platform(x86_64): initial x86_64 bringup (#216)
Browse files Browse the repository at this point in the history
Depends on #219.

This branch adds an initial implementation of an x86_64 platform target for
mnemOS, using the [`mycelium` x86 HAL][hal]. Currently, I haven't implemented
drivers for the UART, keyboard, or emb-display service (using the framebuffer as
the display), so we don't have SerMux, Forth, trace-proto, or anything else
interesting. However, what we *do* have is a basic bootable image with a timer,
allocator, and rudimentary kernel run loop, and --- as you can see here --- it
works:

![image](https://github.com/tosc-rs/mnemos/assets/2796466/8b6785cd-9a66-4735-8b03-02b8a191016f)

I've also added new `just` commands for building x86_64 images and running them
in QEMU for development.

[hal]: https://github.com/hawkw/mycelium/tree/main/hal-x86_64
  • Loading branch information
hawkw authored Aug 9, 2023
1 parent be4ccd9 commit 0e003c3
Show file tree
Hide file tree
Showing 23 changed files with 1,767 additions and 23 deletions.
14 changes: 13 additions & 1 deletion .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,16 @@ forth3 = "run --bin f3repl --release --"
rustflags = ["--cfg", "tokio_unstable"]

[target.riscv32imac-unknown-none-elf]
runner = "espflash flash --monitor"
runner = "espflash flash --monitor"

[unstable]
# Enables Cargo artifact dependencies.
#
# This allows a crate to depend on a specific binary artifact from another
# crate. This is used as part of the build process for `x86_64` targets using
# `rust-osdev/bootloader`, where a target crate depends on the kernel binary
# artifact from the kernel core crate and links it with the bootloader binary in
# a `build.rs` script.
#
# See: https://doc.rust-lang.org/cargo/reference/unstable.html#artifact-dependencies
bindeps = true
Loading

0 comments on commit 0e003c3

Please sign in to comment.