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

Opensuse, Eclipse, AVR. - Konfiguracja programatora?

konkretny25 25 Paź 2016 11:52 2883 30
  • #1 16017139
    konkretny25
    Poziom 11  
    Witam kolegów.

    Wstęp:
    Kilka dni temu musiałem niestety wymienić dysk twardy w swoim laptopie co wiązało się z koniecznością instalacji nowego systemu operacyjnego. Dysk wymieniłem, system zainstalowałem. Jako że od dawna korzystam z Opensuse to też i taki system zainstalowałem. Stary był coś 12.1, nowy zainstalowałem ostatni dostępny jeszcze w wersji 32-bit, czyli Opensuse 13.2.

    Następnie chciałem z powrotem mieć Eclipse do programowania mikrokontrolerów AVR. Pomyslałem, iż instalacja starego Eclipse Indigo mija się z celem, w związku z tym zainstalowałem Eclipse IDE for C/C++ Developers, Version: Neon.1a Release (4.6.1). Build id: 20161007-1200. Dodatkowo oczywiście AVR Eclipse Plugin 2.3.4, aktualizacja avr-gcc, cross-avr-binutils i t.d. Następnie zaimportowałem Eclipse Workspace ze starego Indigo ze wszystkimi swoimi projektami.

    Sprzęt: mam płytkę ewaluacyjną Propox EVBavr04 z procesorem AtMega8 i do niej programator ISP cable III. Sprzęt ten jest wielokrotnie przeze mnie sprawdzony i działa bez zarzutu.

    Problem: próba naciśniecia przycisku "Load from MCU" w ustawieniach projektu, "AVR" -> "Target Hardware" kończy się zawsze następująco:

    "Could not understand the output from AVRDude.
    - Either avrdude returned an error message that is not covered by AVR Eclipse Plugin
    - or you have newer AVRDude version with a changed output format.

    In either case check the AVRDude return message below and contact the AVR Eclipse Plugin maintainers to have this fixed.
    https://sourceforge.net/projects/avr-eclipse

    Reason:
    Could not find a valid Signature in the avrdude output."

    I do tego następujący komentarz z konsoli Eclipse:

    "Launching /usr/bin/avrdude -cstk500v2 -P/dev/ttyUSB0 -pm16
    Output:

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.07s

    avrdude: Device signature = 0x1e9307 (probably m8)
    avrdude: Expected signature for ATmega16 is 1E 94 03
    Double check chip, or use -F to override this check.

    avrdude done. Thank you.

    avrdude finished


    Launching /usr/bin/avrdude -cstk500v2 -P/dev/ttyUSB0 -px128a3
    Output:

    avrdude: stk500v2_program_enable(): program enable instruction not defined for part "ATxmega128A3"
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.


    avrdude done. Thank you.

    avrdude finished"

    Tak, wiem, szanowny Pani Murku, iż ten nieszczęsny rc=-1 był już wielokrotnie poruszany i na Pana blogu jest nawet specjalny filmik ten błąd omawiający. Filmik widziałem, opcja -B 8 nie pomaga w moim przypadku. Eclipse reaguje bez zmian.
    W mikrokontrolerze płyty ewaluacyjnej jest mój jakiś stary program testowy, czyli fuse bits są ustawione wcześniej. Dziwne, dlaczego Eclipse oczekuje AtMega16, kiedy na płytce jest AtMega8
    Do linij interfejsu ISP nic nie jest podłączone poza wtyczką programatora. Dodam jeszcze, że przy założeniu starego dysku twardego ze starym Opensuse i Eclipse wszystko działa.
    Poderzewam więc iż gdzieś musiałem zrobić jakiś czeski błąd lub w nowym Eclpse/ AVRdude czy czymkolwiek innym jest jakaś nieznana mi opcja konfuguracyjna.
    Po instalacji Eclipse i dodatków sprawdziłem, iż programator jest przypisywany do grupy dialout i siebie do tej grupy dodałem.

    Na poszukiwania problemu straciłem już dwa dni (dziś trzeci) i nic. Proszę o pomoc guru od linuxa (w szczególności Opensuse 13.2), guru od Eclipse i wszystkich innych guru, bogów i szamanów, ponieważ nie mam już zielonego pojęcia co to może być. Głowa mi boli i jestem bliski wyrzucenia (a może wyrzucenia się?) wszystkiego przez okno.
  • #2 16017163
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16017240
    konkretny25
    Poziom 11  
    Nie przypominam sobie, by gdziekolwiek w projekcie Eclipse był specjalnie definiowany typ procesora. Co masz na myśli? Gdzie wg ciebie jest wybrana zła opcja?
  • #4 16017248
    tmf
    VIP Zasłużony dla elektroda
    Nie znam eclipse, ale w projekcie gdzieś musi być zdefiniowany typ procesora i najwyraźinej masz go zdefiniowany źle. A musi być, bo jest to kluczowa informacja przede wszystkim dla kompilatora. Pewnie jest to gdzieś w opcjach projektu, zapewne tworząc nowy projekt, na jakimś etapie eclipse umożliwia wybór typu MCU.
  • #5 16017296
    Konto nie istnieje
    Konto nie istnieje  
  • #6 16017312
    konkretny25
    Poziom 11  
    Przed chwilą spróbowałem załadować na płytkę jeden z moich starych projektów. Jako że wszystkie one było na AtMega8 w jednakowej konfiguracji (mam na myśli CLOCK i FUSE). Zmieniłem tylko program, by mikrokontroler zapalał led.
    Program ładuje się bez problemów, diody migają, mogę program dowolnie zmieniać. Kompilacja przebiega bez warningów i erroró.
    Ale "Load from MCU" nie działa.

    Piotrus, zgadza się, w projekcie mam zdefiniowany ręcznie AtMega8 i 8MHz, ale dlaczego nie działa Load from MCU?
  • #7 16017329
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Już Ci to 2 osoby napisały i ja napiszę Ci to samo (choć nie znam się na AVR). Masz źle wybrany układ w konfiguracji dla AVRdude. Masz Atmegę 8, a w konfiguracji masz wybraną Atmegę 16.

    konkretny25 napisał:
    avrdude: Device signature = 0x1e9307 (probably m8)
    avrdude: Expected signature for ATmega16 is 1E 94 03
    Double check chip, or use -F to override this check.

    Odczytana sygnatura sugeruje Atmegę 8 (zgadza się). Wybrany układ - Atmega 16 - ma inną. AVRdude wychodzi z błędem.

    Dodano po 50 [sekundy]:

    konkretny25 napisał:
    Nie wydaje mi się, by wypowiedzi osób nie znających się na Eclipse wnosiły coś rzeczowego do tematu, z całym szacunkiem.

    Z całym szacunkiem - wydaje Ci się. Nie trzeba się znać na Eclipse, żeby potrafić zinterpretować błąd który zwraca program.

    Dodano po 2 [minuty]:

    konkretny25 napisał:
    opcja -B 8 nie pomaga w moim przypadku.

    Pewnie dlatego, że jedyna opcja której tu brakuje to "-pm8" zamiast "-p<cokolwiek>" które tam masz.

    P.S. Nie znam się na AVR, więc możesz z pełnym szacunkiem zignorować to co napisałem (;
  • #8 16017370
    Konto nie istnieje
    Konto nie istnieje  
  • #9 16017378
    konkretny25
    Poziom 11  
    Zaczyna sie...

    Dobrze, pisać może każdy. Mam jedynie nadzieje, iż będzie to wypowiedź w temacie i wyczerpująca. Poniżej jest ekran mojej konfiguracji. Jak powiadam, ręcznie mam zdefiniowaną AtMega8 i prawidłowy CLOCK. Co umożliwia załadowanie programu do procesora, jak pisałem wcześniej.

    Lecz nie rozumiem dlaczego nie działa "Load from MCU". Być może się mylę, ale ta operacja ma odczytać jaki procesor jest fizycznie podpięty do programatora. Co ma do rzeczy jaki procesor jest zdefiniowany w projekcie? Odczyt nie działa. Chciał bym tą opcje mieć działającą dlatego iż nie zawsze odczyt typu mikrokontrolera jest możliwy. Opensuse, Eclipse, AVR. - Konfiguracja programatora?

    Freddie, daruj mi prosze swoją ironie. Opcja -pm8 nie spowodowała żadnych zmian, w złym miejscu ją wpisuje czy co. Skoro już znalazłeś czas na to by się wypowiedzieć w tym poscie to może zniżysz się do tego by wytłumaczyć co ta opcja ma spowodować i gdzie ją mam wpisać by na pewno było dobrze.
  • #10 16017389
    Freddie Chopin
    Specjalista - Mikrokontrolery
    konkretny25 napisał:
    Freddie, daruj mi prosze swoją ironie. Opcja -pm8 nie spowodowała żadnych zmian, w złym miejscu ją wpisuje czy co. Skoro już znalazłeś czas na to by się wypowiedzieć w tym poscie to może zniżysz się do tego by wytłumaczyć co ta opcja ma spowodować i gdzie ją mam wpisać by na pewno było dobrze.

    Zacznij więc od pokazania tego gdzie ją wpisałeś i jaki teraz dało błąd. Ja np. nie wiem gdzie ją wpisać (bo nie używam AVR), ale jeśli gdzieś tam jest edycja argumentów z którymi uruchamiane jest AVRdude, to właśnie tam. Tyle że nie chodzi o "dopisanie" jej, tylko zastąpienie tego co tam jest obecnie (np. niepoprawnego "-pm16"). Pokaż np. co jest w opcjach "AVRdude" - jedną pozycję wyżej niż to co pokazałeś powyżej.
  • #11 16017410
    konkretny25
    Poziom 11  
    Ja wpisywałem -pm8 tam, gdzie Pan Mirek w swoim blogu zalecał wpisać -P 8. Czyli w okienku "Other options" konfiguracji programatora. Nie pomogło, więc wykasowałem i zostawiłem to pole puste. Obrazek przedstawiam poniżej.
    Opensuse, Eclipse, AVR. - Konfiguracja programatora?

    Co ciekawe, gdy otworze zakładkę AVRDude w opcjach projektu, to tam w linii komend jest właśnie -pm8.
    Opensuse, Eclipse, AVR. - Konfiguracja programatora?

    Skąd wieć bierze się to -pm16, skoro:

    avrdude: Device signature = 0x1e9307 (probably m8)

    Czyli Eclipse oczekuje AtMega8.
  • #12 16017413
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16017465
    Konto nie istnieje
    Konto nie istnieje  
  • #15 16017576
    konkretny25
    Poziom 11  
    Do czego jest ta opcja można się dowiedzieć z help`u
    Opensuse, Eclipse, AVR. - Konfiguracja programatora?

    W moim starym środowisku Indigo jeżeli z listy CPU wybrałem zły procesor lub jeżeli wybrałem niewłaściwą częstotliwość taktowania po naciśnięciu "Load from MCU" Eclipse przywracał wartości prawidłowe.
    Ale że tak jesteście pewni swoich słów to jeszcze raz zaraz przełoże dyski twarde i sprawdze.
    Dlatego myśle jednak iż ta opcja ma zastosowanie praktyczne i do tego całkiem pożyteczne.
  • #16 16017586
    Konto nie istnieje
    Konto nie istnieje  
  • #17 16017620
    konkretny25
    Poziom 11  
    Nie, nie jesteś naiwny. W starym Indigo jedyna różnica wobec nowego Neon`a taka, że nie wyskakuje ten monit "Could not understand the output from AVRDude i td."
    Procesora nie podmienia i częstotliwości taktowania też. Tak że rzeczywiście ten przycisk "Load from MCU" można sobie podarować.
    Dziękuje za poświęcony czas, temat zamykam.

    PS. Do tej pory używałem w swoich aplikacjach wyłącznie kwarców zewnętrznych.
  • #19 16017625
    konkretny25
    Poziom 11  
    Jakiej wtyczki?
  • #20 16017642
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Wtyczki do Eclipse - to przecież ona musi parse'ować to co AVRdude wypisuje w konsoli. Skoro się nie rozumieją, to znaczy że wersje się nie zgadzają. Oczywiście jest potencjalnie możliwe, że problem jest w czymś innym, ale niezgodność wersji (a co za tym idzie nieco inny format wypisywania danych na konsolę przez AVRdude) jest tu chyba najbardziej prawdopodobne.
  • #21 16017664
    Konto nie istnieje
    Konto nie istnieje  
  • #22 16017672
    konkretny25
    Poziom 11  
    Widze, że jeszcze jednak zamykać tematu nie trzeba.

    W Eclipse wtyczke mam 2.4.1
    Opensuse, Eclipse, AVR. - Konfiguracja programatora?

    Cały pakiet był taki:
    Opensuse, Eclipse, AVR. - Konfiguracja programatora?

    AVRDude 6.3
    Opensuse, Eclipse, AVR. - Konfiguracja programatora?

    Jak i gdzie teraz sprawdzić czy formaty się zgadzają?
  • #23 16017711
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Wejść tu i zgłosić buga, ewentualnie przeszukać stronkę pod kątem tego problemu

    http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin

    Z tego co widzę Twoja wtyczka ma ~2 lata (przy czym seria 2.4 ma już lat 4, a więc wieczność), natomiast używasz najnowszego avrdude sprzed pół roku. Możesz spróbować użyć starszej wersji (max 6.1), choć jeśli ta opcja z którą tak walczysz robi to co myślę, to naprawdę jest to zupełnie niewarte zachodu... Przecież wiesz jaki masz układ i jaki ma kwarc, a jak nie wiesz, to szybciej będzie Ci to przeczytać niż bawić się w próby uruchomienia dwuletniej (i najwidoczniej już nierozwijanej) wtyczki na najnowszym Eclipse z najnowszym avrdude.
  • #24 16017806
    KrisH
    Poziom 14  
    Jeżeli koniecznie chcesz mieć funkcję "Load from MCU" musisz zrezygnować z wersji "Dude" 6.xx i wrócić do wersji 5.xx. W wyższej wersji zmienili chyba formaty i komunikaty.
    Przed chwilą sprawdziłem wtyczkę AVR 2.4.2 z Eclipse Mars: z 6.2 -nie działa; z 5.11 -działa.
  • #25 16019237
    konkretny25
    Poziom 11  
    Myślę że instalacja starszego AVRDude raczej nie sensu, jeżeli ma ona spowodować tylko działanie "Load from MCU".
    Raczej skłaniał bym sie do aktualizacji wtyczki. Lecz teraz pytanie w jaki sposób i czy w ogóle da się to zrobić, ponieważ obecną wtyczkę zainstalowałem z Eclipse Market, innego AVR Plugin`u tam nie było. Popatrzyłem też u wujka google i nowszej wtyczki nie znalazłem.
    Coż, widocznie z tym "Load from MCU" tak musi być. Mam jedynie nadzieje, że nie będzie problemów przy kompilacji czy programowania mikrokontrolera. Zobaczy sie.
    Wszystkim jeszcze raz dziekuje. Temat zamykam.
  • #26 16019275
    Konto nie istnieje
    Konto nie istnieje  
  • #27 16019342
    Freddie Chopin
    Specjalista - Mikrokontrolery
    majeranek53 napisał:

    Sprzed dwóch lat, a w zasadzie sprzed 4, bo pomiędzy 2012 a 2014 ilość commitów jest minimalna. Wtyczka już nie jest rozwijana. Proponuję użyć czegoś co jest rozwijane stale - make.

    majeranek53 napisał:
    Wg mnie , a nie znam Twojego systemu, do avrdude powinna być dodana ścieżka systemowa. Tak ja mam na Windows'ie. Mam wtedy dostęp do avrdude z każdego miejsca na dysku komputera.

    Porada bez znaczenia - przecież widać, że avrdude się uruchamia, więc co ma PATH do rzeczy?
  • #28 16019353
    konkretny25
    Poziom 11  
    Mógłbyś Freddie coś więcej powiedzieć na temat make? Opis? Gdzie go pobrać? W jaki sposób zainstalować podmieniając AVR Plugin?
    Bez skrótów myślowych poprosze, o ile sie da...
  • #29 16019368
    grko
    Poziom 33  
    @konkretny25 Jeżeli pluginy "ułatwiające życie" nie działają trzeba się nauczyć pisać makefile na własną rękę. Pozwoli Ci to również zrozumieć działanie narzędzi konsolowych z których korzystasz teraz niejawnie (przez wtyczkę do Eclipse) a nie rozumiesz dlaczego nie działają.
  • #30 16019392
    Freddie Chopin
    Specjalista - Mikrokontrolery
    konkretny25 napisał:
    Mógłbyś Freddie coś więcej powiedzieć na temat make? Opis? Gdzie go pobrać? W jaki sposób zainstalować podmieniając AVR Plugin?
    Bez skrótów myślowych poprosze, o ile sie da...

    Nie wiem jak odpowiedzieć na takie pytanie... Używasz linuxa, zapewne od dawna (skoro już zdążył Ci się zepsuć dysk na którym go miałeś) i pytasz mnie co to jest make i skąd go pobrać? Make to z pewnością nie jest plugin do Eclipse tylko program konsolowy, który - jak napisał wyżej grko - i tak wykorzystujesz obecnie, tyle że pośrednio. Do tej pory wtyczka automatycznie generowała Makefile na podstawie tego co sobie wyklikałeś. To implikuje, że miałeś ten program na kompie, skoro działało. Teraz po prostu wystarczy zrozumieć jak on działa (w podstawowym zakresie), znaleźć sobie jakiś Makefile do zmodyfikowania (możesz np. użyć pliku z moich przykładowych projektów dla ARM - wystarczy tam podmienić kilka linijek i już - które pobierzesz z mojej stronki. Ewentualnie - jeśli chcesz - to możesz użyć plików Makefile oraz Rules.mk z projektu distortos, ale te są nieco bardziej skomplikowane, choć dużo bardziej "elastyczne".
REKLAMA