System Programming / Bare Metal

Aus C und Assembler mit Raspberry

In this course, we will focus on system programming for a Raspberry Pi. I will repeatedly emphasize that we have to program everything from the ground up, and fundamentally, the system knows nothing except where certain functions lie within the Raspberry's address space. These functions, referred to as registers on the Raspberry Pi, directly interact with the hardware. Certain values stored there directly interface with the hardware. We can use these registers. However, we must distinguish between those that are read-only, write-only, and those that are both readable and writable. To work with these registers, we need to refer to the appropriate documentation for the peripherals. Typically, such information is also shared. For Raspberry Pis, this documentation is provided at the web address https://www.raspberrypi.org/documentation/hardware/raspberrypi/README.md. Unfortunately, this information is not complete, so alternative sources of information may also be necessary. A good resource for this is https://elinux.org/RPi_Hub or one may go through a forum (https://www.raspberrypi.org/forums/) where such questions can be asked. It is possible that another user may have already encountered the same issues.