středa 30. května 2018

Raspberry Pi bez OS

Jak si na Raspberry Pi spustit jen vlastní program bez operačního systému?

Stačí pro daný procesor zkompilovat binárku (nejlépe pomocí gcc v samotném Raspbianu :-)) a potom ji nahrát na kartu. Nebo pomocí cross compileru, Raspberry Pi 3 je založeno na Cortex-A53 based (BCM2837).

Popis startu broučka:

Je zajímavé, že celý SoC startuje GPU, první Bootloader je v ROM paměti SoC. Druhý Bootloader je už načítán z SD karty do L2 cache tedy obligátní bootcode.bin, ten zase povolí SDRAM a spustí třetí Bootloader loader.bin opět z SD karty. loader.bin načte firmware pro GPU, tedy start.elf. Firmware start.elf přečte konfigurační soubor(y) (config.txt), načte kernel.img (adresa 0x8000) a poté ho spustí. Ještě před spuštěním se mohou načítat také dtb moduly (nebyla chuť zkoumat co to je...).



export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-

apt-get install gcc-aarch64-linux-gnu

Schéma RPi3 B
BCM2836 ARM-local peripherals
Cortex™-A7 MPCore™ Technical Reference Manual
RPi Pinout
BCM2835 ARM Peripherals

Adresy periférií
0x20000000 - 0x20FFFFFF Pi Zero, Pi Zero W
0x3f000000 - 0x3FFFFFFF Pi 2, Pi 3

Adresy SDRAM
0x40000000 Pi Zero, Pi Zero W
0xC0000000 Pi 2, Pi 3

JTAG OpenOCD tutorial

http://ozzmaker.com/how-to-cross-compile-the-kernel-for-the-raspberry-pi/
https://support.dce.felk.cvut.cz/mediawiki/images/a/a5/Dp_2017_prochazka_tomas.pdf
https://github.com/dwelch67/raspberrypi

ARM Assembler
http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/