Berkus Decker
e8da38e04f
Add qemu-gdb target
...
Refactor QEMU runners.
2020-11-14 17:59:50 +02:00
Berkus Decker
7604f7c166
Add cargo expand task
2020-11-14 17:33:43 +02:00
Berkus Decker
09003a7da2
Traps: print more detailed exception report
2020-11-14 17:33:43 +02:00
Berkus Decker
373f4753dc
Disable alignment checks right on boot
...
Specifically, before we print any numbers - rust
core fmt_u64 uses a little optimisation that
ldrh/strh to unaligned addresses.
2020-11-14 17:33:43 +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
df0510266e
Fix formatting
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
bfba78118f
Move build-std flags to cargo config
2020-11-14 17:33:43 +02:00
Berkus Decker
aac05a8776
Increase stack print buffer size to print test panics
...
Tests may write pretty long messages in panic output.
2020-11-14 17:33:43 +02:00
Berkus Decker
50d9caa5f6
Set stack pointer immediately upon boot
2020-11-14 17:33:43 +02:00
Berkus Decker
20c7c8bd7e
Refactor non-DRY boot code
2020-11-14 17:33:43 +02:00
Berkus Decker
79028dba96
Add nm helper target
2020-11-04 22:24:39 +02:00
Berkus Decker
6da44a69ac
Improve gdb runner
2020-11-04 22:24:34 +02:00
Berkus Decker
d38661b63f
Add openocd/gdb targets to makefile
...
Refactor build system scripts a bit.
2020-11-03 19:29: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
ab696eca8e
Implement Error type for traps module
...
Recommended by the clippy lint
https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err
Using snafu because it already has a no_std feature
unlike thiserror.
2020-10-28 21:38:53 +02:00
Berkus Decker
fef66a0191
Bump cortex-a dependency to released version
2020-10-28 21:38:53 +02:00
Berkus Decker
cecddea41e
Add mini_uart implementation
2020-10-27 19:33:23 +02:00
Berkus Decker
7a46d7d993
Add a dummy Console device
2020-10-27 19:32:54 +02:00
Berkus Decker
9f06e2f1a5
Add clippy features matrix
...
Run clippy on all available feature combos.
2020-10-27 13:09:21 +02:00
Berkus Decker
201cf1e4af
Add noserial feature flag
2020-10-27 11:34:56 +02:00
Berkus Decker
ea75413df0
Add looping/delay helpers
2020-10-27 11:34:36 +02:00
Berkus Decker
41eed8e412
Add GPIO support
2020-10-25 22:57:38 +02:00
Berkus Decker
0def5a4687
Split test failure printing in two parts
...
Due to static buffer size the panic info might not fit. We still
want to print [failed] message in this case though.
2020-10-25 22:21:42 +02:00
Berkus Decker
79baa20eb6
Adjust indentation in debug output
2020-10-25 22:21:40 +02:00
Berkus Decker
e19177da52
Add FrameBuffer configuration
2020-10-25 04:11:27 +03:00
Berkus Decker
c3d8424a46
Update cortex-a dependency
...
While we wait for merge of master repository PRs.
2020-10-24 18:08:20 +03:00
Berkus Decker
6ae59124a6
Add MailboxOps trait
2020-10-21 16:28:08 +03:00
Berkus Decker
e6d4bf6095
Improve test runner
2020-10-21 14:25:31 +03: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
6c5d7a13fc
Add more information to READMEs
...
https://scarfolk.blogspot.com/
2020-10-21 05:52:08 +03:00
Berkus Decker
fb7f86abf0
Add DMA_ALLOCATOR
2020-10-21 05:52:08 +03:00
Berkus Decker
e48316cc4b
Add mailbox module
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
504dcd1f65
Update copyrights
2020-10-15 23:04:01 +03:00
Berkus Decker
458aba6652
Gate QEMU functions behind testing features
...
At least for now, it's not used anywhere else.
2020-10-15 22:49:31 +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
2f663f61de
Move stack start constant to linker script
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
2ef8999daf
Remove not necessary inline attributes
...
Now with the bug fixed we can optimise this code for size.
2020-10-13 22:16:19 +03:00
Berkus Decker
44ef31ff77
Add missed clobbered registers in asm block
...
Fixes mis-compilation described in rust-lang/rust#68812 .
2020-10-13 22:14:32 +03:00
Berkus Decker
44037398d4
Add hopper make target
...
hopper is useful for inspecting kernel disassembly.
2020-10-07 21:23:23 +03:00
Berkus Decker
d453d60e19
Bump qemu-exit to version 1.0
2020-10-07 13:00:30 +03:00
Berkus Decker
041c4add0d
Bump r0 to version 1.0
2020-10-07 13:00:28 +03:00
Berkus Decker
4cc5305dc8
Prepare scripts for windows CI runner
2020-10-06 19:27:50 +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
9fd9612b77
Fix entry point to always start a binary
...
Keep vectors table.
Do not keep boot data if not referenced.
2020-09-21 04:01:21 +03:00
Berkus Decker
cd16b733e9
Add non-allocating formatted write implementation
2020-09-21 04:01:18 +03:00
Berkus Decker
f485629fb6
Add boot code for RPi and QEMU
2020-09-21 04:01:17 +03:00
Berkus Decker
668296b8e0
Fix clippy warning
2020-08-10 00:34:49 +03:00
Berkus Decker
a4a3289712
Add GH Actions build workflow
2020-08-10 00:34:49 +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
57fc6e5aa5
Add QEMU configuration
2020-08-09 19:40:57 +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