Elvis Napisano Lipiec 11, 2010 Udostępnij Napisano Lipiec 11, 2010 Poprzednia lekcja Lekcja 2 - Kompilator Następna lekcja Do kompilacji programów będziemy wykorzystywać zestaw programów dostępny pod nazwą WinARM. Bezpośredni link do wersji 20060606 wykorzystywanej w kursie znajduje się tutaj: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/WinARM-20060606.zip (95MB). WinARM podobnie jak WinAVR bazuje na darmowym (licencja GNU) kompilatorze GCC. Kursy dotyczące gcc przydadzą się również w przypadku WinARM, więc osoby zainteresowane pogłębianiem wiedzy o działaniu kompilatora zachęcam do poszukiwania informacji o gcc dostępnych w internecie. Instalacja Archiwum WinARM-20060606.zip zawiera folder WinARM. W przykładach zakładam, że rozpakowujemy archiwum w katalogu głównym dysku C, czyli powstaje folder C:\WinARM, a w nim wszystkie dostarczone programy. Zanim przystąpimy do pracy musimy skonfigurować zmienne systemowe (ścieżki dostępu). Opis będzie dotyczył Windows XP, jednak w nowszych systemach konfiguracja powinna przebiegać podobnie. Najpierw sprawdzamy, czy na komputerze jest już zainstalowany program „make”. Jeśli jest może to powodować problemy z kompilacją. Warto przed instalacją sprawdzić, czy program już jest, żeby w razie problemów łatwiej było ustalić ich przyczynę. W celu sprawdzenia obecności programu uruchamiamy okienko wiersza poleceń klikając Start->Wszystkie programy->Akcesoria->Wiersz polecenia W okienku wpisujemy „make” i naciskamy enter. Powinien pojawić się komunikat „Nazwa 'make' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy”. Jeśli „make” jest już zainstalowany zobaczymy komunikat podobny do następującego: Jeśli make nie ma na komputerze dalsza instalacja powinna przebiegać bez problemu. Jeśli jest, czasem mogą pojawić się problemy z kompilacją. Zamykamy okienko wiersza poleceń. Aby system mógł odnaleźć nasz kompilator, do ścieżki systemowej musimy dodać fragment: ;C:\WinARM\utils\bin;C:\WinARM\bin Otwieramy panel sterowania (menu Start->panel sterowania), a w nim wybieramy ikonkę „System”. W oknie właściwości systemu wybieramy zakładkę „Zaawansowane” i klikamy przycisk „zmienne systemowe”. W nowo otwartym okienku odnajdujemy zmienną PATH: Wybieramy ją i klikamy Edytuj. Następnie do wartości zmiennej dopisujemy: ;C:\WinARM\utils\bin;C:\WinARM\bin Ważne jest, aby nie pominąć średnika (😉 między kolejnymi fragmentami. Zamykamy wszystkie okienka i uruchamiamy ponownie wiersz poleceń (jeśli poprzednio zostawiliśmy otwarty, musimy go zamknąć i otworzyć ponownie). Najpierw wpisujemy: make - powinien pojawić się komunkat: „make: *** No targets specified and no makefile found. Stop.” Następnie wpisujemy: arm-elf-c++ powinniśmy otrzymać komunikat „arm-elf-c++: no input files”. Teraz mamy gotowy do działania kompilator dla procesorów ARM. Edytor Do edycji plików będziemy wykorzystywali dostarczony z WinARM edytor „Programers notepad 2”. Jeśli mamy w systemie już zainstalowany ten program, i tak warto skorzystać z dostarczonego w pakiecie, ponieważ ma on skonfigurowane opcje przydatne podczas kompilacji (dodane skróty do uruchamiania kompilatora). Otwieramy folder: C:\WinARM\pn Znajduje się w nim plik pn.exe. Będziemy często z niego korzystać więc, warto utworzyć skrót na pulpicie do tego programu. Po uruchomieniu pojawia się okno podobne do następującego: Pierwszy projekt Program może być tworzony z wielu plików. Taki zestaw plików określamy jako projekt. Oba terminy będą używane zamiennie. Pobieramy plik Program01.zip (link na dole artykułu), rozpakowujemy do wybranego przez nas folderu i otwieramy wybierając opcję File->Open Project(s)... Okno powinno wyglądać następująco: W lewej części widoczne jest okno „Projects” w nim widzimy nasz projekt (nazwany Program01) oraz pliki składowe projektu: program01.c - nasz pierwszy program w C lpc2114.h - plik nagłówkowy z definicjami wykorzystywanymi w naszych programach Makefile - plik z instrukcją jak kompilować nasz program LPC2114-ROM.ld - informacja o rozmieszczeniu danych w pamięci procesora crt0.S - plik z kodem w asemblerze, wykonuje działania systemowe Nas głównie interesuje pierwszy plik (program01.c), czasem będziemy zaglądać do pliku lpc2114.h (ale nie modyfikować go), plik Makefile jest interesujący głównie gdy tworzymy nowy projekt. Kompilacja i programowanie Przed kompilacją otwieramy plik program01.c (to ważne!). Następnie wybieramy z menu Tools wybrać opcję „[WinARM_C] make all” (można też nacisnąć Ctrl+F7). W oknie Output (widocznym na dole ekranu) pojawią się komunikaty kompilatora. Jeśli wszystko przebiegnie prawidłowo na końcu będzie: Errors: none -------- end -------- > Process Exit Code: 0 > Time Taken: 00:02 Co oznacza, że nasz program został poprawnie skompilowany. Czas wgrać nasz program do procesora i zobaczyć jak działa. Do programowania będziemy używać łącza RS232 oraz oprogramowania dostarczonego z WinARM. Kabel RS232 podłączamy do gniazda COM0 płytki ZL1ARM. Otwieramy plik Makefile i odszukujemy fragment: LPC21ISP = lpc21isp_beta LPC21ISP_PORT = com1 LPC21ISP_BAUD = 115200 LPC21ISP_XTAL = 12000 Tutaj jest podana konfiguracja portu. Jeśli zamiast COM1 wykorzystujemy inny port, należy go zmienić. Jak sprawdzić który port COM mamy podłączony do komputera? W Panelu Sterowania wybieramy System, a następnie zakładkę Sprzęt. Klikamy przycisk „Manager urządzeń” i szukamy opcji „Porty (COM i LPT). U mnie dostępny jest port COM1. Gdy ustawimy parametry portu w pliku Makefile, zapisujemy plik i poleceniem „[WinARM_C] make programm” (lub naciskając ctrl+F5) programujemy układ. Pierwszy program jest bardzo prosty - na zamianę zapala i gasi diody LED0 i LED1. W następnej lekcji zobaczymy, jak działa nasz program. Czas, który minie do ponownej lekcji proponujemy na zakup (jeśli oczywiście ktoś chce) oraz zapoznanie się z płytką ZL1ARM dostępną w Kamami. Może sami bawiąc się kodem zauważycie, które polecenia powodują konkretne zachowanie modułu? Przypominamy, że jeśli przy składaniu zamówienia podacie hasło DIODA, dostaniecie 10% rabatu oraz programator gratis! Problemy i niejasności dotyczące tej części prosimy zadawać w tym temacie. Autor kursu: Elvis Pomoc przy edycji materiałów wideo, formatowaniu i publikacji: Treker Program01.zip 1 Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Lipiec 23, 2010 Udostępnij Lipiec 23, 2010 C:\Documents and Settings\Marek>makemake: *** No targets specified and no makefile found. Stop. C:\Documents and Settings\Marek>arm-elf-c++ Nazwa 'arm-elf-c++' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrz ne,program wykonywalny lub plik wsadowy. > "C:\WinARM\utils\bin\make" all -------- begin -------- process_begin: CreateProcess((null), arm-elf-gcc --version, ...) failed. make (e=2): Nie można odnaleźć określonego pliku. C:\WinARM\utils\bin\make: *** [gccversion] Error 2 > Process Exit Code: 2 > Time Taken: 00:00 Można coś z tym zrobić? Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Lipiec 23, 2010 Autor tematu Udostępnij Lipiec 23, 2010 Prawdopodobnie miałeś "make" zainstalowany na komputerze przed instalacją WinARM. Odinstaluje ten program, albo zmień kolejność wyszukiwania w ścieżce dostępu. Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Lipiec 23, 2010 Udostępnij Lipiec 23, 2010 zmieniłem path (miałem make od CBuildera oraz jeszcze WinAVR), to co podałem pokazało się już po. Komputer był uruchomiony ponownie. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Elvis Lipiec 23, 2010 Autor tematu Udostępnij Lipiec 23, 2010 Chyba brakuje ścieżki do kompilatora w zmiennej PATH: C:\WinARM\utils\bin;C:\WinARM\bin Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Lipiec 23, 2010 Udostępnij Lipiec 23, 2010 C:\WinARM\utils\bin;C\WinARM\bin;d:\program files\miktex 2.7\miktex\bin;%systemroot%\system32;%systemroot%;%systemroot%\system32\wbem;C:\Program Files\MATLAB71\bin\win32;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files\Samsung\Samsung PC Studio 3\;C:\Program Files\OpenOCD\0.4.0\bin to jest mój PATH. Pozostaje tylko miktex (aczkolwiek błąd wskazuje na problem z arm-elf-c++), ale jego nie usunę. Zresztą samo usuwanie innych wpisów czy programów uważam za głupi pomysł - chcąc programować ARMy nie mogę sie bawić w inne programowanie? A co jeśli bym chciał zrobić program w CBuilderze, który by sie komunikował przez COM z ARMem? Musi istnieć jakieś normalne rozwiązanie, w przeciwnym razie WinARM nie nadaje się jako program do nauki i programowania. Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Lipiec 23, 2010 Autor tematu Udostępnij Lipiec 23, 2010 Spokojnie, nie ma obawy, da się mieć kilka kompilatorów. Ja mam C++Builder6, VisualStudio, AVR Studio i jeszcze kilka na raz. Problem polega na tym, że nie wszystkie mogą być domyślnymi. Większość (jak np. C++ Builder) nie potrzebują ścieżki do plików - IDE poradzi sobie bez nich. Instalator dodaje je, żeby można było kompilować z linii poleceń. Ważne pytanie, jakich windowsów używasz? [ Dodano: 23 Lip 10 07:01 ] Spróbuj z wiersza poleceń uruchomić: arm-elf-gcc --version Jak nie zadziała to jeszcze: c:\winarm\bin\arm-elf-gcc --version Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Lipiec 23, 2010 Udostępnij Lipiec 23, 2010 Dobra, znalazłem błąd, w instrukcji jest błąd pod 5. obrazkiem: "Następnie do wartości zmiennej dopisujemy: ;C:\WinARM\utils\bin;C\WinARM\bin" po C brakuje dwukropka, nie zauważyłem przy kopiowaniu. Co nie zmienia faktu, że gryzło się z Borlandem wcześniej 😉 Dzięki za nakierunkowanie. Biednemu wiatr zawsze wieje w oczy: > "make.exe" program You may have to bring the target in bootloader-mode now. lpc21isp_beta -control program01.hex com5 115200 12000 lpc21isp version 1.37 File program01.hex: loaded... converted to binary format... image size : 460 Synchronizing.................................................................................................... no answer on '?' make.exe: *** [program] Error 4097 > Process Exit Code: 2 > Time Taken: 01:38 próbowałem nic nie wciskać, wciskać RESET, wciskać RESET i INT1, nic. Dopiero jak zmieniłem BAUD na 38400 to zadziałało. Rada dla innych: jeśli będziecie mieć problem z synchronizacją, zmniejszcie prędkość transmisji. Dzięki Elvis 🙂 1 Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Lipiec 23, 2010 Autor tematu Udostępnij Lipiec 23, 2010 W artykule ścieżka już poprawiona. Cytuj Link do komentarza Share on other sites More sharing options...
kempa65 Październik 28, 2010 Udostępnij Październik 28, 2010 Rozpakowałem program tak jak w instrukcji, dodałem ścieżki przeszukiwania, itp. No i sprawdziłem w cmd czy chodzą polecenia make i arm-elf-c++ i chodzą, ale gdy chcę skompilować program01 podany w przykładzie dostaję takie komunikaty: > "make.exe" all MAKE Version 5.2 Copyright (c) 1987, 1998 Inprise Corp. Error makefile 170: Command syntax error Error makefile 172: Command syntax error Error makefile 174: Command syntax error Error makefile 326: Colon expected Error makefile 342: Command syntax error Error makefile 343: Command syntax error Error makefile 344: Command syntax error Error makefile 348: Command syntax error Error makefile 349: Command syntax error Error makefile 350: Command syntax error Error makefile 354: Command syntax error Error makefile 355: Command syntax error Error makefile 356: Command syntax error Error makefile 367: Command syntax error Error makefile 368: Command syntax error Error makefile 369: Command syntax error Error makefile 414: Command syntax error *** 17 errors during make *** > Process Exit Code: 1 > Time Taken: 00:00 Co z tym zrobić? Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!