64 Commits (7014c0cdfd6c5bff4cb5a6267ae03e2186cf4467)

Author SHA1 Message Date
Andre Richter 7014c0cdfd
Bump dependencies 2 years ago
Andre Richter b7b2d31c24
Rewrite timer subsystem 2 years ago
Andre Richter 8ab5417c77
Bump dependencies 2 years ago
Andre Richter 08439f33d2
Bump compiler and dependencies 2 years ago
Andre Richter b48a89faf0
Bump dependencies 2 years ago
Andre Richter 728ca1b6ad
Bump dependencies 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 d4d8ebe2e0
Bump dependencies 2 years ago
Andre Richter ad5a96db4c
Bump compiler version 2 years ago
Andre Richter 1581b26995
Panic: Print location 2 years ago
Andre Richter 68b81aa6a0
Panic: Guard against infinite panic loops 2 years ago
Andre Richter 722e8b7232
Print a timestamp on panic 2 years ago
Andre Richter 97ff6f100c
Minor dependency upgrade 2 years ago
Andre Richter a4a9d0d2bf
Update dependencies 2 years ago
Andre Richter 7d02537515
Bump toolchain 2 years ago
Andre Richter 41cd775c96
Bump dependencies 3 years ago
Andre Richter 909b05b23f
Bump compiler version 3 years ago
Andre Richter 062722a9e6
Update toolchain 3 years ago
Andre Richter b23c4318f2 Switch to tock-registers: Documentation and misc updates 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 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 223989adb9
Overhaul linker script 3 years ago
Andre Richter 6db8b2bc72
Update toolchain 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 3 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.
3 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 d6a1fad628
Bump compiler version 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 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 9b4173724e
Bump toolchain version to 2020-09-24 4 years ago
Andre Richter b585f64e30
Shuffle constant to more fitting module 4 years ago
Andre Richter 14be6a5f45
Update binaries (new FBRD) 4 years ago
Andre Richter 3a0b676402
Use MMIODerefWrapper everywhere 4 years ago
Andre Richter cfc3bfc996
Switch to new Rust inline asm! syntax 4 years ago
Andre Richter bf8e6c36c7
Analyzer: Invoke cargo check through Makefile 4 years ago
Andre Richter c4f9432e13
Remove xbuild. Use upstream aarch64 rust-std 🎉 🦀
`rustup target add aarch64-unknown-none-softfloat` is now a thing.
It is no longer required to build rust-std on-demand with `xbuild`.

This reduces compile-times significantly.
4 years ago