20 Commits (2345214367cfc9a82dfdf39da257b3859e95da98)

Author SHA1 Message Date
Andre Richter 2345214367
Various minor improvements 2 years ago
Andre Richter b7b2d31c24
Rewrite timer subsystem 2 years ago
Andre Richter f6190f85b7
ASM: Remove use of .equ
The LLVM assembler apparently causes the .equ directive to create symbols
instead of just a local and temporary variable.

Work around this by using const operands with global_asm!.
2 years ago
Andre Richter 722e8b7232
Print a timestamp on panic 2 years ago
Andre Richter d901ae6cfe
Update copyright 2 years ago
Andre Richter 7d02537515
Bump toolchain 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 7f666000ce
Init DRAM in assembly instead of Rust
See https://github.com/rust-embedded/cortex-m-rt/issues/300
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 dc9b3c0f38
Add isb before timer read 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 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 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 e7a13e81b8
Upgrade to cortex-a 4.x.x 4 years ago
Andre Richter 22faff5229
Various finetunings 4 years ago
Andre Richter b585f64e30
Shuffle constant to more fitting module 4 years ago
Andre Richter 326b43b2be
Refactor tutorial X1 4 years ago