You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Andre Richter 99f4dc24b3
Change dockcross path to newest upstream release
6 years ago
..
raspi3_glue Add timer tutorial 6 years ago
src Add tutorial 0A_power 6 years ago
Cargo.lock Add timer tutorial 6 years ago
Cargo.toml Add timer tutorial 6 years ago
Makefile Change dockcross path to newest upstream release 6 years ago
README.md Add tutorial 0A_power 6 years ago
aarch64-raspi3-none-elf.json Add timer tutorial 6 years ago
kernel8.img Add timer tutorial 6 years ago
link.ld Add timer tutorial 6 years ago

README.md

Tutorial 09 - Delays

It is very important to wait precise amounts of time while you are interfacing with low level hardware. In this tutorial, we'll cover thee ways. One is CPU frequency dependent (and useful if wait time is given in CPU clock cycles), the other two are µs based.

delays.rs

delays::wait_cycles(cyc: u32) this is very straightforward, we execute the nop instruction n times.

delays::wait_msec(n: u32) this implementation uses ARM system registers (available on all AArch64 CPUs).

delays::SysTmr::wait_msec_st(&self, n: u64) is a BCM specific implementation, which uses the System Timer peripheral (not available on qemu).

uart.rs

We can now conveniently use delays::wait_cycles() in Uart::init().

main.rs

We test our different wait implementations.