logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AT91SAM7S64 – brak połączenia JTAG Wiggler (74HC244), CrossWorks ARM 1.5, LPT

kleki 19 Lut 2007 17:14 7349 25
REKLAMA
  • #1 3591099
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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
    Załączniki:
    • AT91SAM7S64 – brak połączenia JTAG Wiggler (74HC244), CrossWorks ARM 1.5, LPT jtagwiggler.jpg (95.82 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • ATsam7.jpg (352.24 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 3591549
    megao
    Poziom 25  
    Posty: 691
    Pomógł: 66
    Ocena: 91
    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ć.
  • REKLAMA
  • #3 3591734
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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?).
  • #4 3591986
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    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.
  • #5 3592111
    megao
    Poziom 25  
    Posty: 691
    Pomógł: 66
    Ocena: 91
    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 :)
  • #6 3592261
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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. :-)
  • REKLAMA
  • #8 3592509
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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?
  • #9 3605096
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Ja mialem podobny problem z Jtagiem Wigglera jak juz pisalem wczesniej. Ale problem wystepowal tylko na moim komputerze :>
  • #11 3605338
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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?
  • #12 3606350
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Ja niczego nie uziemniam i procka jeszcze nie udalo mi sie uszkodzic:)
  • #13 3606852
    _Matik_
    Poziom 19  
    Posty: 390
    Pomógł: 25
    Ocena: 7
    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)
  • #14 3607399
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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?
  • REKLAMA
  • #15 3607713
    _Matik_
    Poziom 19  
    Posty: 390
    Pomógł: 25
    Ocena: 7
    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).
  • #16 3607849
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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.
  • #17 3608234
    _Matik_
    Poziom 19  
    Posty: 390
    Pomógł: 25
    Ocena: 7
    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
  • #18 3621804
    tomaszk-poz
    Poziom 2  
    Posty: 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
  • #19 3656630
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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
  • #20 3656670
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Procka ladujesz plikiem hex albo bin a nie elf.
  • #21 3657126
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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
  • #22 3657221
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    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!!!!
  • #23 3658130
    Krisgorn
    Poziom 19  
    Posty: 267
    Pomógł: 33
    Ocena: 10
    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.
  • #24 3659238
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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?
  • #25 3659308
    Krisgorn
    Poziom 19  
    Posty: 267
    Pomógł: 33
    Ocena: 10
    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.
  • #26 3662299
    kleki
    Poziom 28  
    Posty: 1350
    Pomógł: 95
    Ocena: 142
    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.

Podsumowanie tematu

✨ Dyskusja dotyczy problemów z nawiązaniem połączenia JTAG pomiędzy mikrokontrolerem AT91SAM7S64 a klonem programatora Wiggler (opartym na układzie 74HC244) podłączonym do portu LPT, używając oprogramowania Rowley CrossWorks for ARM w wersji 1.5 na Windows XP. Użytkownik zgłaszał błąd "Cannot identify target" oraz "Target not responding". Wskazano konieczność instalacji sterownika Wigglera (OCD Commander) oraz wyłączenia trybu ECP portu LPT, który może powodować problemy z komunikacją. Omówiono prawidłową pinologię JTAG, w tym podłączenie sygnałów TDI, TMS, TCK, TDO, nTRST oraz zasilania, a także zwrócono uwagę, że pin JTAGSEL nie powinien być podłączony do Vcc, gdyż może to uniemożliwić programowanie i debugowanie. Zalecano testowanie z alternatywnym oprogramowaniem, np. OpenOCD lub H-JTAG, które lepiej wspierają AT91SAM7S. Użytkownik potwierdził wykrycie poprawnego ID mikrokontrolera (3F0F0F0F), co świadczy o nawiązaniu komunikacji. Problem z programowaniem wynikał z używania pliku ELF zamiast pliku HEX lub BIN, które są wymagane do wgrywania do pamięci mikrokontrolera. Wskazano, że CrossWorks generuje pliki wynikowe w katalogu projektu, a w razie problemów warto rozważyć darmowy toolchain Yagarto z OpenOCD. Ostatecznie użytkownik potwierdził sukces w programowaniu po poprawnym wygenerowaniu pliku HEX i skorygowaniu błędu w schemacie JTAG (błędne podłączenie rezystora R4). Długość przewodu JTAG powinna być krótka (ok. 10 cm), a sygnały resetu i zasilania stabilne. Wskazano, że rozwiązania USB (np. FTDI) mogą być bardziej niezawodne niż LPT.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA