SDCC I STRC52

16

Click here to load reader

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!