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 e6ab38f228 Hide tuts not implemented in Rust yet 7 years ago
..
Makefile Hide tuts not implemented in Rust yet 7 years ago
OLVASSEL.md Hide tuts not implemented in Rust yet 7 years ago
README.md Hide tuts not implemented in Rust yet 7 years ago
delays.c Hide tuts not implemented in Rust yet 7 years ago
delays.h Hide tuts not implemented in Rust yet 7 years ago
gpio.h Hide tuts not implemented in Rust yet 7 years ago
kernel8.img Hide tuts not implemented in Rust yet 7 years ago
link.ld Hide tuts not implemented in Rust yet 7 years ago
main.c Hide tuts not implemented in Rust yet 7 years ago
mbox.c Hide tuts not implemented in Rust yet 7 years ago
mbox.h Hide tuts not implemented in Rust yet 7 years ago
start.S Hide tuts not implemented in Rust yet 7 years ago
uart.c Hide tuts not implemented in Rust yet 7 years ago
uart.h Hide tuts not implemented in Rust yet 7 years ago

README.md

Tutorial 07 - Delays

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

Delays.h, delays.c

wait_cycles(n) this is a very straightforward thing, we execute the 'nop' instruction n times.

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

wait_msec_st(n) is a BCM specific implementation, which uses the System Timer peripheral (not available on qemu).

Main

We use different wait implementations between printing strings on serial console.