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
sudo apt install git make

MacOS

V MacOS by to měla být pohoda, protože je to také Unix. Stačí HomeBrew:

1
brew install make git coreutils

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
choco install make git 
choco install vscodium  mingw

Pokud ještě nemáte Python, můžete i Python:

1
choco install python

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
cp .make/bashrc ~/.bashrc

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
sudo apt -t mamut install sdcc sdcc-libraries

Jinak je SDCC součástí většiny Linuxových distribucí; takže zavoláte něco jako:

1
sudo apt install sdcc sdcc-libraries

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
sudo apt install stow

Knihovny a závislosti nutné pro build se dají nainstalovat takto:

1
sudo apt build-dep sdcc

Potom už jen stáhnete zdrojaky, rozbalíte a instalujete:

1
2
3
4
5
6
7
cd sdcc-sources-4.5.12  # tady je jméno adresáře se zdrojáky 
./configure --prefix=/usr/local/stow/sdcc-4.5.12
make
sudo make install

cd /usr/local/stow
sudo stow sdcc-4.5.12

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
./configure --prefix=/usr/local/stow/sdcc-4.5.12 \
--disable-z180-port --disable-r2k-port --disable-r2ka-port --disable-r3ka-port \
--disable-gbz80-port --disable-tlcs90-port --disable-ez80_z80-port --disable-z80n-port \
--disable-ds390-port --disable-ds400-port --disable-pic14-port --disable-pic16-port \
--disable-hc08-port --disable-s08-port --disable-pdk13-port --disable-pdk14-port \
--disable-pdk15-port --disable-mos6502-port --disable-sm83-port --disable-f8-port \
--disable-mos65c02-port --disable-r800-port --disable-f8l-port --disable-r4k-port \
--disable-r5k-port --disable-r6k-port --disable-ez80-port

MacOS

HomeBrew už nabízí SDCC ve verzi 4.6.0, takže stačí:

1
brew install sdcc

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
brew install stow
cd sdcc-sources-4.5.12  # tady je jméno adresáře se zdrojáky 
export CPPFLAGS="-I/opt/homebrew/include"
export LDFLAGS="-L/opt/homebrew/lib"

./configure --prefix=/usr/local/stow/sdcc-4.5.12 \
--disable-z180-port --disable-r2k-port --disable-r2ka-port --disable-r3ka-port \
--disable-gbz80-port --disable-tlcs90-port --disable-ez80_z80-port --disable-z80n-port \
--disable-ds390-port --disable-ds400-port --disable-pic14-port --disable-pic16-port \
--disable-hc08-port --disable-s08-port --disable-pdk13-port --disable-pdk14-port \
--disable-pdk15-port --disable-mos6502-port --disable-sm83-port --disable-f8-port \
--disable-mos65c02-port --disable-r800-port --disable-f8l-port --disable-r4k-port \
--disable-r5k-port --disable-r6k-port --disable-ez80-port

make && sudo make install

cd /usr/local/stow
sudo stow sdcc-4.5.12

sdcc -v

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
sudo apt install openocd

MacOS

1
brew install open-ocd

Windows

Na Windows je to díky Chocolatey podobně jednoduché:

1
choco install openocd

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
proc program_device {filename flashstart} {
  halt
  wait_halt
  load_image $filename $flashstart
  sleep 10
  reset halt
  resume
  sleep 10
  shutdown
};

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
sudo apt -t mamut install stm8flash

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
sudo apt install pkg-config libusb-1.0-0-dev

git clone --depth 1 https://github.com/vdudouyt/stm8flash.git
cd stm8flash
make
sudo make install

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
brew install libusb pkg-config

git clone --depth 1 https://github.com/vdudouyt/stm8flash.git
cd stm8flash
make
sudo make install

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
sudo apt -t mamut install stm8-binutils-gdb

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
# GitLab (doporučeno)
git clone --depth 1  https://gitlab.com/spseol/mit-no/stm8-binutils-gdb.git
cd stm8-binutils-gdb

(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
./configure \
  --prefix=/usr/local/stow/stm8-binutils-gdb \
  --target=stm8-none-elf32 \
  --program-prefix=stm8-

make -j$(nproc)
sudo make install

A opět Stow.

1
2
cd /usr/local/stow
sudo stow stm8-binutils-gdb

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
curl -fSL 'https://gitlab.com/spseol/mit-no/stm8-binutils-gdb-legacy/-/archive/main/stm8-binutils-gdb-legacy-main.tar.bz2?ref_type=heads' \
 |  tar xj
cd stm8-binutils-gdb-legacy-main
export PREFIX=/usr/local/stow/stm8-binutils-gdb-legacy
./configure_binutils.sh
cd binutils-2.30+gdb-8.1-patched
make
sudo make install

cd /usr/local/stow
sudo stow  stm8-binutils-gdb-legacy

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
brew install gmp mpfr texinfo stow

git clone --depth 1  https://gitlab.com/spseol/mit-no/stm8-binutils-gdb.git
cd stm8-binutils-gdb

./configure \
  --prefix=/usr/local/stow/stm8-binutils-gdb \
  --target=stm8-none-elf32 \
  --program-prefix=stm8- \
  --with-gmp=$(brew --prefix gmp) \
  --with-mpfr=$(brew --prefix mpfr) \
  --disable-werror

make -j$(sysctl -n hw.ncpu)
sudo make install

cd /usr/local/stow
sudo stow stm8-binutils-gdb

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
stm8-gdb -batch -ex 'python print(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
sudo apt install cgdb

MacOS

Neověřeno. cgdb je v HomeBrew:

1
brew install cgdb

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
sudo apt install ccls

MacOS

1
brew install ccls

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
sudo apt install stow
sudo apt build-dep sdcc

cd sdcc-gas
./configure --prefix=/usr/local/stow/sdcc-gas
make
sudo make install

cd /usr/local/stow
sudo stow sdcc-gas

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
choco install mingw

nebo v Linuxu:

1
apt install gcc

nebo v MacOS (neověřeno):

1
xcode-select --install

a pak jen:

1
2
cd sdccrm
make

Související posty