Autor: tmf
Redakcja: Dondu
Artykuł jest częścią cyklu: Atmel Studio - Spis treści
Wiemy już jak utworzyć nowy projekt w Atmel Studio, lecz nie zawsze startujemy z projektem od zera. Często zdarza się, że dysponujemy już plikami źródłowymi realizującymi jakieś funkcje, np. komunikację po I2C, obsługę USART, itd. Dzięki temu do nowego projektu początkowo dodajemy sporo istniejących plików.
Istniejące pliki do projektu możemy dodawać na co najmniej dwa sposoby. Zacznijmy od bardziej intuicyjnego. W tym celu klikamy prawym przyciskiem myszy na nazwę projektu w okienku Solution Explorer i wybieramy Add/Existing Item... :
Dodawanie istniejących plików. |
Pojawi się okienko wyboru pliku do dodania:
Dodawanie pliku. |
Jak widzimy plik możemy dodać na dwa sposoby. Podstawowy to po prostu dodanie do projektu (Add). Na czym ono polega? Po wybraniu Add Atmel Studio tworzy lokalną kopię wskazanego pliku w folderze projektu. Od tej pory będziemy modyfikować kopię pliku i ta kopia będzie wykorzystywana do kompilacji projektu.
Ma to pewne zalety – dzięki temu możemy dodany plik swobodnie modyfikować, a jego oryginalna zawartość pozostaje bez zmiany. Praktycznie zawsze jeśli będziemy lokalnie w projekcie modyfikować plik należy wybrać opcję Add.
Druga możliwość to wybranie opcji Add As Link. W tym przypadku, do projektu dodawane jest łącze do oryginalnego pliku, nie jest tworzona lokalna kopia. Do czego to może służyć? Jeśli do projektu dodajemy plik źródłowy, który ma być współdzielony przez wiele projektów (np. jest to sterownik jakiegoś urządzenia) to lepiej jest go dodać jako łącze (link). Dzięki temu wszystkie projekty będą pracować na tej samej wersji pliku.
Jakie płyną z tego korzyści? Otóż jeśli w takim sterowniku znajdziemy błąd, to wystarczy go poprawić w jednym miejscu. Wszystkie projekty, które z tego pliku korzystają od razu będą miały dostęp do poprawionej wersji. Jeśli pracujemy na lokalnej kopii pliku w każdym projekcie, to każdą kopię będziemy musieli mozolnie poprawiać.
Można więc zadać pytanie, dlaczego po prostu wszystkich plików nie dodawać jako łącza? Jest to jakaś opcja, lecz czasami stanowi to dla nas pewne ograniczenie. Przede wszystkim zawsze musimy tworzyć lokalne kopie pliku jeśli zmieniamy w nim interfejs widziany przez aplikację (API – application programming interface). W takiej sytuacji, jeśli pracowalibyśmy na łączu, to zmiana dotyczyłaby wszystkich projektów linkujących dany plik i w efekcie przestałyby się one poprawnie kompilować. Dzięki tworzeniu lokalnej kopii, każdy projekt ma swój własny plik, a jego zmiany nie wpływają na inne projekty.
W ten sposób możemy dodawać kolejne pliki. Warto zauważyć, że przytrzymując wciśnięty klawisz Shift lub Ctrl w okienku selekcji plików, możemy dodać jednocześnie do projektu wiele plików.
Jest jeszcze druga możliwość dodawania plików. Możliwość ta jest wygodna, jeśli np. ściągnęliśmy z Internetu projekt, który jest po prostu spakowaną paczką plików, a nie projektem Atmel Studio. W takiej sytuacji w poszczególnych katalogach mamy po prostu pliki C, które musimy kolejno dodać do tworzonego projektu.
Wygodnie jest więc zmienić sposób dodawania plików. W tym celu w okienku Solution Explorer klikamy na małą ikonkę znajdującą się na samej górze okna, podpisaną jako Show All Files. Jej kliknięcie spowoduje, że w drzewie projektu pokazane zostaną nie tylko pliki należące do projektu, ale wszystkie pliki znajdujące się w danym katalogu:
Widok wszystkich plików. |
Przy plikach nie należących do projektu wyświetlana jest czysta kartka. Takie pliki możemy wybrać (przytrzymując Shift lub Ctrl możemy wybrać na raz więcej niż jeden plik) i hurtowo dodać do projektu:
Wybór plików do wstawienia. |
Tym razem po wyborze plików, klikamy na nie prawym przyciskiem myszy i wybieramy opcję Include In Project. I to tyle, w ten sposób możemy szybko i wygodnie dodawać do projektu pliki.
Szablony projektu
Dodawanie plików do projektu w pokazany powyżej sposób jest wygodne i szybkie, ale projekt to nie tylko pliki, ale także, a może przede wszystkim ustawienia i konfiguracja.Dlaczego przede wszystkim? Pomijając prosty fakt, że źle skonfigurowany projekt po prostu się nie skompiluje, drugim powodem jest uciążliwość takiej konfiguracji. Za każdym razem musimy wybierać typ procesora, pamiętać o ustawieniu F_CPU, wybrać opcję Release/Debug, wybrać opcje kompilatora i linkera, z którymi będzie tworzony projekt i co najbardziej uciążliwe, w przypadku złożonych projektów – skonfigurować przeszukiwane katalogi Include i na końcu dodać pliki.
Jeśli nasz projekt jest prosty, to całość zajmie nam może ze 2 minuty, lecz nasze projekty z czasem stają się co raz bardziej skomplikowane, a ich konfiguracja może zając sporo czasu i nerwów.
Rozwiązaniem tej sytuacji jest wykorzystanie szablonów projektu!
Co to takiego? Otóż projekt po prostu możemy zapisać na dysku jako zbiór plików C i plików konfiguracyjnych Atmel Studio. Lecz często zdarza się, że dany projekt może być szablonem (szkieletem) wielu innych projektów. Dla przykładu w kursie XMEGA pokazałem jak można wykorzystać sprzętowy interfejs USB dostępny w XMEGA do realizacji wirtualnego portu szeregowego, dzięki czemu nie musimy używać przejściówek, typu FT232, a nasz układ możemy połączyć z komputerem za pomocą USB.
Z takiej funkcjonalności zapewne chcielibyśmy skorzystać w wielu projektach, które tworzymy. Możemy oczywiście mozolnie dodawać wymagane pliki tak jak to wcześniej pokazano, a następnie konfigurować właściwości projektu, możemy też sprawę rozwiązać elegancko - wystarczy utworzyć szablon projektu.
W tym celu tworzymy projekt, który będzie szablonem, tak jakby był to zwykły projekt. Dodajemy pliki, konfigurujemy właściwości projektu. Po zakończeniu tworzenia szkieletu projektu zapisujemy go na dysku, ale nie tak jak byśmy to uczynili normalnie, lecz z menu File wybieramy opcję Export Template...:
Wyeksportuj szablon projektu. |
Po wybraniu tej opcji ukaże nam się kolejne okienko:
Typ eksportowanego szablonu. |
Umożliwia ono wybranie sposobu utworzenia szablonu projektu. Mamy dwa typy szablonów:
- Project template - szablon projektu, który właśnie teraz nas interesuje i go wybierzemy,
- Item template - który tworzy szablon, umożliwiający dodanie jakiejś określonej funkcjonalności do projektu – jest to odpowiednik biblioteki. Na razie tego typu szablonami nie będziemy się zajmować.
Po wybraniu Project template, wybieramy Next i mamy kolejne okienko:
Opcje zapisu szablonu. |
Tym razem wybieramy tylko nazwę szablonu (np. SDRAM Driver) i opis szablonu (Template Description). Możemy opcjonalnie wybrać miejsce, gdzie szablon zostanie zapisany, lecz domyślna lokalizacja jest zupełnie ok i wygodnie jest jej nie zmieniać. Klikamy Finish i to wszystko, mamy gotowy szablon.
Jak go wykorzystać? Jest to niezwykle proste. Ponownie uruchamiamy Atmel Studio lub tworzymy nowy projekt (File/New/Project...). Tym razem otworzy nam się okienko tworzenia projektu, a w nim oprócz znanych nam już opcji tworzenia projektu wykonywalnego (Executable Project), biblioteki (Static Library) pojawi nam się możliwość wyboru jednego z wcześniej utworzonych szablonów projektów. Ja sobie utworzyłem wcześniej kilka przydatnych szablonów, wystarczy wybrać jeden z nich:
Otwarcie utworzonego wcześniej szablonu. |
Oczywiście w dolnej części okna jak zawsze wybieramy nazwę projektu, czy miejsce, w którym ma zostać utworzony. Po kliknięciu OK, utworzony zostanie nowy projekt z wcześniej stworzonego szablonu. Dzięki temu mamy w nim już wszystkie potrzebne pliki oraz skonfigurowane właściwości projektu.
W podobny sposób możemy utworzyć szablony typu Item template, zawierające np. szablony sterowników. Dzięki temu jeśli w projekcie potrzebujemy np. funkcjonalności sterownika LCD graficznego to wybieramy jeden z dostępnych szablonów i od razu wszystko, co jest potrzebne mamy w projekcie.
Szablon na ostatnim foto z lokalizacji w skrócie książka-xmega\przyklady\EBI jest przykładem do nowej książki o atxmega tak?
OdpowiedzUsuńTak :) Szablony na screenshocie zresztą też są do nowej książki.
Usuń