Commit Graph

98 Commits

Author SHA1 Message Date
Berkus Decker a656a9bdd7 feat: Add kernel and MMIO mapping support
Not all the memory is mapped now, only kernel
sections and MMIO remap space
are mapped on the go.
2023-08-12 03:29:02 +03:00
Berkus Decker decdd0c56d refactor: 📦 Prepare exception handling code 2023-08-08 00:44:31 +03:00
Berkus Decker 0f30bf00aa refactor: 📦 Restructure code
All modules are modified to unified model
(mod.rs file in module directory).
Arch imports use modules from arch/ namespace
explicitly as arch_xxx.
2023-08-08 00:44:31 +03:00
Berkus Decker d0e4334afe refactor(cleanup): 📦 Remove unused code 2023-08-01 16:59:42 +03:00
Berkus Decker c3f23108b9 feat: Print more boot info
Temporarily play around with time, loop with
1 second delays.
2023-08-01 16:59:42 +03:00
Berkus Decker 0f435d7152 feat: Add info!/warn! to plain println!
These functions additionally log current time.
2023-08-01 16:59:42 +03:00
Berkus Decker ebb73e5cb0 chore: ♻️ Fix rustfmt and clippy complaints 2023-07-29 04:08:18 +03:00
Berkus Decker d37495bc01 fix: 🐛 Synchronise used features 2023-07-29 04:08:18 +03:00
Berkus Decker 0e1c6669ac refactor: 📦 Use better code structure
As inspired by andre-richter's tutorials.
2023-07-29 04:08:18 +03:00
Berkus Decker 46d0c4cffc fix: 🐛 Add missing exception vectors start symbol 2023-07-29 04:08:18 +03:00
Berkus Decker 45e18de842 refactor: 📦 Rearrange kernel_main 2023-07-29 04:08:18 +03:00
Berkus Decker 94d23a6a47 refactor: 📦 kernel_main should be the main entry point 2023-07-29 04:08:18 +03:00
Berkus Decker afbb317403 refactor: 📦 Improve boot code structure
Rename sections to not conflict during link.
Update linker script docs to align on PAGE_SIZE.
2023-07-29 04:08:18 +03:00
Berkus Decker dae26262bc feat(boot): Replace r0 dependency
Use pointer provenance to guarantee absence of UBs.
2023-07-29 04:08:18 +03:00
Berkus Decker 07df330b62 feat: Implement MMU based on Andre Richter's tutorial
As per https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/tree/master/10_virtual_mem_part1_identity_mapping

Bring better separation of abstract, platform and BSP code.

Init MMU and traps after serial output.
2022-05-08 12:15:21 +03:00
Berkus Decker 113b4abbc5 feat: Add UnsafeCell trick
It replaces old "C" style linker symbol references.
2022-05-08 12:11:12 +03:00
Berkus Decker 3c57c6e2df fix: 🐛 Calculate PL011 divisors, fix PullUp/Down init
Rename registers in an attempt to make them more
readable.
2022-02-10 02:15:18 +02:00
Berkus Decker e5a3ea6998 refactor: 📦 Update Mailbox code 2022-02-10 02:15:18 +02:00
Berkus Decker 61eb2f9538 feat!: Update ConsoleOps
Split ConsoleOps vs SerialOps, rename console
methods, make them saner. Add docs.
Add clear_rx() fn.

Drop default trait impls for safety.
2022-02-10 02:14:07 +02:00
Berkus Decker 33dbf79041 feat!: Add shared MMIODerefWrapper instead of per-module ones 2022-02-10 02:14:07 +02:00
Berkus Decker 4cdeeb8556 refactor: 📦 Split kernel into machine and nucleus
Move openocd task to upper level and remove kernel
build dependency - the qemu runner doesn't really
depend on it.
2022-02-10 02:14:07 +02:00
Berkus Decker af3dc82c76 docs(readme): 📚 Fix kernel type terminology
While Vesper strives to be as thin as possible
it's not exactly an exokernel, but it's a very
thin microkernel, dubbed nanokernel here.
2022-01-23 16:03:03 +02:00
Berkus Decker ca263b33a1 fix: Add missing #[must_use] attributes
Clippy was very unhappy.
2021-12-20 21:46:09 +02:00
Berkus Decker 90389705a7 feat: Stabilise asm/global_asm
Requires rust 1.59.0 or later.
2021-12-20 21:46:09 +02:00
Berkus Decker 36b2d92515 Import interfaces only when used
Fixes clippy noserial check deny(unused_imports).
2021-07-11 20:27:41 +03:00
Berkus Decker 7af16897ec Relax several clippy checks 2021-07-11 19:58:57 +03:00
Berkus Decker 155ae413b4 Replace wildcard imports with specific ones 2021-07-11 17:00:00 +03:00
Berkus Decker e4b12e2c45 Update to latest versions of dependencies 2021-07-10 03:27:47 +03:00
Berkus Decker 1644f299fe Make long hex constants readable in align tests 2021-01-27 20:10:32 +02:00
Berkus Decker 82d44a9c62 Add ASID type 2021-01-27 20:10:32 +02:00
Berkus Decker 856c4a9e68 Fix PhysAddr test 2021-01-27 19:55:52 +02:00
Berkus Decker 6281204062 Split addr module 2021-01-27 19:55:52 +02:00
Berkus Decker d3f561d214 Implement shifts for PhysAddr 2021-01-27 19:55:52 +02:00
Berkus Decker 50e955c6a7 Print test names in test_runner
Based on os.phil-opp.com Testing chapter.
2021-01-27 19:22:48 +02:00
Berkus Decker 601cf7a784 Add documentation target
Type `just doc` to see documentation in browser.

Improve doc comments in code to support
rustdoc links format.
2021-01-27 19:22:48 +02:00
Berkus Decker 20363a7e25 Fix wasteful empty loop
Thanks, clippy!
2020-12-29 18:12:38 +02:00
Berkus Decker a53ede11af Rename nightly allocator API fns 2020-12-29 18:01:07 +02:00
Berkus Decker f3103126ab Add simple serial menu for playing with kernel 2020-11-20 04:35:06 +02:00
Berkus Decker b4205f5ce6 Revert “Adjust for nightly rustfmt bug”
367ad5bbb2

https://github.com/rust-lang/rustfmt/issues/4528
is now fixed.
2020-11-20 03:09:43 +02:00
Berkus Decker d85d824bfd Switch on MMU immediately to avoid unaligned access
Since enabling armv6 unaligned access bit U in CP15 C1
requires AArch32 assembly and I don't want to introduce
yet another boot stub, I'll just initialize MMU right away
- this causes CPU to treat SCTLR_EL1.A differently and not
cause any alignment faults.

In the future, a small AArch32 boot stub that uses
now commented out fn enable_armv6_unaligned_access()
should be used to set U=1 and A=0 for full unaligned
access even when MMU is off. See ARM documentation
linked from that fn.
2020-11-20 03:09:43 +02:00
Berkus Decker 1de52fa109 Disable stack align checks
As with data align checks lets not fault on this yet.
2020-11-20 03:09:00 +02:00
Berkus Decker 696307f30c Improve traps printing 2020-11-20 03:08:40 +02:00
Berkus Decker 4cb6f29e0d Clean up boot-order
Extract shared code, fix comments.
2020-11-20 03:08:40 +02:00
Berkus Decker 43d5e4ea21 Suppress clippy warning
For now, no api change.
2020-11-19 14:50:52 +02:00
Berkus Decker 3147e5327a Add display demo in main 2020-11-19 04:05:52 +02:00
Berkus Decker e72fac01b0 Add Display output 2020-11-19 04:05:52 +02:00
Berkus Decker 2ac804793b Add minimal RPi power management
* Turn the board off
* Reboot the board
2020-11-18 02:29:09 +02:00
Berkus Decker 367ad5bbb2 Adjust for nightly rustfmt bug
See https://github.com/rust-lang/rustfmt/issues/4528
for the bug description, namely rustfmt removes
this comment completely if it's left in the
extern block.
2020-11-17 22:56:56 +02:00
Berkus Decker 5dffa9eb8e Add PL011 UART 2020-11-14 22:15:52 +02:00
Berkus Decker d124b02e7c Add set_clock_rate mailbox command 2020-11-14 22:15:52 +02:00