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
90389705a7
feat: Stabilise asm/global_asm
...
Requires rust 1.59.0 or later.
2021-12-20 21:46:09 +02:00
Berkus Decker
7af16897ec
Relax several clippy checks
2021-07-11 19:58:57 +03:00
Berkus Decker
f3103126ab
Add simple serial menu for playing with kernel
2020-11-20 04:35:06 +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
3147e5327a
Add display demo in main
2020-11-19 04:05:52 +02:00
Berkus Decker
5dffa9eb8e
Add PL011 UART
2020-11-14 22:15:52 +02:00
Berkus Decker
482c62d341
Change mmu detail printer formatting
...
Print mmu features before and after init.
2020-11-14 17:33:43 +02:00
Berkus Decker
dc2a73f6c6
Provide memory intrinsics via compiler builtins
...
Use unstable feature to remove rlibc crate dependency.
2020-11-14 17:33:43 +02:00
Berkus Decker
3415ccd68c
Add JTAG helpers
2020-11-03 14:03:22 +02:00
Berkus Decker
c378250aba
Init serial before the rest
...
So we could see output from all modules.
2020-11-02 20:55:18 +02:00
Berkus Decker
d342031331
Add kernel global CONSOLE
...
Init it with mini_uart - nothing else is implemented yet.
2020-10-28 21:38:53 +02:00
Berkus Decker
7a46d7d993
Add a dummy Console device
2020-10-27 19:32:54 +02:00
Berkus Decker
41eed8e412
Add GPIO support
2020-10-25 22:57:38 +02:00
Berkus Decker
d572b2c297
Move panics to separate module
...
Add special panic code for QEMU tests.
2020-10-21 14:25:31 +03:00
Berkus Decker
fb7f86abf0
Add DMA_ALLOCATOR
2020-10-21 05:52:08 +03:00
Berkus Decker
97e2c09871
Add bump_allocator for obtaining memory without freeing it
2020-10-21 05:51:10 +03:00
Berkus Decker
4672ddace6
Add mm module and move memory alignment functions there
2020-10-20 05:40:26 +03:00
Berkus Decker
4083e955d4
Add dummy synchronisation primitive
...
It is used yet on single-core single-thread system.
Once more threads and more cores are active, better
synchronisation primitives will be introduced.
2020-10-20 05:40:25 +03:00
Berkus Decker
88b0af44cb
Add Board Support for RPi3
2020-10-20 05:39:50 +03:00
Berkus Decker
c823b42447
Update license identification
2020-10-17 22:32:16 +03:00
Berkus Decker
0692c324af
Add trap handling and test
2020-10-15 23:42:01 +03:00
Berkus Decker
408857fcb6
Add documentation
2020-10-15 22:49:31 +03:00
Berkus Decker
4898ad3139
Move global options to main.rs
2020-10-15 22:36:52 +03:00
Berkus Decker
ded53c16a7
Add MMU init code
...
Switch to cortex-a git version temporarily
(waiting for PR to be merged) with support
for all necessary registers.
2020-10-15 22:36:52 +03:00
Berkus Decker
af1cc83530
Add testing framework
...
Based on os.phil-opp.com ideas it includes running test framework in
qemu semihosting mode so that tests can indicate pass or fail to calling
process.
GitHub Actions are configured to run these tests and validate acceptance.
Add test-runner target to perform tests in qemu.
Add -nographic for qemu running tests.
Drop serial for qemu tests as well.
2020-10-06 19:27:50 +03:00
Berkus Decker
f485629fb6
Add boot code for RPi and QEMU
2020-09-21 04:01:17 +03:00
Berkus Decker
57e4b81e1c
Implement power-efficient sleep after boot-up
...
* arch-based crates, inspired by Redox
* Do not burn cpu uselessly.
* Start using cortex-a registers.
* Important: initialise stack pointer!
2020-08-09 22:00:36 +03:00
Berkus Decker
cb814b353b
Add Raspberry Pi target configuration
...
* Use rlibc for memset/memcpy
* Create linker script for raspberry pi 3
* Add aarch64 target file inspired by Robigalia
* Force bitcode embedding for LTO
2020-08-09 19:35:09 +03:00
Berkus Decker
a57833d2b1
Add basic structure
...
* Add default License
* Keep a changelog
* Add Code of Conduct
* Build tests as optimized for size ('s')
* Otherwise boot code goes bonkers in qemu
2020-08-09 19:33:34 +03:00