This post is also available in: en
Tento post je součástí série článků o vývoji pro STM8 s OpenSource nástroji. Přehled celého toolchainu najdete v postu Vývoj STM8 s OpenSource nástroji.
Hint
Pokud máte Linuxovou distribuci založenou na Debianu (Ubuntu, Mint, Devuan, …), nemusíte z tohoto článku dělat nic. Stačí použít náš repozitář s předkompilovanými balíčky. Další možností je předpřipravená instalace pro VirtualBox.
Tento článek je pro uživatele jiných distribucí a jiných operačních systémů a pro ty, kdo si chtějí nástroje zkompilovat ze zdrojových kódů. Každý nástroj má vlastní sekci s postupem pro Linux, MacOS a Windows.
| Nástroj | K čemu je | Debian balíček |
|---|---|---|
| make, git | toolchain | make, git |
| SDCC | kompilátor | sdcc, sdcc-libraries |
| OpenOCD | flashování a ladění | openocd |
| stm8flash | flashování | stm8flash |
| STVP | flashování ve Windows | — |
| stm8-binutils-gdb | debugger stm8-gdb |
stm8-binutils-gdb |
| cgdb | rozhraní pro GDB | cgdb |
| ccls | LSP server pro editor | ccls |
| SDCC-gas, sdccrm | historická řešení | — |
Neověřené postupy
Některé postupy pro MacOS jsem dopsal podle dokumentace, ale nemám je na čem vyzkoušet. Jsou označené jako neověřeno. Pokud je vyzkoušíte, dejte mi prosím vědět, jestli fungují.
Základní nástroje¶
Linux¶
V Linuxu zavoláte něco jako:
1 | |
MacOS¶
V MacOS by to měla být pohoda, protože je to také Unix. Stačí HomeBrew:
1 | |
Windows¶
Věnoval jsem hodně času portu na Windejs. Mrkvosoft mi ale hází dost klacky pod nohy: odladím to — chodí to, přijde aktualizace — a já můžu zase ladit další problém. Prostě to zlobí a já nemám absolutně žádnou motivaci to ladit, protože nevím, kdy mi zase Mrkvosoft práci zničí; a na W11 jsem to ani nezkoušel. Kompilace je děsně pomalá. Takže moje rada zní:
Hint
Pokud skutečně trváte na Windejs a máte nějaký dobrý důvod, proč tento nedovyvinutý OS používáte, nainstalujte si VirtualBox a použijte předpřipravenou instalaci.
Nicméně v současné době se zdá, že toolchain na Windejs funguje, takže pokud máte odvahu, dejte se do toho:
Ve Windows je nejsnadnější instalovat pomocí Chocolatey:
1 2 | |
Pokud ještě nemáte Python, můžete i Python:
1 | |
Bash je součástí balíčku Git.
Ve Windows ještě stojí za to malinko si Bash připravit, aby fungoval dobře s make.
Proto si nakopírujte konfiguraci .make/bashrc do domovského adresáře.
1 | |
SDCC¶
SDCC - Small Device C Compiler je kompilátor jazyka C pro STM8. Proč právě SDCC a jak ho toolchain používá, je popsáno v hlavním článku.
Pozor na verzi SDCC
V překladači SDCC (nezávisle na OS) je ve verzi 4.5.0 chyba, díky které je nepoužitelný pro platformu STM8. Chyba je již opravená, ale je třeba si dát pozor a nainstalovat verzi 4.4.0, 4.6.0 a novější nebo noční build.
Linux¶
Na Debianu a odvozených distribucích nainstalujete SDCC ve správné verzi z našeho repozitáře:
1 | |
Jinak je SDCC součástí většiny Linuxových distribucí; takže zavoláte něco jako:
1 | |
Zkontrolujte ale verzi (sdcc -v), ať nemáte zrovna 4.5.0.
Ze zdrojových kódů¶
Někdy se stane, že ve vaší distribuci není SDCC v té správné verzi, nebo si chcete
nainstalovat noční build. Já pro instalaci nedistribučních balíčků používám program
Stow.
1 | |
Knihovny a závislosti nutné pro build se dají nainstalovat takto:
1 | |
Potom už jen stáhnete zdrojaky, rozbalíte a instalujete:
1 2 3 4 5 6 7 | |
Ještě malá poznámka: SDCC podporuje mnoho různých platforem, které jsou pro mě
nepotřebné. Proto moje ./configure vypadá takto:
1 2 3 4 5 6 7 8 | |
MacOS¶
HomeBrew už nabízí SDCC ve verzi 4.6.0, takže stačí:
1 | |
Ze zdrojových kódů¶
Pokud chcete jinou verzi, například noční build, si stáhnete zdrojáky, rozbalíte, a ….
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Windows¶
Instalace SDCC se ve Windows musí naklikat. Instalátor stáhnete zde: https://sourceforge.net/projects/sdcc/files/sdcc-win64/ a pokračujete ve Windows oblíbeným klikáním. Pozor na verzi 4.5.0 (viz výše).
OpenOCD¶
Open On-Chip Debugger je nástroj pro flashování programu do chipu a pro ladění. Jak ho toolchain používá, je popsáno v hlavním článku.
Linux¶
Instalaci zajistí na Linuxu jednoduchý příkaz:
1 | |
MacOS¶
1 | |
Windows¶
Na Windows je to díky Chocolatey podobně jednoduché:
1 | |
Skript pro flashování¶
Aby openocd umělo i pouhé flashování, je třeba přidat
skript,
který to umí. Ten je buď součástí
toolchainu nebo ho můžete přidat
na konec konfiguračního souboru stm8s.cfg:
1 2 3 4 5 6 7 8 9 10 | |
V Linuxu by celá cesta mohla vypadat takto: /usr/share/openocd/scripts/target/stm8s.cfg.
V MacOS s HomeBrew nejspíš $(brew --prefix)/share/openocd/scripts/target/stm8s.cfg
(neověřeno).
Pokud jste do Windows instalovali pomocí Chocolatey, bude to nejspíš tato cesta:
C:\ProgramData\chocolatey\lib\openocd\tools\install\share\openocd\scripts\target\stm8s.cfg.
stm8flash¶
Program pro flashování programu do chipu. Ve Windows ho nahrazuje STVP.
https://github.com/vdudouyt/stm8flash
Linux¶
Na Debianu a odvozených distribucích je hotový balíček v našem repozitáři:
1 | |
Ze zdrojových kódů¶
Ve většině linuxových distribucí je třeba ho ručně buildnout:
1 2 3 4 5 6 | |
MacOS¶
Neověřeno. V HomeBrew stm8flash není, takže je třeba ho buildnout.
Makefile projektu s MacOS počítá a knihovnu libusb hledá pomocí pkg-config:
1 2 3 4 5 6 | |
Windows¶
Toolchain ve Windows používá místo stm8flash program STVP.
STVP¶
STVP je jen pro Windows. Pokud už jste nainstalovali STVD, máte už STVP nainstalováno, protože je součástí jeho instalace. Je možné ho nainstalovat i zvlášť — bez STVD.
stm8-binutils-gdb¶
STM8 port GNU binutils je potřeba
pro linkování a
debug. Obsahuje debugger
stm8-gdb, jehož použití popisuje Malý kurz STM8-GDB.
Doporučuji novější verzi stm8-gdb založenou na GDB v15.0.
Linux¶
Na Debianu a odvozených distribucích je hotový balíček v našem repozitáři:
1 | |
Novější a hezčí GDB v15.0¶
V současné době je k dispozici výrazně novější verze stm8-gdb založená na GDB 15.0,
která přináší vylepšení oproti staré verzi 8.1: Práce s ním je přehlednější
díky barvičkám a celkově je to prostě novější verze…
Zdrojáky si můžete stáhnout z mého forku na GitLabu:
1 2 3 | |
(Původní fork, který zařadil patche pro GDBv8.1 do aktuálního GDB, raději nepoužívejte, protože obsahuje několik chybiček.)
Build je velmi jednoduchý:
1 2 3 4 5 6 7 | |
A opět Stow.
1 2 | |
Legacy verze GDB 8.1¶
Po internetu najdete různé návody na build GDB verze 8.1 ze starších zdrojů. Konkrétně je to projekt stm8-binutils-gdb. Funguje to dobře, ale pokud byste to chtěli použít, doporučuji raději naše repo stm8-binutils-gdb-legacy, protože zdrojáky z něj jdou buildnout i dnes i se současným Pythonem 3.12+.
1 2 3 4 5 6 7 8 9 10 11 | |
MacOS¶
Neověřeno. Postup je stejný jako u
GDB v15.0 v Linuxu. GDB ale potřebuje knihovny
GMP a MPFR, které je třeba nainstalovat z HomeBrew a předat ./configure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Příkazy navíc ze souboru .make/stm8gdb.py potřebují GDB s podporou Pythonu.
./configure ji zapne sám, když najde python3. Ověříte to takto (musí vypsat 1):
1 | |
Windows¶
Kompilace ze zdrojových kódů je teoreticky možná i na Windows; prakticky jsem to nikdy nezkoušel. Osobně bych šel (tedy pokud by mě někdo donutil používat Windejs) spíše cestou Windows Subsystem for Linux. Instalace WSL 2 je velice jednoduchá. Bohužel do WSL se nativně nedá připojit USB — ale dá se to řešit.
cgdb¶
cgdb je barevné rozhraní pro GDB. make debug ho
otevírá automaticky; když cgdb není nainstalované, spustí GDB v TUI módu.
Více v článku Malý kurz STM8-GDB.
Linux¶
1 | |
MacOS¶
Neověřeno. cgdb je v HomeBrew:
1 | |
Windows¶
Pro Windows nemám ověřený postup. cgdb je ale běžně k dispozici ve WSL.
ccls¶
ccls je
LSP server pro
automatické doplňování kódu a zobrazování chyb v editoru. Je volitelný. Proč ho
doporučuji, je popsáno v hlavním článku.
Linux¶
1 | |
MacOS¶
1 | |
Windows¶
Pro Windows nemám ověřený postup.
Historická řešení¶
Následující dva nástroje jsou spíše historický pozůstatek a v naprosté většině případů je nepotřebujete. Proč vůbec existují, je popsáno v hlavním článku.
SDCC-gas¶
https://github.com/hainguyen8y/sdcc-gas
Projekt je nejspíš mrtvý
Původní repozitář XaviDCR92/sdcc-gas z GitHubu zmizel (404), proto odkazuji
na kopii od jiného uživatele (stejná historie, poslední commit z 10. 11. 2019).
Původní stránka je uchována i ve Wayback Machine.
Více v hlavním článku.
Aby vše fungovalo, musíte si stáhnout výše zmíněné zdrojové kódy a buildnout je. Já to dělám takto (používám Stow):
1 2 3 4 5 6 7 8 9 10 | |
SDCC-gas potřebuje i stm8-binutils-gdb.
V MacOS a ve Windows jsem build SDCC-gas nezkoušel.
sdccrm¶
https://github.com/sealj553/sdccrm
Původní repozitář zmizel
Repozitář XaviDCR92/sdccrm z GitHubu zmizel (404) a vývoj je nejspíš
mrtvý. Odkazuji proto na funkční kopii od jiného uživatele. Původní stav je
uchován i ve
Wayback Machine.
Více v hlavním článku.
sdccrm si musíte buildnout ze zdrojových kódů. Jde o celkem malý program bez
závislostí, takže jde jednoduše kompilovat v Linuxu i ve Windows —
nicméně pro jistotu je Windows binárka součástí
toolchainu
a je v souboru .make/sdccrm.exe.
Ve Windows:
1 | |
nebo v Linuxu:
1 | |
nebo v MacOS (neověřeno):
1 | |
a pak jen:
1 2 | |