SDCC I STRC52

16
SDCC I STRC52 SDCC I STRC52 Kompilator SDCC i Pakiet STRC52 Mgr inż. Aleksander Pruszkowski

description

SDCC I STRC52. Kompilator SDCC i Pakiet STRC52 Mgr inż. Aleksander Pruszkowski. 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: - PowerPoint PPT Presentation

Transcript of SDCC I STRC52

Page 1: SDCC I STRC52

SDCC I STRC52SDCC I STRC52Kompilator SDCC

i Pakiet STRC52

Mgr inż. Aleksander Pruszkowski

Page 2: SDCC I STRC52

SDCCSDCC

• 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:• Win32 (Windows 2K, Windows XP, 95, 98,...)

• Linux

• MacOS

• Istnieje możliwość rekompilacji narzędzi

Page 3: SDCC I STRC52

SDCCSDCC

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

• Kopiowanie pliku do schowka (pomocne podczas uruchamiania kodu w STRC52)

• make• Automatyzacja tworzenia wynikowych plików na

podstawie najnowszych wersji plików źródłowych

• rm• Usuwanie niepotrzebnych plików, wyników

poprzedniej kompilacji

Page 4: SDCC I STRC52

SDCCSDCC

• 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

Page 5: SDCC I STRC52

SDCCSDCC

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

Page 6: SDCC I STRC52

SDCCSDCC

• Zagadnienia optymalności kodu• Temat dokładnie opisany na:

• sdcc.sourceforge.net/doc/sdccman.html/node139.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++){ for(i=0;i<10;i++){ ... ...} }

Page 7: SDCC I STRC52

SDCCSDCC

• Niektóre ograniczenia mikrokontrolera C51:• Zmienne:

• bez precyzowania w modelu small - dostępne w sumie na zmienne i stos procesora to 128B

• 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];

Page 8: SDCC I STRC52

SDCCSDCCWeryfikacja poprawności instalacji

Pole deklaracji peryferii sprzętowych

Pętla opóźniająca

Sprawdzenie stanu klawiszy

• Pierwszy plik: main.cxdata at 0x8000 unsigned char

U12; sbit at 0xB4 T1;#define BUZZER T1void main (void){ unsigned char i,r=0; for(;;){ if((U12 & 0x0f)!=0x0f){ if((r & 0x01)==0) BUZZER=1; else BUZZER=0; r++; } for(i=0; i<70; i++); }}

Generacja dźwięku

Page 9: SDCC I STRC52

SDCCSDCCWeryfikacja poprawności instalacji • Kompilacja (tylko z linii poleceń, w miejscu

gdzie znajduje się main.c)• sdcc -c main.c

• Wynik kompilacji • main.asm - wynik kompilacji w asemblerze C51,• main.lst - wynik kompilacji i przypisania kodu

binarnego• main.sym - tablica symboli powstała podczas

kompilacji• main.rel - plik obiektowy – wynik właściwej

kompilacji

Page 10: SDCC I STRC52

SDCCSDCCWeryfikacja poprawności instalacji • Linkowanie (polecenie wydane w jednej linii)

• sdcc --model-small --code-loc 0x4000 • --xram-loc 0x0000 main.rel

• Wynik linkowania • main.mem - tablica wielkości pamięci użytej• main.rst - wynik linkowania i przypisania kodu

binarnego• main.map - mapa symboli i obiektów powstałych

w wyniku kompilacji i linkowania• main.lnk - plik pomocniczy (opcje kompilacji)• main.ihx - plik wynikowy w formacie intel-HEX

do załadowania w STRC51

Page 11: SDCC I STRC52

STRC51STRC51

• Przyłączenie do komputera• Wybór wolnego złącza RS232 (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 220V, co komputer na

którym będzie dalsza praca

• Reset• inicjacja urządzenia – tylko uC 80C51 • Elementy sterujące LED, LCD nie mogą być ta metodą

inicjowane/resetowane

Page 12: SDCC I STRC52

STRC51STRC51

• Przygotowanie programu komunikacyjnego TeraTermPro (Setup->Serial Port)• Wybór portu

• COM1

• Wybór szybkości • 19200 bps

• Parametry transmisji• 8N1

• Opóźnienia transmisji• 0ms/znak, 30ms/linię

Page 13: SDCC I STRC52

STRC51STRC51

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

• Q – ładowanie z automatycznym uruchomieniem• P – ładowanie bez uruchomienia

• wymaga ręcznego uruchomienia kodu przez podanie: J 4000

Page 14: SDCC I STRC52

STRC51STRC51

• Ł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)

Page 15: SDCC I STRC52

STRC51STRC51

• Ładowanie pliku HEX cd.• Przełączenie się na TeraTermPro

• Wklejamy zawartość schowka – posiadający teraz plik main.hex

Page 16: SDCC I STRC52

Dziękuje za uwagę Dziękuje za uwagę

ii

życzę miłej pracy!życzę miłej pracy!