Skip to content

spseol/MIT-DHT11

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DHT11

STM8 (SPŠE) toolchain

Tři mejkfaily pro studenta

K dispozici jsou celkem tři Makefile v adresáři .make. Na začátku si musíte jeden z nich vybrat:

make sdcc       # nebo
make sdccrm     # nebo
make sdcc-gas   # nebo

Potom můžete mezi nimi přepínat:

make switch-sdcc
make switch-sdccrm
make switch-sdcc-gas

Přepnutí jen znamená, že se udělá symlink do root-adresáře projektu. Na divných systémech, které symlinky neumí (například Windows) se natvrdo kopíruje, takže tato operace může být ztrátová. Na normálních systémech (asi všechny, kromě Windows) je tato operace bezztrátová.

Který Makefile vybrat?

Detailní popis najdete na https://chytrosti.marrek.cz/stm8oss.html.

SDCC

Z hlediska STM8 má SDCC jednu zásadní nevýhodu: nedokáže odstranit mrtvý nepoužívaný kód. To může zapříčinit velké binární soubory plné nepoužívaného kódu. Pokud nepoužíváte knihovny 2. a 3. stran (třeba SPL) asi vám to nevadí.

sdccrm

sdccrm je nástroj pro optimalizaci mrtvého kódu vytvořeného SDCC, který odstraňuje nepoužívané funkce. Kód se nejprve zkompiluje do assembleru klasickým SDCC, poté se pomocí sdccrm vymaže kód, který se nepoužívá, celý proces se dokončí a kód se převede z assembleru do strojového kódu. Z logiky věci toto řešení vylučuje použití debugeru.

Dále je nutné ručně zadat/editovat funkce, které nechcete optimalizovat –- tedy vyhodit. Proto je třeba sledovat chybová hlášení a název chybějící funkce zadat do souboru exclude_reference uvnitř projektového adresáře.

SDCC-gas

SDCC-gas vzniklo, aby vyřešilo problém optimalizace mrtvého kódu přidáním podpory GNU Assembleru tedy gas do SDCC 3.9.0. gas je výhodou i nevýhodou tohoto řešení. Na jednu stranu to znamená, že můžeme používat klasické nástroje z GNU binutils, na druhou stranu to znamená, že nelze použít ty části sdcc-libraries, které jsou napsané v STM8 assembleru a je nutné použít méně optimální kód napsaný v C nebo STM8 assembler přepsat do GNU assembleru.

Použití

Nejprve je třeba v Makefile správně nastavit µprocesor a jeho frakvenci; případně cestu k instalaci SDCC STVP.

#DEVICE_FLASH=stm8s103f3
DEVICE_FLASH=stm8s208rb

### STlink version for falsh2 targer (stm8flash program)
#STLINK=stlinkv2
#STLINK=stlink
STLINK=stlinkv21

F_CPU=16000000

ifeq ($(OS),Windows_NT)
	CC_ROOT = "/c/Program Files/SDCC"
	STVP_ROOT = "/c/Program Files (x86)/STMicroelectronics/st_toolset/stvp"
else
	CC_ROOT = /usr
endif

Pokud používáte sdcc nebo sdccrm je ještě potřebné v Makefile odkomentovat nebo zakomentovat nebo přidat ty části SPL knihovny, které zrovna (ne)používáte.

SPL_SOURCE  = stm8s_gpio.c stm8s_clk.c stm8s_tim4.c stm8s_itc.c 
SPL_SOURCE += stm8s_uart1.c
#SPL_SOURCE += stm8s_adc2.c
#SPL_SOURCE += stm8s_tim1.c
SPL_SOURCE += stm8s_tim2.c
#SPL_SOURCE += stm8s_tim3.c

... no a potom už jen bastlíte, programujete a voláte make.

Pokud používáte sdcc-gas budete možná muset vytvořit pro váš µprocesor linker-script. Jsou to soubory s příponou *.x v adresáři .make. Tento toolchain zatím obsahuje pouze linker-scripty pro µprocesory: stm8s003f3, stm8s103f3 a stm8s208rb. Pokud tak učiníte, jistě mi jej zašlete k zařazení do tohoto toolchainu.

příkaz                      
make spl stáhne a nachystá knihovny
make provede kompilaci
make flash nahraje program do chipu. Na Linuxu se použije OpenOCD. Na Windows se použije STVP verze pro příkazový řádek.
make flash2 záložní varianta, protože OpenOCD někdy nechce čip naprogramovat (používá stm8flash).
make clean smaže všechno, co nakompiloval
make rebuild smaže vše a znovu zkompiluje
make openocd pustí openocd pro debug
make debug spustí STM8-gdb

Závislosti

Na Windows

choco install git make vscode mingw

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published