Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałCelestyna Tracz Został zmieniony 10 lat temu
1
Kompilator SDCC i Pakiet STRC52 Mgr inż. Aleksander Pruszkowski
SDCC I STRC52 Kompilator SDCC i Pakiet STRC52 Mgr inż. Aleksander Pruszkowski
2
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: Win32 (Windows 2K, Windows XP, 95, 98,...) Linux MacOS Istnieje możliwość rekompilacji narzędzi
3
SDCC 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
4
SDCC Podstawowe opcje kompilatora: -v --model-small --code-loc
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
5
SDCC 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)
6
SDCC 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++){ } }
7
SDCC Niektóre ograniczenia mikrokontrolera C51: Zmienne: Stałe:
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];
8
SDCC Weryfikacja poprawności instalacji
Pierwszy plik: main.c xdata at 0x8000 unsigned char U12; sbit at 0xB4 T1; #define BUZZER T1 void 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++); Pole deklaracji peryferii sprzętowych Sprawdzenie stanu klawiszy Generacja dźwięku Pętla opóźniająca
9
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 - 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
10
SDCC Weryfikacja 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
11
STRC51 Przyłączenie do komputera Przyłączenie zasilania Reset
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
12
STRC51 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ę
13
STRC51 Ł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
14
STRC51 Ł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)
15
STRC51 Ładowanie pliku HEX cd. Przełączenie się na TeraTermPro
Wklejamy zawartość schowka – posiadający teraz plik main.hex
16
Dziękuje za uwagę i życzę miłej pracy!
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.