98 Commits (de3ba3e871d57ae6b6c0776292a22b6bb1d110ee)

Author SHA1 Message Date
Andre Richter de3ba3e871 Refactor Tests and Makefile
- Carve out common files for tests
- Add boot tests starting tutorial 3
- Overhaul the Makefile for more structure
3 years ago
Andre Richter b23c4318f2 Switch to tock-registers: Documentation and misc updates 3 years ago
Andre Richter e1728636c1 Switch to tock-registers: Sources for tutorials 13..02 3 years ago
Andre Richter 8c2cec00be
Assembly: Use local label syntax for named labels
This prevents that they show up in the symbol table.
3 years ago
Andre Richter 5d6b68d710
rust-analyzer: Fix error with recent version 3 years ago
Andre Richter 7f666000ce
Init DRAM in assembly instead of Rust
See https://github.com/rust-embedded/cortex-m-rt/issues/300
3 years ago
Andre Richter 80c88e4d6b
Bump toolchain version; Fix clippy warnings 3 years ago
Andre Richter f6f668c781
Fix misspelled clippy lint 3 years ago
Andre Richter d296ad4aa4
Minor fixes 3 years ago
Andre Richter 9f1920c2c6
Give the project a name
🦩
3 years ago
Andre Richter c0da8ab1b7
Remove confusing statement 3 years ago
Andre Richter b4ed84dd77
Replace ldr pseudo-instruction with adrp/add 3 years ago
Andre Richter 2432c0d283
Revert to assembly boot code
It is too risky to rely on the compiler to not insert any operations using the
stack.

Having a stack-setting call in Rust using the cortex-a crate as the first action
in a Rust-only _start() function does not work if you're subsequently using the
stack, because the compiler often inserts the operations to make room on the
stack to prepare a function call BEFORE the call to set the stack, which crashes
the boot process.

Hence, keep on using a small piece of assembly boot code throughout.
3 years ago
Andre Richter 6a9af3c202
change static type 3 years ago
Andre Richter 223989adb9
Overhaul linker script 3 years ago
Andre Richter 2f90304149
Add color and verbosity to Makefile 3 years ago
Andre Richter 5e65a80145
Rework conditional compilation for lib.rs for tests 3 years ago
Andre Richter aeadda4b7e
Bump dependencies 3 years ago
Andre Richter 6db8b2bc72
Update toolchain 3 years ago
Andre Richter a5884321a7
Fix rustdoc warnings 3 years ago
Andre Richter dc9b3c0f38
Add isb before timer read 3 years ago
Andre Richter 8324b1fdac
PL011: Use BUSY bit
Fixes #100
3 years ago
Andre Richter e7cb61b389
Refactoring
- Don't wildcard-import from arch modules. Make it explicit.
- Put translation table code into its own module.
- Put boot code in boot.rs instead of cpu.rs
- Other minor changes, most memory subsystem.
3 years ago
Andre Richter c35a30cd0b Bump UART to 921_600 baud + other bugfixes
Fixes #95
Fixes #98

Co-authored-by: Takumasa Sakao <sakataku7@gmail.com>
3 years ago
Andre Richter f2a891236e
Remove unused feature 4 years ago
Andre Richter ee52e8e288
Bump UART to 576000 baud 4 years ago
Andre Richter 269df3e25d
Update toolchain 4 years ago
Andre Richter 44bb3f8942
Update copyright year 4 years ago
Andre Richter d212348931
Bump compiler version.
We have to remove the `#[naked]` attribute from `_start` for now, since it emits
a warning now when used with non-asm statements in the function body. For now,
just hope for the compiler's mercy to not emit code using the stack pointer
before we've actually set up a stack.
4 years ago
Andre Richter e8d30392d0
Add LTO 4 years ago
Andre Richter 2c3f705051
Update dependencies
register-rs 1.0.0 now uses UnsafeCell internally, which means we lost the Copy
derive on InMemoryRegister.

Therefore, a small set of changes was needed in the MMU driver to dance around
the static array init depending on a Copy type.
4 years ago
Andre Richter bd16dfe4b3
Demangle++: Pipe through rustfilt 4 years ago
Andre Richter d6a1fad628
Bump compiler version 4 years ago
Andre Richter 5c193d5803
Change to a simpler mutex API 4 years ago
Andre Richter 02f9f34af3
More sound Phantom in MMIO deref wrapper 4 years ago
Andre Richter 163e2010ab
GPIO: Fix RPi4 driver init
The RPi4 GPIO pull-up/pull down sequence is done differently than on the
RPi3. Switch to using the correct way.

Also, configure pull-ups for both UART pins.

Fixes #81
4 years ago
Andre Richter 098e19ecc4
Fix zero-sized bss handling 4 years ago
Andre Richter b30bc518c4
Switch to GCC objdump and nm
The GCC versions of `objdump` and `nm` seem to have better out-of-the-box
support (for AArch64). Demangling works better, and instructions in objdump are
presented as 4 bytes instead of 4 * 1 bytes, which helps a lot.

Hence, switch to the GCC versions for now until LLVM has caught up.
4 years ago
Andre Richter 9e6ef76aeb
Make cortex-a platform specific dep 4 years ago
Andre Richter e7a13e81b8
Upgrade to cortex-a 4.x.x 4 years ago
Andre Richter 27a1d10cc3
Remove UB in linker script symbol <-> Rust handover 4 years ago
Andre Richter 677b274a1f
Add a panic version of the GPIO to panic!() 4 years ago
Andre Richter 22faff5229
Various finetunings 4 years ago
Andre Richter 37b9d1435e
Move anything wrt linker symbols to bsp::memory
Also, some rewording of data types.
4 years ago
Andre Richter 1d46dd40b6
Run of prettier over whole repo 4 years ago
Andre Richter 9b4173724e
Bump toolchain version to 2020-09-24 4 years ago
Andre Richter b585f64e30
Shuffle constant to more fitting module 4 years ago
Carl Fredrik Samson 0afffdeac7 Added short explanation of the BRD calculations for setting up UART re #70 4 years ago
Andre Richter 14be6a5f45
Update binaries (new FBRD) 4 years ago
Andre Richter 87e74f62cd
UART: Fix FBRD
Closes #70

Co-authored-by: Carl Fredrik Samson <cfsamson@users.noreply.github.com>
4 years ago