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

Atxmega256A3BU - programowe wyłączenie JTAG

Paros 17 Kwi 2015 08:36 1044 12
  • #1 17 Kwi 2015 08:36
    Paros
    Poziom 11  

    Witam.

    Potrzebowałem całego portu B w w/w procesorze i chciałem wyłączyć JTAG. Programowałem go przez "FLIP". Na początku programu umieściłem kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Porty uwolniłem, ale potem przeniosłem ten kod na inny procesor (Atxmega128A1), który programuję przez JTAG. Okazało się, że utraciłem w ten sposób dostęp do procesora (nie mam w nim Bootloadera). Myślałem, że wpisanie tego kodu wyłącza JTAG tylko programowo. Czy to możliwe, żebym w ten sposób przestawił Fusebity?
    Jest szansa na dostęp do tego procesora (gdyby się okazało, że nie mam dostępu do PDI)?

    0 12
  • #2 17 Kwi 2015 10:07
    tmf
    Moderator Mikrokontrolery Projektowanie

    Ten kod wyłącza JTAG, ale nie przestawia fusebitów. Jeśli JTAG jest prawidłowo podłączony, to wystarczy wczytać nowy wsad i JTAG zostanie przywrócony. Podłączyłeś RESET MCU z sygnałem RESET JTAG?
    BTW, chyba każde narzędzie dla XMEGA, które ma JTAG, ma też PDI. Więc można tym interfejsem przeprogramować MCU - swoją drogą to PDI jest chyba nawet wygodniejsze.

    0
  • #3 17 Kwi 2015 11:31
    Paros
    Poziom 11  

    Atxmega128A1 jest w układzie "XPLAIN" (starszy niż Xplained, pracuje z AT90USB1287). Sprzętowo niczego nawet nie dotykałem. Zrobiłem to, co robiłem wielokrotnie - kod napisany dla Xmega256 skompilowałem w AS6.2 dla Xmega128.
    Używając Dragona wgrałem ten program (poprzez JTAG) do "128". Teraz, kiedy próbuję coś zrobić z tym prockiem, Dragon widzi poprawnie napięcie procesora, ale jakakolwiek próba odczytu/zapisu (nawet sprawdzenia sygnatury) kończy się komunikatem:
    " An unknown emulator error occurred. Debugger command setParameter failed.
    Unable to enter programming mode. Verify device selection, interface settings, target power and connections to the target device.

    Timestamp: 2015-04-17 10:42:12.285
    Severity: INFO
    ComponentId: 20000
    StatusCode: 0
    "
    Dragon dobry, bo kiedy podłączam go do drugiego złącza JTAG na tej płytce (przeznaczonego dla AT90USB1287) wszystko działa.

    Z PDI może być problem. W tym układzie działa to jak na obrazku:

    Atxmega256A3BU - programowe wyłączenie JTAG

    Muszę dopiero wgryźć się w zasadę działania.


    Trochę poczytałem i wygląda na to, że mam problem. Procesor "żyje", chodzi w nim program wgrany ostatnio. Niestety ma wyłączony JTAG. Do PDI nie mogę się w żaden sposób dostać. Gdzieś na forum ktoś sugerował, że te procesory w "rewizji" do którejś tam nie były programowalne przez PDI z Dragona. W przypadku starszych AVR'ów włożyłbym go do programatora równoległego, nie wiem jak w tym przypadku usunąć wsad (jak pisał TMF fusy są prawdopodobie nie przestawione) - może ktoś ma pomysł? Mogę łączyć się z procesorem via USART - czy to coś da? A może jest jakiś sposób sprzętowy na usunięcie zawartości pamięci tego procka?

    0
  • #4 17 Kwi 2015 16:29
    vania
    Poziom 22  

    Paros napisał:
    Trochę poczytałem i wygląda na to, że mam problem. Procesor "żyje", chodzi w nim program wgrany ostatnio. Niestety ma wyłączony JTAG. Do PDI nie mogę się w żaden sposób dostać. Gdzieś na forum ktoś sugerował, że te procesory w "rewizji" do którejś tam nie były programowalne przez PDI z Dragona. W przypadku starszych AVR'ów włożyłbym go do programatora równoległego, nie wiem jak w tym przypadku usunąć wsad (jak pisał TMF fusy są prawdopodobie nie przestawione) - może ktoś ma pomysł? Mogę łączyć się z procesorem via USART - czy to coś da? A może jest jakiś sposób sprzętowy na usunięcie zawartości pamięci tego procka?

    Ja miałem kiedyś ten zestaw. AT90USB1287 standardowo jest zaprogramowany jako konwerter USB->UART. Przez FILP da się do niego wgrać inny soft. Z tego co pamiętam miałem tam wgrany jakiś klon AVR ISP MKII na bazie projektu LUFA który stanowił programator dla XMEGA. Później przywróciłem oryginalne wsady i zestaw sprzedałem na Allegro. Wszystko chyba brałem stąd XPLAIN

    0
  • #5 17 Kwi 2015 17:14
    tmf
    Moderator Mikrokontrolery Projektowanie

    @Paros Trochę się pogubiłem. Jeśli masz problem z Xplain to wsad możesz przecież zmienić przez FLIP, jak pisze kolego wyżej. Jeśli to osobny MCU w innym układzie to masz dostęp do PDI, więc też nie widzę problemu. Więc gdzie jest haczyk?

    0
  • #6 17 Kwi 2015 17:50
    vania
    Poziom 22  

    tmf napisał:
    @Paros Trochę się pogubiłem. Jeśli masz problem z Xplain to wsad możesz przecież zmienić przez FLIP, jak pisze kolego wyżej. Jeśli to osobny MCU w innym układzie to masz dostęp do PDI, więc też nie widzę problemu. Więc gdzie jest haczyk?


    W XPLAIN (poprzednik XPLAINED) jest ATXmega128A1 bez USB. Jest dodatkowy drugi procesor (AT90USB1287) robiący za konwerter USB->UART i miał też być programatorem XMEGA, PDI XMEGA jest właśnie podłączone do niego.
    Trochę dziwi mnie to że nie da się zaprogramować przez JTAG, na złączu JTAG są wyprowadzone wszystkie sygnały łącznie z RST.

    0
  • #7 17 Kwi 2015 20:12
    tmf
    Moderator Mikrokontrolery Projektowanie

    @vania Wiem, ale właśnie ten dodatkowy scalak programuje przez PDI, a on zablokował softwarowo JTAGA, więc nie widzę problemu - przez FLIP ciągle powinien móc programować. Wystarczy więc wczytać nowy soft. Swoją drogą JTAG też resetuje procek, więc program nie powinien się wykonać i JTAGA zablokować...

    0
  • #8 18 Kwi 2015 08:26
    Paros
    Poziom 11  

    "...Swoją drogą JTAG też resetuje procek, więc program nie powinien się wykonać i JTAGA zablokować..."

    to mnie zastanawia najbardziej - jeśli dobrze to rozumiem, próbując odczytać lub zweryfikować pamięć procesora, Dragon najpierw go resetuje (i tak jest - widzę to po diodach w układzie) czyli nie dopuszcza do wykonania się kodu blokującego JTAG. Jest w układzie pin oznaczony jako "DATA" i połączony fizycznie z pinem PDI
    procesora. Niestety próba programowania przez PDI daje takie same efekty jak przez JTAG. Atxmega128 nie ma w tym układzie bootloadera, nie mam więc gdzie zastosować FLIP'a.

    AT90USB1287 ma wyprowadzony JTAG i mogę go tym dragonem programować (przy okazji wiem, że programator jest sprawny), mogę go też programować FLIP'em. Ale co to da? Ten procesor jest tylko mostem między USB komputera a USART'em Atxmegi128. Jak pisał kolega, można gdzieś szukać wsadu, który "przerobi" AT90... na programator. Może popróbuję w tym kierunku...

    0
  • #9 18 Kwi 2015 12:19
    vania
    Poziom 22  

    Paros napisał:
    "...Swoją drogą JTAG też resetuje procek, więc program nie powinien się wykonać i JTAGA zablokować..."

    Spróbuj jeszcze zmienić JTAG CLOCK

    0
  • #10 18 Kwi 2015 12:46
    Paros
    Poziom 11  

    vania napisał:

    Spróbuj jeszcze zmienić JTAG CLOCK


    gdzie to się zmienia (mam Dragona i AS6)? Widziałem gdzieś opisy, ale chyba dla AVR One.

    Czy port mógł ulec uszkodzeniu fizycznemu? Piny skonfigurowałem jako wejścia z "puldownem" - mierzę na nim napięcia z czujników Sharp.

    0
  • Pomocny post
    #11 18 Kwi 2015 13:17
    vania
    Poziom 22  

    Paros napisał:
    vania napisał:

    Spróbuj jeszcze zmienić JTAG CLOCK


    gdzie to się zmienia (mam Dragona i AS6)? Widziałem gdzieś opisy, ale chyba dla AVR One.

    W głównym oknie programowania "Interface settings" nie ma? Ja mam Atmel-ICE tam jest. Nie pamiętam jak w Dragonie było (kolega kiedyś miał).
    Atxmega256A3BU - programowe wyłączenie JTAG

    0
  • #12 21 Kwi 2015 12:18
    Paros
    Poziom 11  

    Zadziałało w ten sposób:
    zassałem z podanej przez Ciebie strony wsady .hex (dla wersji z AVRDUDE - dla tej drugiej nie chciało działać), zaprogramowałem nim Atmegę90. Atmel Studio 6,2 zobaczył programator AVR ISP MKII ale wciąż nie chciał zobaczyć Xmegi po PDI. Otworzyłem poprzednią wersję AS i w niej udało się wyczyścić zawartość Xmega po PDI.

    Teraz Xmega poddaje się już "obróbce" Dragonem, ale co ciekawe, wciąż tylko po JTAG - PDI nie działa. Na schemacie "XPLAIN" pin DATA Xmegi podłączony jest do pinów RX i TX At90 - może to bocznikuje PDI.

    Pojawił się pewien kłopot w postaci zakłóceń transmisji USART z Xmega do USB komputera via AT90 , ale to nie było tematem tego wątku, więc pewnie temat do zamknięcia. Dziękuję za pomoc.

    0
  • #13 21 Kwi 2015 12:37
    vania
    Poziom 22  

    Paros napisał:
    Atmel Studio 6,2 zobaczył programator AVR ISP MKII ale wciąż nie chciał zobaczyć Xmegi po PDI. Otworzyłem poprzednią wersję AS i w niej udało się wyczyścić zawartość Xmega po PDI.
    Te wsady są dość stare od tego czasu dla AtmelStudio i AVR ISP MK II było pewnie kilka aktualizacji.
    Paros napisał:
    Teraz Xmega poddaje się już "obróbce" Dragonem, ale co ciekawe, wciąż tylko po JTAG - PDI nie działa. Na schemacie "XPLAIN" pin DATA Xmegi podłączony jest do pinów RX i TX At90 - może to bocznikuje PDI.
    To raczej problem Dragona: "Note: Atmel AVR XMEGA PDI mode on AVR Dragon does NOT work for the following XMEGA devices: A3/D3 - revisions B, C and E or A1 (up to revision K)."

    0