<< Zpět

 

  Česky: , English:

PiLibSDK

Bare-metal SDK knihovna pro moduly Raspberry Pi

Před-alfa verze 0.40, rozpracováno - ve vývoji

Poslední aktualizace: 18.06.2026

(c) 2026 Miroslav Němeček

https://github.com/Panda381/PiLibSDK

Download knihovny spolu s ukázkovými aplikacemi a všemi podklady (360 MB)

Poznámka: Schémata a plošné spoje jsou ve formátu programu KiCAD verze 9.

Obsah

 

Úvod

PiLibSDK je bare-metal knihovna pro moduly Raspberry Pi. "Bare-metal" znamená, že programy běží na čistém hardware bez operačního systému, nepodléhají operačnímu systému a mají plný přístup k hardware. Moduly Raspberry Pi lze tak používat podobným způsobem, jako mikročipy. Výhodou je i to, že zařízení je plně v provozu do 3 sekund od zapnutí napájení. V současnosti jsou podporovány moduly Raspberry Zero 1, Zero 2 W, Pi 2 a Pi 3. Podpora modulů Pi 4 a Pi 5 je velmi omezená, a pravděpodobně ani v budoucnu nebudou podporovány, protože jejich přínos je pro bare-metal využití malý.

Ukázkové programy jsou připravené pro hardware modulární mikročipové stavebnice BarePi (linky: www, GitHub). Zapojení hardware samozřejmě není nutné dodržet, ale jedná se o nejobvyklejší přiřazení signálů pinům. Hlavním zařízením je herní konzole ZeroTiny, která odpovídá sestavení modulů stavebnice "Zero", "Base" a "KeyPad".

K zařízení je možné připojit i LCD SPI displej 320x240 pixelů, s řadičem ST7789. Zapojení odpovídá modulu "LCD320x240" stavebnice BarePi. Software knihovny je připraven tak, že pokud detekuje připojení modulu LCD320x240, aktivuje SPI výstup na displej a odesílá obraz i na tento LCD displej. Detekce se provádí rezistorem 10K zapojeným mezi piny DC a CS. Chcete-li mít možnost u koncového zařízení výstup na LCD displej vypínat, můžete to provést vypínačem připojujícím tento rezistor 10K. Detekce probíhá při startu aplikace nebo loaderu - po změně přepínače je tedy nutné ukončit nebo spustit program nebo loader. Vypnutí výstupu na LCD displej zajistí rychlejší chod programu, protože odesílání dat na LCD displej program značně zatěžuje.

Přestože má LCD SPI displej rozlišení pouze 320x240 pixelů, je možné používat i programy s rozlišením 640x480 pixelů. Driver automaticky provede zmenšení obrazu na cílový rozměr. Je-li potřeba na LCD displeji zobrazit detaily, které se zmenšením obrazu ztratí, je to možné stiskem kláves Alt+[A] - funkce označená "Insert", zde se používá ve významu "Zoom". Při stisku kláves se na LCD displeji zobrazí postupně jednotlivé 4 kvadranty obrazu v plném rozlišení, pátým stiskem se obnoví zobrazení plného zmenšeného obrazu.

Není-li při použití LCD displeje potřeba výstup na HDMI monitor, kabel monitoru odpojte. To zajistí značný pokles odběru proudu (zhruba ze 400mA na 200mA), což je významné především při provozu konzole z baterie. Detekce připojení HDMI monitoru se provádí při startu programu - po odpojení nebo připojení HDMI monitoru je proto nutné ukončit nebo spustit program nebo loader. U modulu Raspberry Zero 1 může být pro detekci HDMI monitoru nutné odpojit a připojit napájecí napětí.

Připojíte-li k zařízení RTC obvod hodin reálného času DS3231, budou z něj spouštěné aplikace načítat aktuální reálný čas. Pro I2C EEPROM paměti je připravena možnost ukládání konfigurace programů.

Pro zařízení BarePi je k dispozici boot loader, který umožňuje snadné spouštění programů z SD karty. Programy jsou připraveny pro BarePi i ZeroTiny, s moduly Zero 1, Zero 2 32bit nebo Zero 2 64bit. Moduly Zero 1 a Zero 2 se liší především rychlostí - Zero 2 je znatelně rychlejší než Zero 1. Vyšší rychlost je dána nejen vyšší frekvencí procesoru, ale také novější architekturou. Kromě toho modul Zero 2 disponuje 4 jádry, zatímco Zero 1 pouze jedním jádrem. Přednostně se proto doporučuje používat modul Zero 2. Modul Zero 1 použijte pouze v případě, že ho vlastníte a nemáte pro něj lepší využití. Modul Zero 2 lze provozovat v 32bitovém nebo 64bitovém módu. Překlady jsou připraveny pro oba módy. Z uživatelského hlediska není mezi módy znatelný rozdíl. Doporučuje se dávat přednost 64bitovému módu, který může být v některých případech o trochu rychlejší.

Zařízení stavebnice BarePi lze ovládat jednak herní klávesnicí "KeyPad" a jednak alfanumerickou klávesnicí "MiniKey". Klávesy z klávesnice "KeyPad" jsou mapovány současně i na klávesy klávesnice "MiniKey". Pro odlišení značení kláves se akční klávesy z herní klávesnice uvádí v hranatých závorkách, zatímco znakové klávesy se uvádí bez závorek. Např. "[A]" označuje akční tlačítko "A" na herní klávesnici. Význam tlačítek na herní klávesnici a jejich mapování na alfanumerickou klávesnici je následující.

Poznámka: Ke spouštění programů není boot loader nutný. Programy můžete spouštět i na samotném modulu Zero1/Zero2, bez dalšího hardware a bez boot loaderu. Na SD kartu nakopírujte systémové soubory z Root adresáře z příslušné složky !ZeroTiny*. Jsou zapotřebí soubory "bootcode.bin", "config.txt", "fixup.dat" a "start.elf". Program zkopírujte do Root složky také, a přejmenujte ho na KERNEL.IMG. Po zapnutí napájení se program automaticky spustí.

 

Licence

Všechny mé zdrojové kódy a data jsou zcela volně k použití pro jakékoli účely. Výjimkou jsou některé soubory odvozené ze zdrojů třetích stran – na ty se vztahuje licence původního autora. Patří sem většina fontů, stejně jako části zdrojových souborů převzaté z knihovny Circle a kódu pro Linux – tyto části jsou ve zdrojových souborech označeny.

Většina fontů v této knihovně nejsou mým výtvorem. Byly staženy z internetu z neznámých zdrojů s neznámými licenčními podmínkami použití. Pokud chcete používat pouze striktní licence, nepoužívejte fonty z této knihovny.

 

Kompilace

Ke kompilaci v 32-bit módu potřebujete AArch32 GCC (jménu toolu "arm-none-eabi"). Instalujte do C:\ARM_GCC32.

https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/binrel/arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-arm-none-eabi.msi

Ke kompilaci v 64-bit módu potřebzujete AArch64 GCC (jménu toolu "aarch64-none-elf"). Instalujte do C:\ARM_GCC64.

https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/binrel/arm-gnu-toolchain-15.2.rel1-mingw-w64-i686-aarch64-none-elf.msi

z https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

Pokud použijete jiné cesty, upravte cesty v _c1.bat ("set GCC_PI_PATH").

 

Adresáře

K přípravě SD karty připravte SD kartu ve formátu FAT32, nahrajte na ni obsah složky !BarePi a také jednu ze složek !BarePi_* (podle typu modulu).

 

ZeroTiny

ZeroTiny je nejjednodušší herní konzole s moduly Raspberry Zero 1 nebo Zero 2. Odpovídá sestavení modulů "Zero", "Base" a "KeyPad" ze stavebnice BarePi. Přednostně se doporučuje používat modul Zero 2 v 64bitovém módu. Modul Zero 1 může být v některých aplikacích znatelně pomalejší. ZeroTiny obsahuje 9 tlačítek, stereofonni zvukový PWM výstup a výstup na HDMI displej. K dispozici je boot loader umožňující snadné spouštění programů z SD karty.

Konstrukčně je ZeroTiny řešen sendvičovým stylem. U mého prototypu jsem modul Zero připojil k základní desce přes 8mm dutinkovou lištu - především z důvodu snadné výměny modulu. Přiletujete-li modul Zero k desce pouze přes pinovou lištu, konstrukce bude nižší. Ovšem může být obtížnější opravitelnost, např. výměna tlačítka.

Podrobné podklady k hardware ZeroTiny naleznete ve složce "_devices/BarePi/ZeroTiny".

Zdrojové kódy s ukázkovými programy naleznete ve složce "Apps".

Přeložené ukázkové programy naleznete ve složkách "!BarePi*", podle typu modulu a podle módu procesoru.

Konzole ZeroTiny sestavená z modulů BarePi:

 

Ukázkové aplikace

System


KERNEL - Loader of
applications

SYSINFO - System
information

Book


ABC - Fairy Tales
from the Alphabet
(Czech)

GINGER - Gingerbread
House (English)

GINGERCZ -
Gingerbread House
(Czech)
   

Demo


BALLOONS - Flying
balloons

BIGFACT - Factorial of
123456789!

DRAW - Drawing
graphic elements

EARTH - Rotating
globe

FLAG - Fluttering flag

FLAG2 - Fluttering
custom flag

FOUNTAIN - Draw
3D graph

FRUITY - 130 music
loops with MP3
compression

HELLO - Simplest
example

HYPNO - hypnotic
rotating pattern

LEVMETER -
simulation of music
spectrum indicator

LINEART - draw line
flower

LINES - relaxation line
pattern generator

MATRIX - matrix code
rain

OSCIL - simulation of
oscilloscope signal

PF2027 - Christmas
animation

PI - calculating
number Pi to 4780
digits

PIXELS - random
generation of colored
pixels

RAYTRACE - 3D
pattern generation by
ray tracing method

SPHERES - random
spheres

SPOTS - random
spots

TWISTER - twisting
textured block

WATER - simulation
of rippling water
surface
   

Games


ANTS - card game

ATOMS - Game of exploding atoms

EGGS - Logic game as Reversi

FIFTEEN - Logic puzzle game

FLAPPY - Logic game from Sharp MZ800

CHESS - Chess game

INVADERS - Shooting game Space Invaders

LIFE - Cell life simulator

MAZE - Find way out of maze

PACMAN - Action game Pac-Man

PICTOR - Picopad Collector

RAPTOR - Shooting game

MP3

Doporučuji používat MP3 soubory s konstantní bitrate. Některé starší formáty MP3, nebo MP3 s variable bitrate, nemusí umožňovat posouvání ukazatele přehrávání, případně skladba může skončit předčasně před koncem. Přehrávač podporuje pouze krátká jména souborů - tj. jméno MP3 souboru může mít max 8 znaků. Bude-li složka obsahovat i JPG obrázek stejného jména jako MP3, o rozměru 320x240 pixelů, zobrazí se namísto info stránky. Obrázek nebo info lze přepínat klávesou [X]. Klávesa [B] přehraje aktuální adresář od první skladby. Klávesa [A] začne přehrávání od aktuální skladby.

K přehrávači je k dispozici ukázková sada skladeb, ve stylu různých interpretů, vytvořená v nástroji Suno AI. Celkem je to 248 skladeb, obsahujících 13 hodin hudby. Skladby lze stáhnout zde.

Download skladeb část 1 (200 MB): styly ABBA, The Beatles, Breton Celtic, Classical

Download skladeb část 2 (224 MB): styly Computer, Cyberpunk, Enya, Folk

Download skladeb část 3 (213 MB): styly Children, Jean-Michel Jarre, J-pop

Download skladeb část 4 (217 MB): styly Loreena McKennitt, Medieval, Meditation, Metal, Vox Angeli

Download skladeb část 5 (207 MB): styly Mixed, Nightwish s Tarja Turunen, Mike Oldfield


MP3 - MP3 player

Test


EEPROM - View
contents of I2C
EEPROMs

I2CSCAN - Scan I2C0
and I2C1 bus

LCD - Test LCD SPI
display

RTC - Display and set
current time, using
RTC module

SSD1306 - Test
SSD1306 display

TESTLED - Test
BarePi bus with
TESTLED module
       

 

Miroslav Němeček

<< Zpět