Autor: Deucalion
Redakcja: Dondu
1. Kompilator C/C++ dla ARM
Producent mikrokontrolera, na którym będziemy wchodzić w świat ARMów zadbał o darmowe środowisko o nazwie LPCXpresso. Jest to bardzo rozbudowane środowisko oparte na platformie Eclipse, które jest edytorem, kompilatorem i debuggerem w jednym. Nauka tego środowiska to jest temat na odrębny artykuł.
Ja na razie wybrałem inne rozwiązanie, które w większym stopniu pozwala na zrozumienie działania wszystkich mechanizmów biorących udział przy kompilowaniu kodu źródłowego do pliku wykonalnego oraz jest bardziej uniwersalne i pozwala na korzystanie z mikrokontrolerami innych producentów. W jednym z kolejnych artykułów podepniemy się pod standardowego Eclipsa
Za kompilator posłuży nam Sourcery CodeBench Lite Edition for ARM
Na tej stronie umieszczona jest również dokumentacja do tego kompilatora i bibliotek.
Średnio co pół roku ( wiosna i jesień ) wychodzi nowa wersja tego kompilatora, warto więc czasami zajrzeć na tę stronę w nadziei, że znajdziemy coś nowego.
2. Edytor programisty.
Drugim ważnym narzędziem jest edytor. Do edycji kodu może posłużyć nam najzwyklejszy Notatnik, ale to rozwiązanie nie jest najlepszym pomysłem. Idealne jest wspomniane wyżej środowisko Eclipse z wtyczką CDT, ale ja nie mam na razie zamiaru przysłaniać sedna tematu omawianiem tego środowiska. Jako edytor wykorzystamy prosty edytor ze specjalnym ukierunkowaniem na programowanie – Programmer’s Notepad pobierz w wersji stabilnej.
Instalacja.
Kompilator
instalujemy z domyślnymi ustawieniami, więc podczas instalacji tylko
potwierdzamy. Jak ktoś pracuje na wielu kontach użytkowników to powinien podczas kroku „Add to PATH?”
ustawić opcje jak poniżej:
Kompilator standardowo instaluje się w katalogu C:\Program Files\CodeSourcery\Sourcery G++ Lite\, ale jak ktoś chce, to nic nie stoi na przeszkodzie, żeby zmienić ścieżkę instalacyjna na inną.
Programmer’s Notepada także instalujemy z domyślnymi ustawieniami.
Gdy już wszystko zainstalujemy, do szczęścia przydadzą nam się jeszcze dwa niewielkie programy z pakietu cygwina – echo i touch. Programy te najlepiej umieścić w katalogu z binariami kompilatora:
C:\Program Files\CodeSourcery\Sourcery G++ Lite\bin\
Może zdarzyć się, że przy próbie kompilacji wyskoczą komunikaty o braku bibliotek cygwina, żeby nie szukać i błądzić wszystkie biblioteki i dodatki znajdują się w tej paczce którą przygotowałem dla Was: arm_dodatki.zip
Plik najlepiej rozpakować do wspomnianego wcześniej katalogu z binariami.
Wszystkie narzędzia, które są potrzebne do tworzenia programu mamy już zainstalowane. Zostało nam jeszcze skonfigurowanie edytora.
1. Otwieramy Programmer’s Notepada
2. Otwieramy okno konfiguracyjne Menu -> Tools -> Options
3. Na drzewie klikamy w opcję Tools, a następnie dodajemy dwa polecenia naciskając przycisk Add
4. Wypełniamy opcje poleceń według wzorów:
Po tej operacji powinniśmy mieć skonfigurowane 2 polecenia:
Zamykamy okno konfiguracji opcji.
W Menu -> Tools pojawiły się dwie nowe pozycje:
5. Tworzymy nowy projekt.
6. Do katalogu z projektem wgrywamy pliki z tej paczki arm_szablon-v1.0.zip.
Pliki te i katalogi tworzą szablon startowy dla tego projektu. Po wgraniu plików folder powinien tak wyglądać:
Jak widać, wśród tych plików są dwa pliki wsadowe bat. Jeśli po uruchomieniu build.bat zobaczymy ekran jak poniżej oznacza to, że mamy poprawnie zainstalowany i skonfigurowany kompilator. Drugi plik clean.bat powoduje odwrócenie działania kompilatora, tzn. czyści wszystkie pliki, które wygenerował kompilator
Pozostałe pliki:
ARM-Pierwsze_kroki.pnproj – plik projektu edytora PN.
Makefile – skrypt dla programu cs-make.exe, jest to swojego rodzaju przepis na wykonanie wsadu do procesora. Skrypt ten modyfikujemy jeśli dodajemy nowe pliki źródłowe oraz zmieniam typ rdzenia.
lpc1114.ld – skrypt dla konsolidatora (linkera) - kolejny przepis. Modyfikujemy go tylko w przypadku zmiany procesora i jeśli potrzebne są inne sekcje.
i katalogi:
bin – katalog w którym po kompilacji znajdują się pliki które ładujemy do procesora
inc – katalog z plikami nagłówkowymi
src – katalog z plikami źródłowymi
tmp – katalog z plikami pomocniczymi, przydatnymi do szukania błędów i podglądania wyników pracy kompilatora.
7. Kolejnym krokiem jest zaciągnięcie do projektu struktury potrzebnych dla nas plików. Na nazwie projektu klikamy prawym przyciskiem myszy i wybieramy pozycję Add Magic Folder…
Czynność powtarzamy dla folderu „inc”
Wszystkie pliki które pojawię się w tych folderach i będą spełniały kryteria filtru zostaną automatycznie dodane do danego folderu. Czasami wymagane jest odświeżenie widoku poprzez wybranie opcji Refresh w menu katalogu.
Po tej operacji i otwarciu pliku main.c powinniśmy mieć taki widok:
Po naciśnięciu klawisza F9 program powinien skompilować się, a efekty kompilacji powinny być widoczne w dolnej części okna Programmer's Notepada:
Jak widać, nasz program zajął 588 bajtów pamięci FLASH i 200 bajtów pamięci RAM. Naciśnięcie F10 spowoduje wyczyszczenie wszystkich plików wygenerowanych przez kompilator.
Tutaj możesz pobrać gotowy szablon z plikami projektu PN szablon_pn-v1.1.zip
W następnym artykule zajmiemy się częścią sprzętową i zapędzimy nasze 32 bity do mrugania diodą ;-)
Jeśli napotkałeś najmniejsze problemy ze zrozumieniem tego poradnika lub zauważyłeś jakieś braki to daj znać, postaramy się to uzupełnić.
Miło byłoby gdybyś podzielił się swoją opinią, będzie to dla nas wskazówką, że warto coś takiego tworzyć i dalej rozwijać.
Kurs ARM: Spis treści
Masz błąd w linku "Kurs ARM: Spis treści". Bardzo przydatny tutorial :)
OdpowiedzUsuńDzięki za info - link poprawiony.
OdpowiedzUsuńBardzo pomocna stronka.
OdpowiedzUsuńZrobiłem wszystko krok po kroku i u mnie coś nie działa: w punkcie 4 nie wiem czy wystarczy wpisać cs-make czy poszukać tego pliku i wskazać całą ścieżkę. Po uruchomieniu build.bat u nie wyskakuje:
...>cs-make.exe all
proces_begin: CreateProces (NULL, cw_echo,..) failed.
make (e=2) Nie mozna odnalezc okreslonego pliku.
cs-make.exe: *** [startup] Error 2
Czy ktoś miał podobny problem ?
Piotr
arm_dodatki.zip Tego tez nie przeoczyłeś? Wgrałeś te pliki do odpowiedniego katalogu?
OdpowiedzUsuńCo do komendy to jeśli została prawidłowo zmodyfikowana zmienna środowiskowa PATH to powinno wystarczyć samo cs-make all lub cs-make.exe all
Dzięki za podpowiedzi.
OdpowiedzUsuńJuż działa. arm_dodatki.zip oczywiście miałem.
Nagrałem nową wersję CodeSourcery i nie zauważyłem że ta nowa wersja ma inną nazwę katalogu:
Program Files\CodeSourcery\Sourcery G++ Lite\ - wersja stara jak w artykule,
Program Files\CodeSourcery\Sourcery_CodeBench_for_ARM_EABI\ - wersja nowa.
Piotr
Hej,
OdpowiedzUsuńniedawno zainteresowałem się tematyką programowania ARM'ów i mam małe spostrzeżenie co do Twojego kursu.
Jako osoba obyta z AVR 8-bit (zapewne dużo tu takich) bez większych utrudnień rozumiem kod zawarty w dalszych częściach kursu. Problem zaczyna się gdy próbuje pojąć proces kompilacji i tworzenia pliku .HEX. Środowisko Atmela jest idiotoodporne, wciskam przycisk i mam wynik.
Moja prośba - czy mógłbyś wyjaśnić etapy jakie zachodzą w kompilacji, kiedy co z czego korzysta i co dokładnie zawierają wszystkie pliki pomocnicze ?
Z góry dziękuję za odpowiedź.
POzdrawiam
Witam
OdpowiedzUsuńA ja mam pytanie, czy ten sam PN może służyć do AVR jak i do ARM nxp? Pytam bo jak pewnie wielu z (jak to wyżej napisał kolega) obytych z AVR8bit używam właśnie PN jako edytora no i moje okno tools wygląda tak:
http://obrazki.elektroda.pl/9009909600_1376766580.png
WYGASŁY PLIKI POD LINKAMI DO POBRANIA , MOGLIBYŚCIE JE WGRAĆ JESZCZE RAZ ?
OdpowiedzUsuńDo momentu zakończenia transferu plików i poprawy artykułów na nowy serwer, w sprawie plików proszę się ze mną kontaktować na forum.
Usuńwygasły pliki mozna odświrzyć
Usuń