Popularny post Zuk Napisano Grudzień 31, 2009 Popularny post Udostępnij Napisano Grudzień 31, 2009 1. Wstęp Artykuł ten jest poświęcony debugowaniu sprzętowemu mikrokontrolerów AVR. Debugger sprzętowy to doskonałe narzędzie do wyszukiwania błędów w programie w rzeczywistym układzie. W artykule korzystam (rys. 1): - ze środowiska AVRStudio 4.17 - programatora AVR Dragon - płytki ZL11AVR z procesorem ATtiny 2313. Rys. 1. Z lewej programator AVR Dragon, na środku pytkaZL11AVR. Środowisko programistyczne AVRStudio jest to darmowe oprogramowanie firmy Atmel do programowania procesorów z rodziny AVR w assemblerze a od wersji 3.xx współpracuje z zewnętrznym kompilatorem języka C (np. avr-gcc z pakietu WinAVR). Aby rozpocząć programowanie w języku C w AVRStudio należy więc zainstalować także pakiet WinAVR (Programers Notepad nie jest potrzebny). AVRStudio ma kilka zalet. Pliki make są tworzone automatycznie, trzeba jednak pamiętać aby właściwie wypełnić opcje projektu (Project -> Configuration Options). Można symulować napisane programy, w czasie symulacji podglądać rejestry, pamięć, zmienne, wgrywać program do procesorów przy użyciu programatorów kompatybilnych z tym środowiskiem, takich jak STK500, AVR Dragon, ISP mk II, JTAG mk II. Można także przy użyciu programatorów obsługujących interfejs JTAG lub dW (AVR Dragon, JTAG mk II) debugować sprzętowo napisane programy. AVR Dragon jest programatorem firmy Atmel przeznaczonym do programowania procesorów AVR, obsługuje on następujące interfejsy SPI, dW, JTAG, PP (Pararel Programing), HVP (High Voltage Programing). Jest to programator typu „low cost”, kupując go dostajemy programator bez żadnych przewodów ani nawet obudowy, kabel USB typu AB oraz odpowiednie przewody do połączenia programatora z programowanym układem należy wykonać samemu. Płytka ZL11AVR jest to płytka uruchomieniowa i w całym układzie nie ma większego znaczenia – po prostu miałem ją pod ręką, można wykorzystać dowolny układ z procesorem oraz złączem ISP. 2. O debugowaniu sprzętowym Najprościej rzecz ujmując debugowanie to wyszukiwanie błędów (bug-ów) w programie. Możliwość sprawdzenia programu i przeanalizowanie jego działania „krok po kroku” jest chyba jedną z najbardziej pomocnych możliwości udostępnionych przez twórców środowisk programistycznych. O ile pisząc aplikacje dla komputerów pracujemy oraz sprawdzamy program w środowisku komputera, o tyle takie działanie podczas programowania mikrokontrolerów nie jest takie proste. Środowisko AVRStudio umożliwia przeprowadzenie symulacji napisanych przez nas programów, takie działanie można nazwać debugowaniem programowym, jednak wygoda pracy z takim symulatorem jest co najmniej wątpliwa, należy przewidzieć wszystkie możliwe sygnały jakie wystąpią w trakcie działania programu w układzie docelowym, czas symulacji trwa bardzo długo a opóźnienia (delay) mające trwać milisekundy w symulacji trwają minutami. Debugowanie sprzętowe to możliwość sprawdzenia zaprogramowanego mikrokontrolera (ogólnie układu programowalnego) w rzeczywistym układzie, w środowisku, w którym będzie pracował docelowo, oraz przy rzeczywistych prędkościach procesora, gdzie 500ms trwa 500ms. 3. Przygotowanie środowiska Należy podłączyć układ z kontrolerem do programatora za pomocą złącza ISP. UWAGA! Należy pamiętać, aby programator miał pełną kontrolę nad sygnałem RESET, nie może być do tego pinu podpięty żaden kondensator, lub scalony układ resetu (np. DS1813). 4. Uruchomienie Uruchamiamy AVRStudio oraz podłączamy programator za pomocą kabla USB. Przy pierwszym podłączeniu zostaną zainstalowane odpowiednie sterowniki do programatora, próba podłączenia programatora bez zainstalowanego AVRStudio może spowodować, że programator nie zostanie poprawnie zainstalowany i dalsze komplikacje. Dalsze kroki: W oknie kreatora „Project wizard” tworzymy nowy projekt AVR GCC, podając nazwę projektu, plik startowy, dodatkowo możemy zaznaczyć opcję aby został automatycznie utworzony nowy katalog (rys. 2), przechodzimy do wyboru warstwy sprzętowej poleceniem NEXT>> (Ja zawsze plikowi głównemu nadaję nazwę „main”) Rys. 2. Wybieramy nasz programator oraz procesor (AVR Dragon oraz w moim przypadku ATtiny2313), Port możemy zostawić na auto lub wybrać USB (rys. 3). I kończymy kreatora FINISH Rys. 3. Został stworzony nowy projekt. Teraz możemy zacząć pisać nasz program, należy pamiętać aby prawidłowo wypełnić opcje projektu (Project -> Configuration Options) zwłaszcza częstotliwość, te informacje posłużą do automatycznego wygenerowania przez AVRStudio pliku Make (rys. 4). Rys. 4. Na listingu 1 przedstawiony jest prościutki program do migania diodami: #include <avr/io.h> #include <util/delay.h> #define FOREVER 1 int main(void) { DDRB = 0xFF; PORTB = 0x00; while(FOREVER) { PORTB = 0xFF; _delay_ms(500); PORTB = 0x00; _delay_ms(500); } } Na rysunku 5 przedstawiony jest widok środowiska z powyższym programem. Rys. 5. Możemy skompilować ten program wybierając F7 lub Build -> Build (rys. 6). Rys. 6. Aby sprawdzić poprawność podłączenia odczytamy sygnaturę procesora. W tym celu naciskamy ikonę CON (za pierwszym razem, lub AVR następnym) Rysunek 7 przedstawia na górze widok ikon oraz okno obsługi programatora. W tym oknie możemy odczytać sygnaturę (Read Signature). Jak wszystko jest OK. Wyłączamy to okno. Rys. 7. Przechodzimy do uruchomienia DebugWIRE. Aby uruchomić debugowanie wybieramy Debug -> Start Debugging a następnie wybieramy „Use SPI enable debugWIRE interface” i zatwierdzamy OK. (rys.8, rys. 9, rys. 10). Rys. 8. Rys. 9. Rys. 10. Teraz musimy rozłączyć programator od kabla USB oraz zasilanie układu docelowego i podłączamy spowrotem. I znów wybieramy „Start debbuging”. Jeśli połączenie nie nastąpi należy zrestartować programator i AVRStudio i ponowić próbę. Jeśli tym razem wyskoczy okno jak z rysunku 9 wybieramy „Retry debugWIRE connection”. 5. Praca z dW Przy poprawnej konfiguracji na szarym tle po lewej stronie programu pojawia się strzałka prezentująca następny wykonywany rozkaz (rys. 12). Mamy dostępne przyciski debugowania oraz podglądu zmiennych i pamięci. Program możemy sprawdzać podczas pracy ciągłej lub kilku wersji pracy krokowej. (rys. 11). Rys. 11. Rys. 12. Znaczenie ikon debbugera (rys. 11): 1 – zakończenie debugowania,2 – praca ciągła,3 – zatrzymanie programu (pauza),4 – restart programu,6 – następny krok (jeżeli ten rozkaz to wywołanie funkcji program wchodzi do pierwszego rozkazu wewnątrz funkcji),7 – następny krok (jeżeli ten rozkaz to wywołanie funkcji program wykonuje tę funkcję i przechodzi do następnego rozkazu na aktualnym poziomie programu),8 – wykonuje całą funkcjęi wychodzi poziom wyżej (nie działa wewnątrz funkcji main),9 – wykonywane są instrukcje od strzałki do migającego kursora,11 – ustawia lub kasuje pułapkę – punkt przerwania (break point),Znaczenie ikon pamięci (rys. 11): 14 – włącza lub wyłącza okno podglądu zmiennych (wach),15 – włącza lub wyłącza okno podglądu rejestru,16 – włącza lub wyłącza okno podglądu pamięci. 6. Zakończenie pracy Aby zakończyć pracę z debbugerem należy wyłączyć interfejs dW i uruchomić ISP. Wybieramy Debug -> AVR Dragon options (rys. 13) i naciskamy przycisk Disable debugWIRE (rys. 14) oraz potwierdzamy wybór poleceniem Tak w oknie z rys. 15. Informacja o zakończeniu pracy jest wyświetlona w komunikacie na rys 16. Rys. 13. Rys. 14. Rys. 15. Rys. 16. 7. Zakończenie Debugowanie możemy włączyć w dowolnym momencie pisania programu. Każda zmiana w kodzie wymaga rekompilacji oraz włączenia debbugera przyciskiem Start debbuging z rys. 11. Życzę owocnej pracy ze środowiskiem AVRStudio oraz debbugerem sprzętowym. 6 Cytuj Link do komentarza Share on other sites More sharing options...
jaros56 Maj 31, 2010 Udostępnij Maj 31, 2010 Witam. Mam takie pytanie a mianowicie jak w WinAVR wykorzystać programator AVR Dragon. Pozdrawiam. Cytuj Link do komentarza Share on other sites More sharing options...
Zuk Czerwiec 1, 2010 Autor tematu Udostępnij Czerwiec 1, 2010 Tak samo jak każdy inny obsługiwany przez winAVR Jeżeli chcesz tylko programować a nie debugować to masz dwie ikonki Con oraz AVR. Uwaga te ikonki są na pasku STK500 który niekiedy nie pojawia się automatycznie. Za pierwszym razem naciskasz Con i otwiera się okno wyboru programatora Zaznaczasz i potwierdzasz przyciskiem chyba "Connect..." Otwiera się okno programowania (rys. 7.). W zakładce "main" możesz sprawdzić sygnaturę procesora,jeśli jest ok to możesz w przejść do zakładki "program" i wrzucić swój plik hex do proca. Plik hex mieści się w podkatalogu "default" projektu. Życzę przyjemnej pracy z winAVR i Dragonem... 1 Cytuj Link do komentarza Share on other sites More sharing options...
jaros56 Czerwiec 1, 2010 Udostępnij Czerwiec 1, 2010 Witam Zuk. Dzieki za szybką odpowiedz, ale moie pytanie było odnośnie zastosowania DRAGONA w WinAVR. Niechce cos tworzyć w Win AVR a potem za pomoca AVRStudia programować. Kombinowałem z WinAVR ale jak widze w wyborze paru programatorów z listy niestety niema DRAGONA. I z tąd moje pytanie może jest jakiś sposób aby jednak zmusić program żeby zobaczył ten programator. Pozdrawiam i czekam na ewentualne sugestie. 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
Zuk Czerwiec 4, 2010 Autor tematu Udostępnij Czerwiec 4, 2010 No właśnie z WinAVR już na prawdę bardzo dawno nie pracowałem. Od bardzo długiego czasu używam AVRstudio. Trzeba by poszukać jakiegoś softu programatora obsługującego dragona... 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!