Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wgrywanie programu do AVR-a przez USB z komputera PC

PetrolGda 22 Sty 2010 08:45 2925 6
  • #1 22 Sty 2010 08:45
    PetrolGda
    Poziom 12  

    Mam następujący scenariusz do realizacji.
    Jest sobie jakieś urządzenie z procesorem AVR na pokładzie. Urządzenie jest gdzieś daleko - nie mam do niego bezpośredniego dostępu więc ISP dopada.
    Chciałbym umożliwić wykonanie upgrade oprogramowania w taki sposób :
    1. Biorę skompilowany plik programu np. Bascom-a
    2. Podłączam AVR do komputera przez usb
    3. Ładuję nowy soft do procesora

    Pytania:
    1. Jak zrealizować elektrycznie połączenie AVR-a z USB (przejściówka) ?
    2. Jakiego softu na PC używać do takiej transmisji danych ?

    Pozdrawiam

  • #2 22 Sty 2010 09:55
    mirekk36
    Poziom 42  

    Można to zrobić na wiele sposobów. Można taki wsad załadować zarówno przez USB z własną przejściówką na układziku FT232RL ale także bezprzewodowo za pomocą BlueTooth

    Kilka przykładów w tym schematów takich przejściówek oraz pomysł na realizację takiego bootloadera znajdziesz np w linku poniżej:

    https://www.elektroda.pl/rtvforum/viewtopic.php?t=1343484&highlight=


    jak tam widzisz, przejściówka na układzie FT232RL jest banalnie prosta - tylko scalak, gniazdko USB i kilka kondków ;) .... ale jak sam widzisz i użycie BlueTooth nie jeste skomplikowane

  • #3 24 Sty 2010 00:31
    OlekM
    Poziom 17  

    Proponuję brzydkie, acz proste rozwiązanie:

    Ad1. Jak zrealizować elektrycznie połączenie AVR-a z USB (przejściówka) ?

    Może najprościej zastosować programator zgodny z USB-ASP (http://www.fischl.de/usbasp/). Dzięki temu, nie trzeba nawet bootloadera do procesora wgrywać.

    2. Jakiego softu na PC używać do takiej transmisji danych ?
    Jeśli zdalny komputer działa pod Windows:

    avrdude + zdalny pulpit (VNC, RemoteAdministrator czy inna ulubiona technologia)
    Zalety: proste, szybkie
    Wady: jeśli ktoś używa zdalnego komputera, może nie zechcieć "zdalnej ingerencji"

    avrdude + własny program przesyłający plik
    Zalety: ogromna elastyczność
    Wady: trzeba nieco czasu poświęcić na program

    avrdude + SysInternals psexec
    Zalety: gotowe rozwiązanie, bez grzebania po cudzym pulpicie
    Wady: trzeba przeczytać manual do psexec, może się okazać, że nie zadziała

    Jeśli zdalny komputer działa pod systemem GNU/Linux:

    avrdude + ssh + scp //spod Linuksa
    avrdude + PuTTY + WinScp //spod Windowsa
    Zalety: można przygotować jeden skrypt, który zrobi wszystko automatycznie
    Wady: wymaga wiedzy związanej z Linuksem

  • #4 24 Sty 2010 00:54
    mirekk36
    Poziom 42  

    OlekM napisał:
    Proponuję brzydkie, acz proste rozwiązanie:


    No rzeczywiście nie dość, że brzydkie, wcale nie proste to jeszcze (sorki) o tyle bez sensu, że w założeniu autor napisał iż odpada programowanie ISP.

    OlekM napisał:
    Dzięki temu, nie trzeba nawet bootloadera do procesora wgrywać.


    No rzeczywiście - super alternatywa dla bootloadera - jakieś zdalne pulpity, VNC i szereg innych (sorki) bzdur . Po to właśnie jest taka możliwość jak Bootloader dla procka żeby właśnie umożliwić producentom urządzeń elektronicznych - zaniechanie takich dziwolągowatych rozwiązań. A za to maksymalnie je uprościć!

    Wyobraź sobie teraz, że potrzebujesz wgrać nowszą wersję Biosa do swojego komputera PC. A w tym celu musisz zadzwonić czy wysłać e-mail na Taiwan do fabryki płyt głównych, skonstruować sobie programator do biosa twojej płyty głównej wg podanego schematu albo poczekać aż przyślą ci taki programator z Tajwanu , potem odpalić na swoim kompie zdalny pulpit czy VNC a następnie czekać aż pracownik fabryki na Tajwanie - szanowny pan Chiao Xi Long - zrobi ci Upgrejd Biosa w twoim kompie. Czy widzisz bezsens takich rozwiązań ???

    W zamian za to pan Chiao Xi Long z fabryki na tajwanie udostępnia na swojej stronie program typu Bootloader oraz na płycie głównej umieszcza mechanizm bootloadera. Dzięki czemu pan Xi Long nie musi sam milionom ludzi Ugrejdować ich Biosów, nie musi im wysyłać specjalnych programatorów ani uczyć ludzi ich budować. Oni sami sobie robią Upgrejd pobierając soft Bootloadera oraz nowszą wersję Biosa do wgrania.

    A ty Bootloader określasz prawie że mianem - "wielkiego nieszczęścia" A nawet lepiej - zamiast prostego mechanizmu Bootloadera plus np przejściówki USB/RS232 czy innej - ty chcesz do tego zaprząc aż cały komputer i to z jakimś systemem operacyjnym czy to Win czy to Linux , który będzie ot takim małym dodatkiem do USBASP oraz avrdude - dobre dobre

    No chyba że całkiem coś ci się pomyliło ;)

  • #5 24 Sty 2010 01:23
    OlekM
    Poziom 17  

    Rzeczywiście, autor tematu napisał...

    Cytat:

    No rzeczywiście nie dość, że brzydkie, wcale nie proste to jeszcze (sorki) o tyle bez sensu, że w założeniu autor napisał iż odpada programowanie ISP.


    Czy końcowemu użytkownikowi zrobi różnicę, czy wtyczka USB którą i tak musi włożyć do komputera prowadzi do FTDI za kilkanaście zł, czy to procka w stylu ATMEGA88 za kilka zł (na którym opiera się USB-ASP)? Czy jej włożenie jest z tego powodu bardziej skomplikowane?

    A oto kilka, moim zdaniem istotnych, zalet zaproponowanego rozwiązania:
    * proponowane rozwiązanie jest tańsze w produkcji
    * jakkolwiek dziwny program zostanie załadowany do procesora - zawsze będzie można go wymienić, nie da się uszkodzić bootloadera skoro go nie ma
    * całkowicie bezpieczne jest w tym przypadku przerwanie programowania w jego trakcie
    * możliwa jest zmiana fuse'ów, czego nie można zrobić z poziomu bootloadera

    Jest jednak również istotna wada:
    * nie można zabezpieczyć programu przed skopiowaniem, jednakże treść pytania nie wskazywała na taką konieczność

    Ponadto autor tego tematu nie określił jak zamierza stosować swoje rozwiązanie - więc nie narzucam mu "użyj bootloadera, bo to jedyne dobre rozwiązanie". Takie już wcześniej zasugerowałeś - i nie podważam Twojej opinii - pokazuje jedynie inną drogę.

    Poza tym, rozwiązanie w stylu avrdude + własny program również może być dostarczone jako gotowy zestaw, który po ściągnięciu - po prostu wykona swoją robotę. Dokładnie jak Twoja wersja z bootloaderem.

    Oczywiście, że rozwiązania typu zdalny pulpit czy SSH nie nadają się dla produktów masowych - gdzie aktualizacja musi "po prostu działać". Dają za to dobrą kontrolę nad procesem programowania. Tu również autor tematu nie podał zbyt wielu szczegółów - więc czemu miałbym o takich rozwiązaniach nie wspomnieć.

    Cytat:

    A ty Bootloader określasz prawie że mianem - "wielkiego nieszczęścia"


    Nie, określam go mianem alternatywy.

    Cytat:

    No chyba że całkiem coś ci się pomyliło


    A ta krytyka to właściwie w jakim celu? Chcesz człowiekowi pomóc, coś od siebie zaoferować, czy udowodnić, że tylko ty tu jesteś ważny. Nie chcę poważać, Twoich opinii - uważam je za cenne. Uszanuj jednak także zdania innych ludzi.

    Pozdrawiam.

  • #6 24 Sty 2010 09:49
    mirekk36
    Poziom 42  

    OlekM napisał:

    A ta krytyka to właściwie w jakim celu? Chcesz człowiekowi pomóc, coś od siebie zaoferować, czy udowodnić, że tylko ty tu jesteś ważny. Nie chcę poważać, Twoich opinii - uważam je za cenne. Uszanuj jednak także zdania innych ludzi.


    To nie krytyka tylko raczej ostra polemika. Wcale nie miałem zamiaru pokazywać jaki jestem ważny czy kogokolwiek urażać i nadal nie mam takiego zamiaru. Tak samo jak nie było moim celem udowadnianie, że bootloader jest jedynym słusznym rozwiązaniem.

    Jednak także w tym poście wymienione przez ciebie wady sposobu opartego o bootloader , jak dla mnie, pokazują tylko to, że nie za bardzo może wiesz jak działa bootloader, że nigdy go sam nie stosowałeś i dlatego podchodzisz do tego tematu jak do jeża.

    OlekM napisał:

    Czy końcowemu użytkownikowi zrobi różnicę, czy wtyczka USB którą i tak musi włożyć do komputera prowadzi do FTDI za kilkanaście zł, czy to procka w stylu ATMEGA88 za kilka zł (na którym opiera się USB-ASP)? Czy jej włożenie jest z tego powodu bardziej skomplikowane?


    no pewnie, że bardziej skomplikowane. Na prawdę nie wiem jak można porównywać włożenie zwykłego kabla USB traktowanego jak w zasadzie zwykły kabel RS232, którym po prostu łączy się PC'ta bezpośrednio z urządzeniem do zmiany firmware - z podłączaniem po drodze programatora (już obojętnie jakiego) z uruchamianiem jakiegokolwiek programu do programowania procków np avrdude. Przecież dla zwykłego śmiertelnika po drugiej stronie, który w ogóle nie zna się na elektronice - programator czy avrdude to "czarna magia" i wcale nie musi chodzić o żadnego masowego użytkownika a o zwykłych kilku klientów na jakieś zrobione urządzonko. Nie dziw się więc , że takie porównania budzą moje ostre wątpliwości.

    OlekM napisał:

    A oto kilka, moim zdaniem istotnych, zalet zaproponowanego rozwiązania:
    * proponowane rozwiązanie jest tańsze w produkcji
    * jakkolwiek dziwny program zostanie załadowany do procesora - zawsze będzie można go wymienić, nie da się uszkodzić bootloadera skoro go nie ma
    * całkowicie bezpieczne jest w tym przypadku przerwanie programowania w jego trakcie
    * możliwa jest zmiana fuse'ów, czego nie można zrobić z poziomu bootloadera

    i jak widać dalej brniesz w zaparte bo:

    * jak może być tańsze produkowanie programatorów zamiast wykorzystania zwykłej przejściówki USB/RS232

    * o jakich ty dziwnych programach piszesz? czy do ciebie dociera do czego jest bootloader? Za jego pomocą ma być tylko wgrana nowsza wersjia firmware przekazana od autora urządzenia - więc gdzie te udziwnienia programów. Poza tym o jakich ty uszkodzeniach bootloadera piszesz? Czy zdarzyło ci się uszkodzić bootloader podczas gdy za jego pomocą programujesz nowy wsad???? No sorry - ale to pokazuje, że nigdy się nawet tym nie bawiłeś a wygłaszasz opinie nieco z kosmosu.





    * przerwanie programowania w trakcie ładowania wsadu bootloadera także można spokojnie powtarzać w nieskończoność - skąd te pomysły pytam?

    * no i kto ci naopowiadał bajek o tym, że z poziomu bootloadera nie można zmienić ustawień fusebitów? - na prawdę - weź choć troszkę poczytaj na ten temat zanim zaczniesz wygłaszać (niestety muszę to nazwać w tym konkretnym przypadku) takie herezje

    ------------------

    co do wady miałeś rację owszem - nie można zabazipeczyć wsadu a przy bootloaderze można - robiąc szyfrowanie.

    -------------------

    no i nikt nie broni ci wspominać o takich rozwiązaniach o jakich piszesz - tylko skoro jak ci wykazałem w kilku punktach wyżej piszesz jakieś niesprawdzone i wyssane z palca opinie o bootloaderze to nie dziw się mojej reakcji.

    Tak samo jak z twoim stwierdzeniem, że masz większą kontrolę nad programowaniem przez zdalny pulpit. Toż gdy się coś nie powiedzie od strony sprzętowej to leżysz - bo po drugiej stronie będziesz miał użytkownika, który nie będzie miał świadomości co ty mu wyprawiasz przez ten twój zdalny pulpit.

    Reasumując - wspominaj o tych swoich - nie swoich rozwiązaniach - bo przecież ani programowanie ISP nie jest twoim pomysłem ani bootloader moim pomysłem. Ale nie pisz, że twoje propozycje zdalnych pulpitów to alternatywa dla bootloadera bo to też pozbawione jest praktycznego sensu.

    Ale może żeby bardziej to do ciebie dotarło wyobraź sobie, że sam napisałeś nowe oprogramowanie do procka, który steruje np automatami weddingowymi do automatycznej sprzedaży napojów. I twoi klienci powstawiali te automaty z kolei u swoich klientów gdzieś na halach, magazynach gdzie nie ma w pobliżu żadnego PC'ta.

    Za to ty mógłyś np wysłać swojemu klientowi nowszą wersję wsadu i to zakodowanego na np karcie SD, którą to kartę trzeba wetknąć tylko w odpowiednie gniazdo serwisowe i resetem odpalić Bootloader, który podmieni firmware. Albo podłączyć takie automaty do sieci LAN i po po ethernecie podmieniać firmware. No rozwiązań z botloaderem jest sporo, tylko trzeba chcieć o nich poczytać, trzeba chcieć chociaż raz samemu je zastosować aby to zrozumieć.

    A jak coś się spapra na tzw "amen" to i tak będzie potrzebny serwis a nie żaden programator USBASP czy inny.

    Takie jest moje zdanie a nie żadna krytyka twoich wypowiedzi. Ty mów i pisz co chcesz.

  • #7 24 Sty 2010 12:11
    PetrolGda
    Poziom 12  

    Dzięki za ciekawą polemikę.
    Poczytałem sobie trochę o bootloaderach i widzę, że jest to ta droga której należy się trzymać w tym wypadku. Może na początku niezbyt prosta ale chyba skuteczna.
    W końcu ostateczny wynik to rozwiązanie dla "użytkownika specjalnej troski" który ma tylko podłączyć urządzenie do PC-ta i nacisnąć jeden przycisk na ekranie.

    Dzięki za wszelkie uwagi.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME