rust-raspberrypi-OS-tutorials/08_power
2018-01-13 21:31:34 +01:00
..
delays.c Initial commit 2018-01-04 18:24:49 +01:00
delays.h Initial commit 2018-01-04 18:24:49 +01:00
gpio.h Initial commit 2018-01-04 18:24:49 +01:00
kernel8.img Fixed issue #2 2018-01-13 21:31:34 +01:00
link.ld Initial commit 2018-01-04 18:24:49 +01:00
main.c Initial commit 2018-01-04 18:24:49 +01:00
Makefile Initial commit 2018-01-04 18:24:49 +01:00
mbox.c Initial commit 2018-01-04 18:24:49 +01:00
mbox.h Initial commit 2018-01-04 18:24:49 +01:00
OLVASSEL.md Initial commit 2018-01-04 18:24:49 +01:00
power.c Initial commit 2018-01-04 18:24:49 +01:00
power.h Initial commit 2018-01-04 18:24:49 +01:00
README.md Fixed typos 2018-01-06 00:55:40 +01:00
start.S Initial commit 2018-01-04 18:24:49 +01:00
uart.c Fixed issue #2 2018-01-13 21:31:34 +01:00
uart.h Initial commit 2018-01-04 18:24:49 +01:00

Tutorial 08 - Power management

For embedded systems, power consumption is critical. The Raspberry Pi 3 has a very sophisticated PM interface. You can turn each device on and off idependently. There's a catch though, the GPIO VCC pins are hardwired, there's no way to turn them off programatically. This means if you connect some devices to them, you'll have to implement a way to turn those devices off (with a transistor connected to a data GPIO pin for example).

Power.h, power.c

The power management controller is one of the peripherals that are not emulated properly by qemu. Works on real hardware though.

power_off() shutdowns the board to a almost zero power consumption state.

reset() reboots the machine. Also handled by the PMC, and since the Raspberry Pi does not have a hardware reset button, it's very useful.

Main

We display a simple menu, and wait for user input. Depending on the input, we reboot the system or power it off.