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

Xplained Yourself - debugger AVR i ARM: interfejsy SPI, dWire, UPDI, TPI, SWD

vidmo91 11 Kwi 2019 22:23 1344 3
  • Debugger Xplained Yourself jest kompatybilny z Atmel Studio 7. Bazuje na Atmelowskim debuggerze mEDBG, ale dzięki moim przeróbkom we wsadzie pozwala na programowanie wszystkich mikrokontrolerów z interfejsami SPI, dWire, UPDI, TPI, SWD. Jego "mózgiem" jest ATmega32U4. W wersji maksymalnie okrojonej do uruchomienia debuggera wystarcza 32U4, dwa przyciski, kilka kondensatorów, listwa kołkowa, kwarc i kabel USB (wersja okrojona osiągalna jest przez zmostkowanie tranzystorów i niezamontowania oporników i regulatora).

    Debugger prezentuje się całkiem dobrze (jak na mój gust):

    Xplained Yourself - debugger AVR i ARM: interfejsy SPI, dWire, UPDI, TPI, SWD

    Na płytce jest mały błąd: dioda programowania jest podpisana PWR, a nie PRG i w związku z tą pomyłką nie ma miejsca na diodę PWR, którą przylutowałem do kondensatora. Na szczęście nawet tego nie widać za bardzo.
    Nazwa wzięła się stąd, że sam sobie wytłumaczyłem jak go zrobić na podstawie schematów płytek Xplained zamieszczonych na stronie Michrochipa. W stosunku do oryginalnego schematu poczyniłem drobne różnice. Przede wszystkim dodałem konwerter poziomów, żeby bez kombinowania programować układy zasilanie napięciami 5V, 3,3V, 1,8V itp. Dodatkowo płytka może zasilić programowany układ. Dostępne są dwa napięcia 5V z USB i 3,3V z regulatora AMS1117. Napięcie wyjściowe wybiera się zworką. Można też zworkę zdjąć i podłączyć inne zasilanie, albo też zasilić bezpośrednio układ programowany.
    Debugger ma zaimplementowaną przejściówkę USB <> UART, która też posiada konwerter poziomów napięć. Więc nie dość, że jest wygodna (tylko jeden kabel USB na stole), to jeszcze bezpieczniejsza niż chińczyki, które mają na sztywno wyjście 5V.

    A teraz to na co wszyscy czekali z niecierpliwością:
    Xplained Yourself - debugger AVR i ARM: interfejsy SPI, dWire, UPDI, TPI, SWD

    Co do ograniczeń, to podobno ATmega328 z zegarem 20MHz nie chciała współpracować z debuggerem (nie testowaniem tego osobiście).
    Niestety nie ma programowej możliwości zmiany interfejsu (przynajmniej nie w taki szybki sposób jak np. z Atmel ICE'em). Interfejs trzeba sobie przeprogramować (co jest banalnie proste!). Procedura wygląda następująco:
    1. Zakładam, że 32U4 ma wgrany bootloader DFU (wgrany jest fabrycznie), jeśli nie, to należy go wgrać innym programatorem i ustawić fabryczne fusbity (fusbitów przez bootloader zmieniać się nie da, dlatego programator jest konieczny do aktywacji wyjścia zegarowego).
    2. Naciśnij przyciski HWB i RST.
    3. Puść RST i poczekaj na zgłoszenie się nowego urządzenia w systemie.
    4. Puść HWB.
    5. Za pomocą Atmel Studio wgraj odpowiednie wsady EEPROM i Flash..
    6. Kliknij RST i debuguj.

    Nie będę was naciągać na punkty, bo wszystkie pliki udostępniłem już w projekcie na hackaday.io Są tam wsady do pamięci schemat i PCB z Eagla, gerbery i opis projektu (po angielsku, ale trochę dłuższy niż tutaj).

    Co do moich doświadczeń, to nie miałem problemu z debuggerem. Nie jest tak szybki jak inne programatory, ale debuguje równie dobrze, co one. Nie miałem okazji testowania jeszcze interfejsu TPI. Resztę sprawdziłem m.in z ATmega328P, ATmega162, ATtiny1616, SAMD21 SAMD10. Do zastosowań nie produkcyjnych nie wymagam więcej od debuggera i cieszę się, że mogłem go zrobić nieco około 20% ceny gołego Atmel ICE'a.

    Jeśli ktoś będzie potrzebował, to fusy i locki są następujące:
    fuse register:
    extended: 0xf0
    high: 0xd1
    low: 0x9e
    lock bit register:
    lock bit: 0xff
    A tutaj wrzucam link do bootloadera DFU. Skopiowałem go z Microchipowej strony ATmegi32U4 z zakładki Documents.


    Mam kilka płytek na sprzedaż, chętnych proszę o priva.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #3 12 Kwi 2019 09:27
    tmf
    Moderator Mikrokontrolery Projektowanie

    Piottr242 napisał:
    Wytłumacz proszę, jak działa zaprezentowany konwerter napięć logicznych, skoro na bramki tranzystorów podajesz docelowe napięcie zasilania?
    Nie spotkałem się jeszcze z takim rozwiązaniem, zazwyczaj na bramkę (lub bazę) tranzystora to się sygnał podaje.


    To klasyczny ukłąd konwertera stosowany np. na szynie I2C. Przeanalizuj jak się zachowa tranzystor gdy na źródło dasz stan wysoki równy napięciu na bramce (VGS=0) i kiedy masz stan niski (VGS=Vcc).
    @vidmo91 Super projekt na który pewnie czekało wielu fanów AVR. Możesz opisać modyfikacje we wsadzie? Nowe AS zwykle updatują firmware, więc pewnie pojawi się potrzebva spathowania kolejnych wersji.
    CVo do tych konwerterów - w AtmelICE interfejs można taktować nawet z częstotliwością kilku MHz, czy konwertery na MOSFETach z pasywnym podciąganiem nie są tu nadmiernym ograniczeniem dla szybości? Może warto rozważyć scalone konwertery, które te kilka MHz spokojnie pociągną.

  • #4 12 Kwi 2019 09:55
    vidmo91
    Poziom 10  

    A propos konwerterab:
    Do testowania prototypu wykorzystałem konwerterem na tych tranzystorach i tak już zostało. Chciałem dać coś scalonego, ale jakoś się nie złożyło. W każdym razie na płytce jest mnóstwo miejsca i jeśli ktoś jest zainteresowany zmianą, to droga wolna.
    Puki co nie zauważyłem problemów w programowaniu, wiec nie wiem czy zmiana jest konieczna.

    Co do wsadu, to klucz tkwi w EEPROMie, Flasha nie zmieniałem. Zapisana jest tam nazwa układu, który można programować, producent, SN, I rodzaj interfejsu z którego można korzystać. W oryginalnym wsadzie jest mniej więcej taki easter egg: "Torgeir was here:-)".

    Jeżeli spatchują na tyle skutecznie, że nie będzie się dało programować, zawsze można wrócić do oryginalnych konfiguracji EEPROM, które pozwalają na programowanie jednego układu, albo downgrade'ować AS. Atmel udostępniał narzędzie do naprawy numerów seryjnych, które chyba pozwala na powrót do oryginalnych konfiguracji, ale nie dam za to głowy. Sprawdzę to jeszcze.

    @edit: niestety serial number fix zmienia tylko numer seryjny, a resztę zostawia w spokoju. ]Link[/url]