Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mikrokontroler programowanie STM32 wiggler

19 Lut 2007 17:14 6944 25
  • Poziom 28  
    Potrzebuję pomocy z AT91SAM7S.

    Chcę połączyć się z mikrokontrolerem AT91SAM7S64 poprzez JTAG własnej konstrukcji. Schemat klonu Wigglera w pliku jtagwiggler (na pokładzie 74HC244). Schemat płyty eksperymentalnej (fragment, nie ma zasilacza, obwodów we/wy) w pliku ATsam7. Połącznie pomiędzy JTAG a płytą jest takie:

    JTAG(złącze X2) SAM7(złącze JTAG)

    Vcc - 8
    GND - 6
    TDI - 5
    TMS - 4
    TCK - 3
    TDO - 2
    nTRST - 1

    Oprócz JTAG-a podaję tylko zasilanie. Bez problemu pojawia się Vdd CORE.

    Oprogramowanie to Rowley CrossWorks for ARM ver 1.5 posadzone na WXPpro + SP2. Podłączam JTAG-a(fabryczny LPT, nie jakieś dziwne przejściówki z USB), podpinam zasilanie (na JP2 mam równiutkie 3V3, stabilizowane, wydajność do ok. 800mA, sprawdzone miernikiem i oscyloskopem, czy nie przysiada w którymś momencie).

    Oprogramowanie wywala błąd :
    "Cannot identify target. Check JTAG connections and the target is powered".

    Próbowałem wybierać "Macroigor Wiggler (20Pin)", "Macroigor Wiggler (14Pin), a nawet Seggler J-Link i nic. Zakładałem zworki ERASE (na kilka sekund), JTAGSEL, RES, RESE w różnych kombinacjach. Nic to niestety nie dało. :-/ Kwarc i okolice, PLL - wartości ze schematu fabrycznego zestawu uruchomieniowego bodajże Propoxu. Nóżki na złączach AD, JP1, JP3 - pozostawione wolne, cały port we/wy "wisi w powietrzu". Dwa razy sprawdzałem miernikiem na zwarcie i przejście - nic nie znalazłem. Mam pewne wątpliwości co do sygnału nTRST JTAG-a (czy dobrze podłączam?).

    Gdzie robię błąd? Może jakiś opis jak to prawidłowo, po kolei zrobić? Co na którą nóżkę podać? Czy Wiggler ze schematu obsłuży AT91SAM7Sxx? Może coś przeoczyłem, jak powinienem ustawić zworki? Może mam coś nie tak z płytą eksperymentalną?


    Poratujcie, bo osiwieję...

    Pozdrawiam
  • Poziom 23  
    Nie używam tego środowiska, ale przychodzą mi na myśl dwie rzeczy:

    1. Masz niezainstalowany sterownik Wigglera. Zainstaluj OCD Commandera
    http://www.macraigor.com/ocd_cmd.htm
    Będziesz mógł sprawdzić, czy w tej aplikacji Twój układ jest widoczny, powinien być wykryty automatycznie po starcie aplikacji.
    Trzeba zrobić tylko proste ustawienia przy pierwszym uruchomieniu:
    Target Processor:
    ARM
    ARM7xxx
    OCD Interface Device:
    Wiggler

    2. LPT nie może być ustawiony na trybie ECP.
    Jak pisze Macraigor w tym trybie Wiggler może nie działać.
  • Poziom 28  
    Nie wiedziałem, że potrzebny jest sterownik?
    W CrossWorks mam na dzień dobry pole wyboru Wiggler 14 / 20 pin. Spróbuję w każdym razie. Zobaczę też do biosu odnośnie ECP.

    A zworkologia?
    Co mikrokontroler potrzebuje na pinach?
    Czy wystarczy jak podepnę TDI, TMS, TCK, TDO do odpowiadających nóżek, nTRST do nóżki nRST mikrokontrolera i do tego zasilanie? Pamiętam oczywiście o podciągnięciu do zasilania nóżki JTAGSEL. Jak wygląda sprawa nóżki TEST, ERASE (ta jak dobrze rozumiem ściągnięta do masy?).
  • Poziom 27  
    Reset nawet nie jest wymagany przy programowaniu za pomoca Jtaga. Zakladam ze sprawdzales czy wogole procesor dziala przez wgranie do niego czegos za pomoca bootloadera SAM-BA ?

    Ja osobiscie meczylem sie z Jtagiem Wiglera na swoim kompie przez dlugi czas i nie udalo mi sie skomunikowac z prockiem. Nie wiem czego byla to wina, gdyz np na innych kompach chodzil on bez problemow. Port LPT mialem sprawny, bo programowalem z niego AVRy.
    Na pewno mniej problemow sprawia Jtag oparty o uklad FTDI podlaczany do USB.
  • Poziom 23  
    adamusx napisał:
    Ja osobiscie meczylem sie z Jtagiem Wiglera na swoim kompie przez dlugi czas i nie udalo mi sie skomunikowac z prockiem.
    Używam czasem Wigglera jako programatora zastępczego i nigdy nie miałem z nim problemów. Jego minus (chociaż przy projektach amatorskich nie taki duży) to mniejsza szybkość działania niż podobne urządzenia komercyjne.

    Warto go przetestować z softem twentyone'a - H-JTAG
    http://www.hjtag.com/index.html
    Ciekaw aplikacja. W jej skład wchodzi debugger i programator.
    Działa z większością popularnych procków (oczywiście ARM :)
  • Poziom 28  
    Nie, nie sprawdzałem po USB. Docelowo chcę używać JTAG, także nierówną walkę zacząłem właśnie od niego.

    A pinologia w trybie obsługi JTAG? Macie coś na ten temat?

    pzdr i dzięki za wsparcie. :-)
  • Poziom 28  
    Dzięki. Sprawdzę jak wrócę z pracki.
    Z LPT, to o ile dobrze pamiętam miałem ściągnięte do masy bity 0...8 na JTAG 20 pin, jak dałem na JTAG 14 pin to ściągał tylko 0..4 i 6..8, ale sprawdzę w jakim trybie "lata" port.









    Latałem oscyloskopem po TMS, TCK, TDI, TDO - TMS, TCK, TDI - są, one pochodzą z JTAG-a. ARM powinien odpowiedzieć po TDO. Najlepszy numer, że sygnał tam się pojawia. Odpiąłem linię TDO z JTAG-a (u mnie tak się da :-) ), pozostawiając 12k pullup. Sygnał z mikrokontrolera się pojawia. Procek chce ze mną rozmawiać. Próbowałem CrossWorks 1.5, 1.6 - kicha. LPT próbowałem ustawiać w tryb EPP i nadal nic. HJTAG,OCD Commander nie widzą mikrokontrolera. :-/ Zmienił się za to komunikat z CrossWorksa - teraz mam już "Target not responding". To chyba troszkę lepiej, nie? ;-) Próbowałem również manipulować parametrem "JTAG Clock Divider". Domyślnie było 1, ja dałem najpierw 128, później 255. Dało to tyle, że ładniej widać sygneły na oscyloskopie. Próbowałem również zmieniać nastawy ARM7DI / ARM7TDI. Nadal cisza... A tak apropos to AT91SAM7S64 ma rdzeń ARM7TDMI, jaka jest różnica między TDI, a TDMI? Może z software coś mam nie tak? W helpie doczytałem się tylko, że trzeba jak najkrótsze kable w JTAG-u. Mój ma jakieś 30cm - czy to jest sporo w porównaniu do fabrycznych JTAG-ów? Aha, scalak dałem 74HC244, odsprzęgnąłem 2µ2 + 220n, więc chyba raczej nic się nie zakłuca... Jeszcze raz sprawdziłem połączenia JTAG - ARM i wyglądają dobrze. Nie pomyliłem się w sygnałach. Jestem załamany. :-/ A może jakać ciekawa propozycja oprogramowania-kombajnu pod XP-ka? Może tu coś nie gra?
  • Poziom 27  
    Ja mialem podobny problem z Jtagiem Wigglera jak juz pisalem wczesniej. Ale problem wystepowal tylko na moim komputerze :>
  • Poziom 23  
    TDMI ma dodatkowo mnożenie sprzętowe.

    Ostatnio mam przygodę z Philipsami i są też "not responding" i tak myślę, że najprawdopodobniej ESD je trafiło.
  • Poziom 28  
    Przed ESD zabezpieczam się jak tylko mogę. Na sobie tylko bawełna, opaska 2M na ręku, grot lutownicy uziemiony, mikrokontrolery przechowywane w fabrycznych pudełkach ESD wypełnionych przewodzącą gąbką.

    Jeszcze takie pytanko, bo być może robię jakiś podstawowy błąd. Znalazłem na stronce Rowley'a zbiór plików zatytuowany "CPU Support Packages". Czy przypadkiem nie muszę mieć tego zainstalowanego? Jest tam plik z moim SAM7... Może, jak to mówią dałem d*** przy instalacji oprogramowania? Nie wiem jak dla µP, ale np. do Simatic S7 co nowe CPU, to nowe pliki deklaracji HW. Może warto podokładać te pliczki?
  • Poziom 27  
    Ja niczego nie uziemniam i procka jeszcze nie udalo mi sie uszkodzic:)
  • Poziom 19  
    polecam openocd, obecnie jest juz w takim stadium rozwoju ze bez problemu programuje nim SAMy i LPC. Sprobuj, moze nim sie uda nawiazac komunikacje.
    http://openocd.berlios.de/web/

    U mnie TST i ERASE wisza w powietrzu, JTAGSEL NIE MOZE byc podpiety do VCC (u mnie wisi w powietrzu bo go odlaczylem zeby dzialalo, funkcja uruchamiana przez ten pin to nie jest to o to nam chodzi)
  • Poziom 28  
    Nie może być na Vcc? Ja cały czas opieram się na tym, że musi! Może tutaj jest mój błąd?
    Sprawdzę, dzięki za podpowiedź.
    A co on robi? Od czego on tak naprawdę jest?

    Znalazłem tylko takie info, że wysoki stan uruchamia "boundary scan" - skanowanie graniczne? O co tu idzie?
  • Poziom 19  
    kleki: z tego co wiem, boundary scan to jest cos co umozliwia bardziej zaawansowane badanie pracy ukladu w trakcie wykonywania programu ale do tego chyba potrzebne jest specjalne oprogramowanie (i sprzet?). W kazdym razie programowanie i debugowanie programu przy pomocy jtaga jest wykonywane przy JTAGSEL nie podpietym do VCC.

    Z tego co pamietam to przy podpietym JTAGSEL coprawda udalo mi sie nazwiazac jakies polaczenie z jtagiem procesora przez OpenOCD ale nie moglem ani zapisac flasha ani wykonywac innych komend dostepnych w OpenOCD. W kazdym razie mam teraz przed soba uklad z niepodpietym JTAGSEL i moge go bez problemu programowac a i debugowanie tez jako tako dziala (niestety nieporownywalnie gorzej od AVRStudio dla AVR).
  • Poziom 28  
    OK. Sprawdzę w ten sposób. Jeszcze takie pytanko - czy działasz coś może w Rowley CrossWorks for ARM? Może robię coś nie tak... :oops: Przydałoby się tak krok po kroku jak "pogadać" z SAM7, może tutaj tkwi problem?

    Otwieram CrossWroksa, podpinam mikrokontroler, JTAG, podaję zasilanie, resetuję Atmela niskim stanem na nóżce nRST (39). Wtedy wciskam "connect". Mam wtedy "target not responding". Próbowałem na różnych nastawach.
  • Poziom 19  
    Korzystam ze srodowiska GNUArm+OpenOCD+wiggler(testowalem tania wersje na port rownolegly i moj klon amontec jtagkey'a na ft2232c - obie sprawuja sie znakomicie przy czym nie widze zeby ten na USB byl lepszy czy szybszy).

    Zdaje sie ze teraz bardzo popularny jest toolchain z http://www.yagarto.de/ zawierajacy w sobie wszystko co najlepsze z narzedzi opensource, w wersji do bezposredniej instalacji. Maja miedzy innymi bardzo fajna birnarke najnowszego openocd ktora dziala od razu.
    Zeby zrobic testy komunikacji z prockiem wystarczy ze to sciagniesz i zainstalujesz, troche ponad 2 MB ;].

    Naprawde polecam opensource ;]. Rowley dla mnie za drogi a slyszalem ze bez rewelacji.

    Jezeli chodzi o programator to uzywam: http://www.fh-augsburg.de/~hhoegl/proj/openocd/img/wiggler.jpg
    przy czym u mnie obie bazy tranzystorow podpiete sa do D0 (inaczej nie chcialo dzialac - poprostu mam 1 reset ale Atmel i LPC i tak wiecej nie potrzebuja).
    A jezeli chodzi o schemat polaczen jtaga od strony procesora to chyba ten ze strony Propoxu mozna uznac za odpowiedni: http://www.propox.com/download/docs/EVBsam7s_rev2_sch.pdf
  • Poziom 2  
    Cześć,
    napiszę jak to jest u mnie.
    Czyli mam JTAG na USB usbScarab z Kristech + płytę bazową z Propox + AT91SAM7S256 + Eclipse i Open OCD z Yagarto. Trochę się namęczyłem, zanim OpenOCD "dobrał" się do Atmel. Na pewno powodem był nadmiar nowości ( CPU, JTAG, jakieś OCD :-) ). Konfiguracja OpenOCD u mnie to (fragment):

    reset_config srst_only
    jtag_device 4 0x1 0xf 0xe
    jtag_nsrst_delay 50
    target arm7tdmi little reset_halt 0 arm7tdmi-s_r4
    flash bank at91sam7 0 0 0 0 0

    I działa ! Jak na darmowe środowisko to całkiem nieźle. Musiałem wybrać
    JTAG na USB bo mój laptop nie ma LPT a poza tym rozwiązania na porcie jakoś do mnie nie przemawiają (wiem, wiem, USB ma swoje ograniczenia).
    Może u Ciebie jest jakaś kwestia z sygnałami związanymi z zerowaniem na styku CPU-JTAG ? Dodam, że przewód łączący JTAG z płytą ma maks. 10 cm długości.

    Pozdrawiam
    Tomasz
  • Poziom 28  
    Uff...
    JTAG chyba zapracował. Długo nie byłem na forum (urlopik, hehe). AT91SAM7S64 przedstawia mi się ID 3F0F0F0F - to dobrze? Tak powinno być?

    Mam jednak problem z zaprogramowaniem mikrokontrolera. Daję "download file", wybieram format .elf (taki mam po skompilowaniu, jeszcze nie wiem, gdzie się to zmienia). "Downloaduję", ale przy weryfikacji mam np. A0 00 00 00 A0 00 00 00 itd. Zmienia mi się sam początek (jest A0 lub coś innego), ładuję ten sam plik. To, co dostaję spowrotem nie zależy od "JTAG clock divider". Miał ktoś coś takiego? A może ktoś miał styczność z CrossWorks i mógłby rozpisać krok po kroku, jak dla dziecka co wciska, co ustawia itd. Dowiedziałbym się w ten sposób, gdzie robię błąd. :-)
    Pozdrawiam
  • Poziom 27  
    Procka ladujesz plikiem hex albo bin a nie elf.
  • Poziom 28  
    Czyli jak przy 8 bitowych,to by pasowało.Pytanie tylko,jak zmusić CrossWorksa,żeby utworzył plik szesnastkowy?A ID,które mi się wyœwietliło pasuje do mikrokontrolera?
    Pozdrawiam

    Wyslano z komorki wap.elektroda.pl
  • Poziom 27  
    Jak ID nie pojawia Ci sie same 0000 albo FFFF to dobrze, to znaczy ze z procesorem jest komunikacja:) Ja ustawiam czy ma to byc plik hex czy bin w makefile, ale Cross studio chyba sam generuje plik makefile i pewnie nie ma za bardzo do niego dostepu. Ale wydaje mi sie ze po kompilacji powinien znalesc sie w katalogu z projektem plik hex lub bin!!!!
  • Poziom 19  
    kleki napisał:
    Uff...
    JTAG chyba zapracował. Długo nie byłem na forum (urlopik, :)). AT91SAM7S64 przedstawia mi się ID 3F0F0F0F - to dobrze? Tak powinno być?


    Jest OK. To jest poprawny ID dla SAM7S.
  • Poziom 28  
    Oki. Uspokoiłem się troszkę.
    Nadal mam jednak problem z uzyskaniem pliku .bin lub .hex.
    Miał ktoś może styczność z CrossWorks? Może jakaś solucja, co i jak... :-)
    Może przerzucić się na IAR-a?
    Troszkę się boję tych darmowych narzędzi, wolałbym pobawić się jakimś kombajnem. Będzie troszkę łatwiej, prawda?
  • Poziom 19  
    Nie znam CrossWorksa, kiedyś miałem wersję demo ale ona działa tylko 1 miesiąc.

    Nie bój się darmowych narzedzi, bo nie ma czego :). Z tego co piszesz chyba prędzej byś uzyskał te pliki wynikowe właśnie przy pomocy darmowych narzędzi niż CrossWorksa. Pobierz pakiet Yagarto www.yagarto.de. Kilka przykładów dla SAM7 z Winarma i do dzieła.
    Krótki opis Yagarto znajdziesz też w manualu do usbScarab JTAGa firmy Kristech.
  • Poziom 28  
    Wszystko już wiem. :-)
    Zadziałało. Dzięki za podpowiedzi.
    Udało się zaprogramować mikrokontrolerek. Łatwe to nie było, ale wyszło. Na razie mrugam, więc ten temat jest już zamknięty.
    Teraz zaczną się wątki odnośnie programowania ;-)




    Aha, jakby ktoś kiedyś jeszcze tu zajżał w poszukiwaniu rozwiązania swojego problemu, to na schemacie JTAG-a jest babok. R4 powinno być podpięte pod n.3 IC1B(Y4), a nie jek to jest narysowane pod n.5 IC1B(Y3) - taki "czeski" błąd. Ja pokapowałem się dopiero po poskładaniu JTAG, więc mam zwarte n.15 z n.17, oraz n. 5 z n.3 - u mnie tak zadziałało.