Commit Graph

113 Commits

Author SHA1 Message Date
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