Mikrokontrolery_ARM_cz8.pdf
(
541 KB
)
Pobierz
101-103_arm_cz8.indd
K U R S
Mikrokontrolery
z rdzeniem ARM, część 8
Pierwszy projekt
Przechodzimy do pierwszego
projektu na ARM-y – będą to
banalne efekty „choinkowe” na
diodach świecących, ale w pełni
ilustrujące sposób korzystania
z możliwości środowiska Eclipse.
nie pliki startowe dostosowane do
konkretnego modelu. Inaczej jest
w przypadku wykorzystania pakie-
tu gnuarm, który jest przeznaczo-
ny nie dla konkretnego typu mi-
krokontrolerów jednego producenta,
ale dla różnych odmian pochodzą-
cych od różnych producentów. Je-
dyną ich cechą wspólną jest rdzeń
ARM natomiast sposób inicjalizacji,
peryferia, mapa pamięci mogą być
zupełnie odmienne, dlatego pliki
startowe musimy stworzyć samo-
dzielnie. Pliki, jakie musimy stwo-
rzyć to: Skrypt linkera, w którym
zawarte są informacje o umiesz-
czeniu w pamięci poszczególnych
sekcji danych oraz kodu programu.
Plik startowy, w którym zawar-
ty jest startowy kod inicjalizujący
peryferia mikrokontrolera takie jak
pętla PLL czy kontroler pamięci
MAM oraz inicjalizujący obsza-
ry pamięci zgodnie ze standardem
ANSI C/C++. Pisząc nowy projekt
nie będziemy musieli tworzyć od
nowa plików startowych, wystarczy,
że stworzymy je jednorazowo dla
danej rodziny mikrokontrolerów,
a później będziemy je kopiować do
nowego projektu. Pierwszym pro-
gramem, jakim zajmiemy się na
łamach niniejszego kursu będzie
przykładowy program zapalający po
kolei diody LED umieszczone w ze-
stawie ZL6ARM (
www.kamami.pl
).
Będzie on nam mógł później po-
służyć jako wzorzec przy tworze-
niu własnych projektów. Wykorzy-
stywać będziemy pliki startowe
oraz plik reguł
makefile
tak, aby
za każdym razem nie tworzyć ich
od nowa. Na początek opiszemy,
w jaki sposób stworzyć najprostszy
projekt w
Eclipse
, a następnie zaim-
portujemy do niego wszystkie pliki
z przykładowego projektu błyska-
jącego diodami, skompilujemy go,
oraz zaprogramujemy pamięć Flash
mikrokontrolera obserwując efekt
działania programu. Po urucho-
mieniu Eclipse wybieramy z me-
nu polecenie
File->New->Project
.
Pisząc programy dla mikrokon-
trolerów AVR z użyciem kompila-
tora
avr-gcc
musieliśmy stworzyć
tylko plik
makefile
określający za-
leżności kompilacji pomiędzy pli-
kami, oraz pliki samego projektu.
Pozostałe elementy niezbędne do
prawidłowego przebiegu kompilacji
(plik startowy oraz skrypty linke-
ra) zawarte były w samym pakie-
cie
WinAVR
. Na podstawie opcji
–m określającej typ procesora były
automatycznie pobierane odpowied-
Rys. 21.
Pokaże nam się okno dialogowe,
z którego wybieramy opcję:
Stan-
dard Make C++ Project
. Następnie
klikamy przycisk
Next>
,
pojawi się
wówczas kolejne okno dialogowe.
W polu tekstowym
Project Name
wpisujemy nazwę projektu np.
Ledy
i wciskamy klawisz
Finish
, co
spowoduje utworzenie nowego pu-
stego projektu. Kolejną czynnością
jest import plików do projektu.
Możemy tego dokonać klikając pra-
wym przyciskiem myszy na otwar-
tym projekcie (tak jak przedstawio-
no na
rys. 20
), a następnie wybrać
polecenie
Import
.
Pojawi się okno dialogowe,
z którego wybieramy opcję
Archive
File
, wówczas zobaczymy kolejne
okno, w którym klikamy przycisk
Browse
i wybieramy plik
ep3.zip
z przykładowym projektem
,
któ-
ry można ściągnąć ze strony EP
w dziale
Download
. Po prawej stro-
nie pokaże się lista plików znajdu-
jących się w archiwum (
rys. 21
).
Ponieważ wykorzystywać będzie-
my gotowy program pozostawiamy
zaznaczone wszystkie pliki i wci-
skamy klawisz
Finish
.
Gdybyśmy
mieli zamiar tworzyć własny pro-
jekt powinniśmy odznaczyć plik
led.cpp
, który jest przykładowym
programem mrugającym diodami
LED. Pozostałe pliki są plikami
niezbędnymi do przeprowadzenia
Rys. 20.
Elektronika Praktyczna 7/2006
101
K U R S
Tab. 4. Pliki projektu i ich funkcje
Nazwa pliku Przeznaczenie
boot.s
Plik startowy inicjalizujący układy peryferyjne mikrokontrolerów LPC213x oraz
inicjalizujący pamięć RAM zgodnie z wymaganiami standardu ANSI C/C++
Plik dla linkera określający, w jaki sposób rozmieścić poszczególne segmenty
w pamięci. Jest on skonfigurowany tak, aby program idane stałe były umiesz-
czone w pamięci Flash, natomiast zmienne umieszczone zostaną w pamięci
RAM.
lpc213x.h Plik nagłówkowy, zawierający definicję rejestrów mikrokontrolerów LPC213x
makefile
Plik konfiguracyjny dla narzędzia make służącego do określenia zależności
pomiędzy plikami projektu
led.cpp Przykładowy program mrugający diodami (efekt węża świetlnego)
Rys. 22.
procesu kompilacji. Po tej czynno-
ści możemy przystąpić do kompi-
lacji projektu, czego możemy do-
konać wydając z menu polecenie
Project->Build All
. Jeżeli wszystko
przebiegło poprawnie projekt zosta-
nie skompilowany w wyniku, cze-
go powstanie plik
ledtst.hex
.
Jeżeli
wystąpił błąd podczas kompilacji,
w zakładce
Problems
pojawi się
opis błędu. Po kliknięciu na wy-
branym komunikacie zostaniemy
przeniesieni linii, w której wystąpił
błąd.
Bardzo ciekawą i przydatną
funkcją Eclipse są inteligentne
podpowiedzi, które podpowiadają
programiście, jakie metody i pola
znajdują się w danej klasie/struktu-
rze. Po prawej stronie umieszczo-
na jest zakładka
Outline
, w której
w sposób graficzny przedstawiono
poszczególne klasy, zmienne, funk-
cje definicje itp. Pozostało nam
teraz zaprogramowanie mikrokon-
trolera, w tym celu za pomocą ka-
bla łączymy port COM0 zestawu
ZL6ARM z wybranym portem sze-
regowym komputera. Schemat ka-
bla połączeniowego przedstawiono
na
rys. 22
.
Po podłączeniu zestawu uru-
chamiamy program
LPC2000 Flash
Utility
.W polu tekstowym
Filename
wpisujemy ścieżkę do pliku
ledtst.
hex
a następnie wciskamy przycisk
Upload to Flash
.
Po chwili pro-
gram zostanie załadowany i urucho-
miony. Na diodach LED (D4…D11)
zestawu ZL6ARM powinien ukazać
się efekt punktu świetlnego. Przy
pierwszym uruchomieniu progra-
mu należy skonfigurować program
LPC2000 Flash Utility
.
Na rysunku
rys. 23
przedstawiono proponowa-
ny sposób konfiguracji programu.
Należy wybrać typ mikrokon-
trolera, wpisać częstotliwość kwar-
cu mikrokontrolera oraz zaznaczyć
opcję używania linii DTR/RTS słu-
żących do uruchamiania i zerowa-
nia mikrokontrolera. W przypadku
zmiany pliku HEX (np. w wyniku
dopisania fragmentu kodu) nie mu-
simy po każdej kompilacji ponow-
nie wybierać nazwy pliku, gdyż
przed każdym poleceniem załado-
wania pamięci Flash jest on od-
czytywany od nowa, co jest istot-
ną zaletą programu.
plik wynikowy
ledtst.elf
., z którego
za pomocą programu konwertują-
cego tworzony jest plik
ledtst.hex
.
W pliku
makefile
będziemy zapisy-
wać przebieg procesu kompilacji,
co przy wykorzystaniu standardo-
wego szablonu jest bardzo proste.
Poniżej przedstawiono
makefile
na-
szego projektu. Nie będziemy się
tutaj zagłębiać w szczegółowy opis
narzędzia
make
. Zainteresowanych
odsyłam do literatury lub Interne-
tu. Przedstawimy tylko fragmenty,
które będziemy musieli zmieniać
tworząc własne projekty:
#tutaj wpisz nazwe pliku hex
TARGET = ledtst
W powyższej linii wpisujemy
nazwę pliku wynikowego HEX, jaki
zostanie wygenerowany w wyniku
kompilacji:
CFLAGS = -Os -fpack-struct -mcpu=ar-
m7tdmi -Wall –gstabs
Polu
CFLAGS
przypisujemy
opcje kompilatora, jakie będą użyte
przy tworzeniu projektu.
Flaga –Os określa stopień opty-
malizacji kompilatora na najmniej-
szy rozmiar pliku wynikowego.
Inna często wykorzystywana
opcja to
–O3
, generująca najszyb-
szy kod wynikowy.
Opcja
–fpack-struct
zakazu-
je kompilatorowi wyrównywania
struktur pustymi bajtami, a więc
Pliki projektu
W
tab. 4
przedstawiono pliki,
jakie znalazły się w naszym pierw-
szym projekcie oraz funkcje, jakie
pełnią.
Przebiegiem kompilacji projek-
tu zarządza narzędzie
GNU make
,
które na podstawie pliku konfigu-
racyjnego
makefile
określa na pod-
stawie odpowiednich zależności, co
i w jakiej kolejności ma być kompi-
lowane. Poza tym
make
kompiluje
tylko te pliki, które uległy zmia-
nie. Tworząc plik makefile musimy
zbudować odpowiednie zależności
i reguły określające, w jaki sposób
powstać ma plik wynikowy. Przed
zapoznaniem się z budową makefi-
le najpierw przedsta-
wimy przebieg proce-
su kompilacji naszego
pierwszego projektu
(
rys. 24
).
Poprzez kompilację
plików
led.cpp
oraz
lpc213x.h
powstaje
plik wynikowy
led.
o
, natomiast z pliku
boot.s
tworzony jest
plik wynikowy
boot.o
.
Z plików
led.o boot.o
na podstawie skryp-
tu
lpc2138-rom.ld
powstaje ostateczny
Rys. 23.
Rys. 24.
102
Elektronika Praktyczna 7/2006
lpc2138-rom.ld
K U R S
struktura ma dokładnie taką postać
jak jest zadeklarowana.
Opcja
–mcpu=arm7tdmi
określa
typ procesora.
Opcja
–Wall
nakazuje kompila-
torowi generowanie szczegółowych
ostrzeżeń kompilacji.
Opcja
–gstabs
nakazuje genero-
wanie informacji dla debugera.
#pliki zrodlowe
SRC = led.cpp
#pliki assemblerowe
ASRC = boot.s
W polu
SRC
wpisujemy li-
stę wszystkich plików źródłowych
*.cpp
występujących w projekcie
oddzielając je spacjami natomiast
w polu
ASRC
wpisujemy listę pli-
ków asemblerowych
*.s
:
#Zaleznosci pomiedzy plikami w C
boot.o: boot.s
led.o: led.cpp lpc213x.h
#zaleznosci pomiedzy plikami konco-
wymi
$(TARGET).elf: boot.o led.o lpc2138-
rom.ld
Powyższe linie opisują wcześniej
wspomniane zależności pomiędzy
plikami źródłowymi oraz wyniko-
wymi. Odczytujemy je w sposób
następujący: plik
boot.o
zależy od
(powstaje z) pliku
boot.s
. Plik
led.
Rys. 25.
o
zależy od plików
led.cpp
oraz
lpc213x.h
. Plik wynikowy
$(TAR-
GET).elf
zależy od plików
boot.
o led.o lpc2138-rom.ld
. W ten wła-
śnie prosty sposób możemy budo-
wać nawet bardzo skomplikowane
projekty bez obawy o prawidłowy
przebieg kompilacji. Tworząc wła-
sne konfiguracje na podstawie po-
wyższego szablonu musimy pamię-
tać, aby poprawnie zapisać wszyst-
kie zależności, gdyż w przeciwnym
przypadku program wynikowy
może działać niepoprawnie.
Lucjan Bryndza SQ7FGB, EP
lucjan.bryndza@ep.com.pl
Wieloletnie doskonalenie uczyniło nas najbardziej wszechstronnym producentem czci i systemów samochodowych.
Zatrudniamy prawie 200 tysicy pracowników w prawie 200 zakładach produkcyjnych na całym wiecie. Nowoczesna
technologia i jako stały si podstaw szerokiej gamy rozwiza technicznych. W Polsce działamy ju od 1995 roku.
Jestemy laureatem nagrody dla Najlepszego Inwestora Zagranicznego, a w 2003 roku zostalimy uhonorowani
godłem Inwestor w Kapitał Ludzki.
Do pracy w
Centrum Technicznym w Krakowie
poszukujemy osób na stanowiska:
IN
YNIER PROGRAMISTA
(ref. SE)
Zakres obowi
zków:
Tworzenie oprogramowania dla samochodowych systemów sterowania,
multimedialnych lub nawigacji satelitarnej.
Wymagania:
•Wykształcenie wysze (informatyka, elektronika, telekomunikacja lub
pokrewne)
•Znajomo jzyka C lub C++
Dodatkowym atutem b
dzie znajomo
:
•Systemów czasu rzeczywistego i systemów wbudowanych
•Technologii obiektowych oraz jzyka UML
•Inynierii oprogramowania
•Cyfrowego przetwarzania sygnałów
•Systemów multimedialnych
•Pakietu Matlab
IN
YNIER DS. TESTÓW
OPROGRAMOWANIA
(ref. STV)
Zakres obowi
zków:
Tworzenie scenariuszy testowych, projektowanie rodowiska testowego
(w tym do testów automatycznych)
i wykonywanie testów oprogramowania.
Wymagania:
•Wykształcenie wysze (elektronika, informatyka, automatyka,
telekomunikacja lub pokrewne)
•Znajomo podstaw elektroniki
•Znajomo zagadnie z zakresu miernictwa elektronicznego
(oscyloskopy, generatory, analizatory itp.)
•Znajomo systemów pomiarowych
•Znajomo podstaw programowania (np. jzyk C lub C++)
Dodatkowym atutem b
dzie znajomo
:
•Jzyków skryptowych (Perl, TCL itp.)
•Zagadnie z zakresu testowania systemów
i oprogramowania
Wymagania ogólne:
dobra znajomo jzyka angielskiego, mobilno (czste podróe słubowe), umiejtno pracy w zespole
Zaakceptowanym kandydatom oferujemy
: interesujc prac w midzynarodowym zespole, w dynamicznie rozwijajcej si firmie * kontakt z najnowszymi
technologiami * współprac z najwikszymi producentami samochodów * moliwo rozwoju i doskonalenia zawodowego * konkurencyjne wynagrodzenie
i atrakcyjny pakiet socjalny * przyjazn atmosfer i bardzo dobre warunki pracy
Osoby zainteresowane prosimy o przesyłanie CV i listu motywacyjnego w jzyku polskim i angielskim na adres:
Magda Szyndera, Delphi Poland S.A. – Centrum Techniczne, ul. Podgórki Tynieckie 2, 30-399 Kraków, e-mail:
magda.szyndera@delphi.com
Prosimy o podanie w licie motywacyjnym symbolu referencyjnego.
Przesyłamy potwierdzenie otrzymania aplikacji. W przypadku braku potwierdzenia, prosimy przesła
dokumenty poczt
tradycyjn
.
Uprzejmie informujemy, e kontaktujemy si tylko z wybranymi kandydatami. Na aplikacji prosimy o zawarcie nastpujcej klauzuli: Wyraam zgod na przetwarzanie moich danych osobowych
zawartych w mojej ofercie pracy dla potrzeb niezbdnych do realizacji procesu rekrutacji (zgodnie z ustaw o ochronie danych osobowych z dnia 29.08.97 Dz. U. 133 Poz. 883)
Elektronika Praktyczna 7/2006
103
Plik z chomika:
xp7
Inne pliki z tego folderu:
Mikrokontrolery_ARM_cz1.pdf
(898 KB)
Mikrokontrolery_ARM_cz2.pdf
(1412 KB)
Mikrokontrolery_ARM_cz3.pdf
(738 KB)
Mikrokontrolery_ARM_cz4.pdf
(1264 KB)
Mikrokontrolery_ARM_cz5.pdf
(517 KB)
Inne foldery tego chomika:
C%MOS
Mikrokontrolery AVR
Mikrokontrolery dla początkujących - Piotr Górecki
Mikrokontrolery i układy cyfrowe
Mikrokontrolery to takie proste - EDW
Zgłoś jeśli
naruszono regulamin