SDCC I STRC 52 Kompilator SDCC i Pakiet

  • Slides: 16
Download presentation
SDCC I STRC 52 Kompilator SDCC i Pakiet STRC 52 Mgr inż. Aleksander Pruszkowski

SDCC I STRC 52 Kompilator SDCC i Pakiet STRC 52 Mgr inż. Aleksander Pruszkowski

SDCC • Standardowo praca w linii poleceń • Możliwość integracji z IDE • SDCC

SDCC • Standardowo praca w linii poleceń • Możliwość integracji z IDE • SDCC dystybuowane jako open source • Do pobrania z: sdcc. sourceforge. net • Możliwość pracy na wielu platformach: • Win 32 (Windows 2 K, Windows XP, 95, 98, . . . ) • Linux • Mac. OS • Istnieje możliwość rekompilacji narzędzi

SDCC • Dodatkowe narzędzia wspomagające pracę, z poza pakietu: • copyclip • Kopiowanie pliku

SDCC • Dodatkowe narzędzia wspomagające pracę, z poza pakietu: • copyclip • Kopiowanie pliku do schowka (pomocne podczas uruchamiania kodu w STRC 52) • make • Automatyzacja tworzenia wynikowych plików na podstawie najnowszych wersji plików źródłowych • rm • Usuwanie niepotrzebnych plików, wyników poprzedniej kompilacji

SDCC • Podstawowe opcje kompilatora: • -v • Sprawdzenie wersji kompilatora • --model-small •

SDCC • Podstawowe opcje kompilatora: • -v • Sprawdzenie wersji kompilatora • --model-small • Precyzacja typu tworzonego kodu (small, large) • --code-loc • Specyfikacja miejsca w którym będzie znajdował się kod wynikowy • --xram-loc • Specyfikacja gdzie znajdzie się obszar używany przez zmienne typu xdata • --data-loc • Specyfikacja gdzie będą umieszczone zmienne w wewnętrznej pamięci mikrokontrolera

SDCC • Typy podstawowe akceptowane przez pakiet: • • • char short int long

SDCC • Typy podstawowe akceptowane przez pakiet: • • • char short int long float 8 bity (1 bajt) 16 bity (2 bajty) 32 bit y (4 bajty) 32 bity (4 bajty, kodowane według IEEE)

SDCC • Zagadnienia optymalności kodu • Temat dokładnie opisany na: • sdcc. sourceforge. net/doc/sdccman.

SDCC • Zagadnienia optymalności kodu • Temat dokładnie opisany na: • sdcc. sourceforge. net/doc/sdccman. html/node 139. html • Unikanie dużych struktur danych • Priorytety podstawowych typów zmiennych: • char - int/short - long • Złe i dobre dopasowanie typów: long i; char i; for(i=0; i<10; i++){. . . } }

SDCC • Niektóre ograniczenia mikrokontrolera C 51: • Zmienne: • bez precyzowania w modelu

SDCC • Niektóre ograniczenia mikrokontrolera C 51: • Zmienne: • bez precyzowania w modelu small - dostępne w sumie na zmienne i stos procesora to 128 B • reszta dostępna w modelu large lub po specyfikacji jako xdata, np. : • xdata unsigned char tab[1000] ; • Stałe: • Domyślnie kompilator umieszcza stałe w pamięci przeznaczonej na zmienne. • Osiągnięcie zamierzonego rezultatu (wykorzsytanie pamięci kodu) przez deklaracje: • code unsigned char const_tab[1000];

SDCC Weryfikacja poprawności instalacji • Pierwszy plik: main. c xdata at 0 x 8000

SDCC Weryfikacja poprawności instalacji • Pierwszy plik: main. c xdata at 0 x 8000 unsigned char U 12; sbit at 0 x. B 4 T 1; #define BUZZER T 1 void main (void){ unsigned char i, r=0; for(; ; ){ if((U 12 & 0 x 0 f)!=0 x 0 f){ if((r & 0 x 01)==0) BUZZER=1; else BUZZER=0; r++; } for(i=0; i<70; i++); } } Pole deklaracji peryferii sprzętowych Sprawdzenie stanu klawiszy Generacja dźwięku Pętla opóźniająca

SDCC Weryfikacja poprawności instalacji • Kompilacja (tylko z linii poleceń, w miejscu gdzie znajduje

SDCC Weryfikacja poprawności instalacji • Kompilacja (tylko z linii poleceń, w miejscu gdzie znajduje się main. c) • sdcc -c main. c • Wynik kompilacji • main. asm • main. lst • main. sym • main. rel - wynik kompilacji w asemblerze C 51, - wynik kompilacji i przypisania kodu binarnego - tablica symboli powstała podczas kompilacji - plik obiektowy – wynik właściwej kompilacji

SDCC Weryfikacja poprawności instalacji • Linkowanie (polecenie wydane w jednej linii) • sdcc --model-small

SDCC Weryfikacja poprawności instalacji • Linkowanie (polecenie wydane w jednej linii) • sdcc --model-small --code-loc 0 x 4000 • --xram-loc 0 x 0000 main. rel • Wynik linkowania • main. mem • main. rst • main. map • main. lnk • main. ihx - tablica wielkości pamięci użytej - wynik linkowania i przypisania kodu binarnego - mapa symboli i obiektów powstałych w wyniku kompilacji i linkowania - plik pomocniczy (opcje kompilacji) - plik wynikowy w formacie intel-HEX do załadowania w STRC 51

STRC 51 • Przyłączenie do komputera • Wybór wolnego złącza RS 232 (nie zajmowane

STRC 51 • Przyłączenie do komputera • Wybór wolnego złącza RS 232 (nie zajmowane przez inne działające aplikacje w systemie) • Przyłączenie zasilania • Zawsze za pomocą zasilacza klasy B • Podłączony do tej samej fazy 220 V, co komputer na którym będzie dalsza praca • Reset • inicjacja urządzenia – tylko u. C 80 C 51 • Elementy sterujące LED, LCD nie mogą być ta metodą inicjowane/resetowane

STRC 51 • Przygotowanie programu komunikacyjnego Tera. Term. Pro (Setup->Serial Port) • Wybór portu

STRC 51 • Przygotowanie programu komunikacyjnego Tera. Term. Pro (Setup->Serial Port) • Wybór portu • COM 1 • Wybór szybkości • 19200 bps • Parametry transmisji • 8 N 1 • Opóźnienia transmisji • 0 ms/znak, 30 ms/linię

STRC 51 • Ładowanie pliku HEX • Uruchomienie z menu (w STRC 51) opcji

STRC 51 • Ładowanie pliku HEX • Uruchomienie z menu (w STRC 51) opcji • Q – ładowanie z automatycznym uruchomieniem • P – ładowanie bez uruchomienia • wymaga ręcznego uruchomienia kodu przez podanie: J 4000

STRC 51 • Ładowanie pliku HEX cd. (wyłącznie z linii pocleceń): • Pakowanie pliku

STRC 51 • Ładowanie pliku HEX cd. (wyłącznie z linii pocleceń): • Pakowanie pliku wynikowego: • packihx main. ihx > main. hex • Kopiowanie zawartości pliku main. hex do schowka, metodami: • copyclip main. hex • Automatyzacja procesu, możliwość wywołania z poziomu pliku makefile • notepad main. hex • Ręczne zaznaczenie tekstu i wywołanie kopiowania tekstu – zawodne i czasochłonne (zdarzają się pomyłki)

STRC 51 • Ładowanie pliku HEX cd. • Przełączenie się na Tera. Term. Pro

STRC 51 • Ładowanie pliku HEX cd. • Przełączenie się na Tera. Term. Pro • Wklejamy zawartość schowka – posiadający teraz plik main. hex

Dziękuje za uwagę i życzę miłej pracy!

Dziękuje za uwagę i życzę miłej pracy!