STM8 - przygotowanie środowiska opartego o Eclipse na Windows

To miejsce dla mało znanych mikrokontrolerów jak ST7, ST8, MSP itd , z wyłączeniem AVR !!
Regulamin forum
W tym miejscu dopuszczalne są wszelkie formy mikrokontrolerów 8/16/24 bitowych , ale nie wolno zamieszczać postów dotyczących mikrokontrolerów AVR , ARDUINO itd ... jest wiele for im poświęconych i wszystkie ATMEGOWE będą definitywnie poddawane dekapitacji.

PISZEMY tylko o mikrokontrolerach:

ST7 , STM8, MSP430 , dsPIC , i innych mało znanych i popularnych
a nawet zapomnianych jak : Z80, 6510 , m68K ...

NIE PISZEMY O POPULARNYCH AVR !!
ODPOWIEDZ
Awatar użytkownika
Nefarious19
Moderator
Posty: 21
Rejestracja: 17 paź 2017, 10:03
Lokalizacja: Łódź

STM8 - przygotowanie środowiska opartego o Eclipse na Windows

Post autor: Nefarious19 » 18 sty 2019, 13:59

Drodzy forumowicze,

Jako że pewnie widzieliście już ostatni wpis kolegi squuez'a dotyczący jego początków z STM8, jesteście pewnie ciekawi jak przygotwać środowisko do ich programowania w systemie Windows. Poniekąd zasada postępowania jest bardzo podobna. Postaram się w możliwie prosty sposób opisać co i jak.


0. By móc programować STM8 w Eclipse będziemy potrzebowali:
  • Eclipse for C/C++ developers - Link do instalera
  • kompilator SDCC - link do instalatora
  • STM8S_StdPeriph_Lib_V2.3.1 - biblioteki do peryferiów od ST spaczowane pod SDCC
  • stm8flash - programik z interfejsem CLI służący do wgrywania wsadu poprzez programator/debugger st-link.
  • pradawny plugin SDCC do Eclipse który niestety nie jest już wspierany.
  • msys - zawiera takie ustrojstwa jak make.
UWAGA!
Tutaj zamieszczam link do paczki gdzie znajdziecie niezbędne rzeczy:
POBIERZ


1. Instalacja i przygotowanie Eclipse

Z tym punktem nie powinniście mieć raczej żadnych problemów. Instalator poprowadzi Was za rękę przez cały proces instalacji. Pamiętajcie że instancji eclipsea możecie mieć wiele więc warto jakoś sensownie nazwać np eclipse_stm8 czy jakoś tak. Pamiętajcie by uruchomić instalator z uprawnieniami administratora. Po instalacji sprawdźcie czy Eclipse się Wam odpala:

Obrazek

ustawcie sobie jakoś sensownie Workspace:

Obrazek

i voile'a! naszym oczom ukazał się Eclipse:
Obrazek

Teraz należy zamknąć Eclipse i skopiować wypakowaną zawartość pliku

do folderu \dropins tam gdzie mamy zainstalowane Eclipse:
Obrazek

i już. Uruchommy ponownie eclipse i spróbujmy utworzyć nowy C project. Powinniśmy mieć tam do wybory SDCC toolchain:
Obrazek

Jeżeli mamy tam taką opcje, to jest ok. Na tę chwilę jednak nic nie tworzymy i zamykamy Eclipse bo trzeba przygotować kompilator.


2. Instalacja SDCC

SDCC to skrót ot small device cross compiler. Więcej o nim można znaleźć na stronie projektu.
Będziemy używać go po to by napisany przez nas kod w C mógł być skompilowany to pliku .ihx którym będziemy mogli zaprogramować mikrokontroler.

Pobieramy instalator ze strony projektu i instalujemy go w wybranym przez nas miejscu. Najlepiej w ścieżce C:\SDCC. Przy instalacji należy zaznaczyć żeby dodał ścierzkę do siebie do zmiennej systemowej PATH żeby można było go wywoływać z linii komend. Po instalacji sprawdzamy poprawność zainstalowanego softu wpisując w cmd > sdcc:

Obrazek

jeżeli u was wygląda to tak jak u mnie, oznacza to że wszystko jest ok.

3. Instalacja i test stm8flash.exe

Tu sprawa jest banalna. Kopiujemy sobie plik stm8flash.exe do naszego folderu z Eclipse (można gdziekolwiek ale po co robić bałagan). Podłączmy naszą płytke z STM8 do naszego programatora. Jeżeli wszystko będzie ok, powinniśmy móc odczytać zawartość pamięci flash:

Obrazek

Jak widać soft ten jest banalny w użyciu i szybki jak błyskawica.


4. Tworzenie projektu testowego w Eclipse

Teraz czas na ostatnią i najbardziej wymagającą część. Utworzymy sobie projekt testowy w Eclipse. Zaczynajmy.

Odpalamy Eclipse i tworzymy nowy projekt:

Wybieramy C Managed Build
Obrazek

Klikamy Next. W następnym oknie wybieramy Others->MCS51 Family i SDCC Toolchain(nie zwracajcie uwagi że nie ma stm8, ten plagin był chyba tylko dla 8051 robiony). Nadajcie swojemu projektowi odpowiednią nazwę:
Obrazek

Next. Odznaczamy Debug i klikamy Finish:

Nadajemy naszemu nowemu projektowi odpowiednią strukturę:
Obrazek

Obrazek

Oba foldery powinny wyglądać tak:
Obrazek

Teraz należy dodać odpowiednie pliki, w odpowiednie miejsca.

W paczce STM8S_StdPeriph_Lib_V2.3.1, odnajdujemy pliki takie jak:
  • stm8s.h --> plik nagłówkowy z nazwami rejestrów itd. Można go znaleźć w: STM8S_StdPeriph_Lib_V2.3.1_sdcc\Libraries\STM8S_StdPeriph_Driver\inc
    -->Wrzucamy go do folderu inc
  • stm8s_it.h --> plik nagłówkowy z prototypami handlerów przerwań. Można go znaleźć w: C:\eclipse_stm8\STM8S_StdPeriph_Lib_V2.3.1_sdcc\Project\STM8S_StdPeriph_Template
    -->Wrzucamy go do folderu inc
  • stm8s_it.c --> plik źródłowy z definicjami handlerów przerwań Można go znaleźć w: C:\eclipse_stm8\STM8S_StdPeriph_Lib_V2.3.1_sdcc\Project\STM8S_StdPeriph_Template
    -->Wrzucamy go do folderu src
  • tworzymy plik main.c
    -->Wrzucamy go do folderu src
Później dokonamy w nich dobrych zmian bo nam się nie skompiluje nic tak jak jest :P

plik main.c wygląda następująco:
  1. #include <stm8s.h>
  2. #include <stm8s_it.h>
  3.  
  4. void main (void)
  5. {
  6.     while(1);
  7. }
  8.  

Następny krok to konfiguracja całego build'u. Jest tego trochę.

Konfiguracja C/C++ build

Zaznaczamy nasz projekt test, kilamy prawym klawiszem myszy i wchodzimy do menu Project->Properties. Wybieramy zakładkę C/C++ build i zaznaczamy jak na obrazku poniżej:

Obrazek

Następnie przechodzimy do zakładki Environment i zmieniamy zmienną PATH na potrzeby naszego projektu. Dodajemy tam ścieżki do kompilatora i msysa. U mnie zmienna PATH wygląda tak: C:\eclipse_stm8\SDCC\bin;C:\eclipse_stm8\msys\bin;

Obrazek

Następnie przechodzimy do zakładki Settings i ustawiamy nasz kompilator i linker odpowiednio. Często te ustawienia zależą od naszych potrzeb i sprzętu na którym pracujemy więc zachęcam do zapoznania się z dokumentacją SDCC ale do testów na mikrokontrolerze stm8103f3 poniższe ustawienia są jak najbardziej ok:

w SDCC Cross Compiler:
  • w pole Command wpisujemy: sdcc -c -mstm8 -lstm8 --stack-auto --std-sdcc11 --no-peep --model-large
    Obrazek
  • dodajemy definy: STM8S103 i __SDCC_stm8
    Obrazek
  • Dodajemy ścieżki do inkludów w zakładce Directories. Dodajemy tam ścieżki do naszego folderu inc wewnątrz projektu oraz ścieżkę do folderu include kompilatora SDCC:
    Obrazek
  • w Momory options ustawiamy --model-large :
    Obrazek
  • ustawiamy Linker: sdcc -mstm8 -lstm8 --stack-auto --std-sdcc11 --no-peep --model-large
    Obrazek
  • ustawiamy nazwę assemblera:
    Obrazek
uff... to chyba wszystko jeżeli chodzi o kompilacje. Musimy zrobić jeszcze jedną rzecz. Wchodzimy do pliku stm8s.h i usuwamy linijkę:
  1. #if !defined  USE_STDPERIPH_DRIVER
  2. /* Comment the line below if you will not use the peripherals drivers.
  3.    In this case, these drivers will not be included and the application code will be
  4.    based on direct access to peripherals registers */
  5.  #define USE_STDPERIPH_DRIVER << TO! :)
  6. #endif
i to wszystko. Kilkamy build i powinniśmy otrzymać:

Kod: Zaznacz cały

13:23:45 **** Incremental Build of configuration Release for project test ****
make -k all 
Building file: ../src/main.c
Invoking: SDCC Compiler
sdcc -c -mstm8 -lstm8 --stack-auto --std-sdcc11 --no-peep --model-large -DSTM8S103 -D__SDCC_stm8 -I"C:\workspaceForSTM8\test\inc" -I"C:\eclipse_stm8\SDCC\include" --model-large -o"src/main.rel" "../src/main.c" && \
	echo -n src/main.d src/ > src/main.d && \
	sdcc -c -mstm8 -lstm8 --stack-auto --std-sdcc11 --no-peep --model-large -MM -DSTM8S103 -D__SDCC_stm8 -I"C:\workspaceForSTM8\test\inc" -I"C:\eclipse_stm8\SDCC\include" --model-large  "../src/main.c" >> src/main.d
Finished building: ../src/main.c
 
Building file: ../src/stm8s_it.c
Invoking: SDCC Compiler
sdcc -c -mstm8 -lstm8 --stack-auto --std-sdcc11 --no-peep --model-large -DSTM8S103 -D__SDCC_stm8 -I"C:\workspaceForSTM8\test\inc" -I"C:\eclipse_stm8\SDCC\include" --model-large -o"src/stm8s_it.rel" "../src/stm8s_it.c" && \
	echo -n src/stm8s_it.d src/ > src/stm8s_it.d && \
	sdcc -c -mstm8 -lstm8 --stack-auto --std-sdcc11 --no-peep --model-large -MM -DSTM8S103 -D__SDCC_stm8 -I"C:\workspaceForSTM8\test\inc" -I"C:\eclipse_stm8\SDCC\include" --model-large  "../src/stm8s_it.c" >> src/stm8s_it.d
Finished building: ../src/stm8s_it.c
 
Building target: test.ihx
Invoking: SDCC Linker
sdcc -mstm8 -lstm8 --stack-auto --std-sdcc11 --no-peep --model-large  -o "test.ihx"  ./src/main.rel ./src/stm8s_it.rel   
Finished building target: test.ihx
 

13:23:47 Build Finished. 0 errors, 0 warnings. (took 1s.689ms)
UDAŁO SIĘ! UDAŁO! :) Jak skończymy już skakać z radości, możemy przystapić do konfiguracji stm8flash.exe jako extarnal tool co jest niezwykle banalne.

Run->External Tools->External Tool Configurations (zmieńcie nazwę projektu na test czy jak tam wasz proejkt się nazywa)
i dodajemy konfiguracje jak poniżej:
Obrazek

Zaznaczamy nasz projekt, kilkamy Play i voila! Nasz wsad został załadowany! :)

Kod: Zaznacz cały

Determine FLASH area

Writing Intel hex file 166 bytes at 0x8000... OK
Bytes written: 166
mając tak przygotowane środowisko, napiszmy sobie blinka:
  1. /*
  2.  * main.c
  3.  *
  4.  *  Created on: 18 sty 2019
  5.  *      Author: rafal
  6.  */
  7.  
  8. #include <stm8s.h>
  9. #include <stm8s_it.h>
  10.  
  11. void delay (uint32_t delay)
  12. {
  13.     for(uint32_t i = 0; i < delay; i++)
  14.     {
  15.         __asm__("NOP");
  16.     }
  17. }
  18.  
  19. void main (void)
  20. {
  21.     GPIOB->CR1 |= (1<<5);
  22.     GPIOB->CR2 |= (1<<5);
  23.     GPIOB->DDR |= (1<<5);
  24.     GPIOB->ODR |= (1<<5);
  25.  
  26.     while(1)
  27.     {
  28.         GPIOB->ODR ^= (1<<5);
  29.         delay(100000);
  30.     }
  31. }
kompilujemy, wgrywamy i naszym oczom ukaże się TO:
Obrazek

Awatar użytkownika
l3n1n
Moderator
Posty: 216
Rejestracja: 28 paź 2017, 8:46
Lokalizacja: 3M

Re: STM8 - przygotowanie środowiska opartego o Eclipse na Windows

Post autor: l3n1n » 18 sty 2019, 14:20

No i pięknie. Jasno i przejrzyście prowadzisz za rączkę :p. Super.

Awatar użytkownika
SunRiver
Administrator
Posty: 601
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: STM8 - przygotowanie środowiska opartego o Eclipse na Windows

Post autor: SunRiver » 18 sty 2019, 14:32

nooo nooo jestem pod mega wrażeniem
Super wpis THX
.... z każdym bitem serca ....
💫SunDUINO
💦GitHUB
💦Google Drive
💦Sotton

gufim
Użytkownik
Posty: 45
Rejestracja: 16 paź 2017, 16:58

Re: STM8 - przygotowanie środowiska opartego o Eclipse na Windows

Post autor: gufim » 18 sty 2019, 20:41

Dziękować dziękować :)

ODPOWIEDZ