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

Czy można wgrać hex do atmegi8 poprzez interfejs szeregowy rx tx?

rapbalance 21 Mar 2019 13:31 960 20
  • #1 17857703
    rapbalance
    Poziom 10  
    Czy można wgrać hex do atmegi8 poprzez interfejs szeregowy rx tx?

    A jeżeli tak, to jakim programatorem i jakim programem?
  • #2 17857714
    MaX.J
    Poziom 12  
    Aby to zrobić musisz wgrać bootloader. Opis tutaj Link
  • #3 17857717
    viayner
    Poziom 43  
    Witam,
    tak ale wczesniej mikrokontroler musi miec wgrany tzw. bootloader czyli wewnetrzny program/kod realizujacy funkcje programowania na podstawie danych nadchodzacych do portu szeregowego.
    Ograniczenim tu jest fak ze twoj hex nie powinien modyfikowac obszaru pamieci gdzie jest bootloader, inaczej mozliwosc wgrania kodu bedzie jednorazowa.
    Wedlug tej zasady dziala np. Arduino.
    Pozdrawiam
  • #4 17857956
    kaczakat
    Poziom 34  
    Bootloader jest zafiksowany do danej prędkości procka i UART. Najprościej ściągnąć pakiet Arduino, dograć MINICORE, jest tu do wyboru Atmega8 z bootloaderami od 1 do 20MHz, ustawiasz pożądany zegar, wypalasz bootloader i potem szkice można już wgrywać niezależnym programem, np. AVR LAB++. Wybierasz jako programator Arduino, odpowiedni port COM i baudrate, wskazujesz i wgrywasz hex, AVR LAB++ leży tu: https://www.elektroda.pl/rtvforum/topic3438601.html. Hexy przez Arduino i AVR LAB++ można wgrywać też bezprzewodowo modułem BT HC-05.
    Pomogłem? Kup mi kawę.
  • #5 17857988
    tmf
    VIP Zasłużony dla elektroda
    Czy bootloader Arduno obsługuje HEXy, czy raczej te HEXy są dekodowane na PC, a po UART do MCU już lecą polecenia, zrozumiałe dla bootloadera?
    Bo autor pytał o bootloader interpretujący HEXy, przynajmniej tak to rozumiem.
    viayner napisał:
    Ograniczenim tu jest fak ze twoj hex nie powinien modyfikowac obszaru pamieci gdzie jest bootloader, inaczej mozliwosc wgrania kodu bedzie jednorazowa.

    Bootloader można zabezpieczyć, a nawet się powinno,. m.in. z wyżej wymienionego powodu.
  • #6 17858060
    kaczakat
    Poziom 34  
    A co do programatora to w podstawowej wersji jest to konwerter USB-UART, polecam czerwoną płytkę z FTDI, może pracować na 3.3V i 5V, znajdziesz na Allegro. Ma wyprowadzone piny pozwalające zrobić autoreset jak w Arduino. Moduł BT HC-05 ma sens jak w laptopie masz wbudowany BT i akurat dla tego modelu też można zrobić autoreset przy otwieraniu połączenia.
    tmf napisał:
    autor pytał o bootloader interpretujący HEXy
    to raczej nadinterpretacja.
    Pomogłem? Kup mi kawę.
  • #7 17858124
    khoam
    Poziom 42  
    Dawno, dawno, bardzo dawno temu był opublikowany na elektrodzie projekt HEXLoadera by @master_pablo.
    Milenialsi mogą nie pamiętać ;)

    Dodano po 25 [minuty]:

    emarcus napisał:
    Lepszym wyjściem jest Arduino-Uno;- nie wiele droższa płytka, a umozliwia zasilanie z kilku dostepnych , różnych źródeł nie przekraczających 15V DC. Standardowe zasilacze 12V (ten klocek we wtyczce) sa w zupełności wystarczające. Możesz także korzystac z 9V baterii.

    To nie jest lepsze wyjście niż Nano. Płytka droższa i nie oferuje nic więcej w stosunku do Nano, oprócz dodatkowych headerów, które w wykonaniu chińskich klonów po jakimś czasie tracą styk elektryczny. Jeżeli chodzi o zasilanie, to w tej dekadzie najbardziej są popularne zasilacze 5V z wtykiem USB, czyli to co jest potrzebne do zasilania Nano.

    Dodano po 2 [minuty]:

    tplewa napisał:
    bo na Arduino świat się nie kończy

    Dopiero zaczyna :)
  • #8 17859054
    rapbalance
    Poziom 10  
    Dzięki za odpowiedzi. Doprecyzuję jednak trochę kwestię.
    Mi chodzi o to że wiekszość mikro kontrolerów ma piny kilku interfejsów (uart, spi, i2c, jtag) i chodzi mi o sytuacje w których uszkodzeniu ulega np Atmega w jakimś urządzeniu i zastępuję ją nową atmegą na którą chcę wgrać zawartość taką jak ta na uszkodzonej atmedze, więc do odczytu i zapisu eeprom i flash użyć można któregoś z tych interfejsów.
    Wiem że flash i eeprom można odczytac i zapisać poprzez SPI.
    Z tego co wiem to przez i2c można odczytać i zapisac tylko eeprom, a flash już nie - poprawcie mnie jeżeli się mylę.
    No i wreszcie uart czyli piny Rx, tx zastanawiaja mnie po co są skoro tak trudno przez nie odczytac i zapisac flash/eeprom? Bo wydaje mi sie że zadna z wyzej wymienionych metod nie jest trafna.
  • #9 17859084
    kaczakat
    Poziom 34  
    I2C, UART, SPI nie jest po to by programować procesor, przynajmniej to nie jest ich główna funkcja. Głównie są po to by komunikować się ze światem zewnętrznym. NA SPI można użyć ISP do programowania, ale można tę funkcję też wyłączyć. Jak Atmega jest uszkodzona to niekoniecznie z niej coś odczytasz, a nawet jeśli jest to fizycznie możliwe to w komercyjnych produktach pamięć flash uC jest zabezpieczona i nie skopiujesz zawartości do innego uC.
    Pomogłem? Kup mi kawę.
  • #10 17859118
    tplewa
    Poziom 39  
    @rapbalance

    Wiesz wszystko zależy od tego co się chce osiągnąć. Bootloader w zasadzie może wykorzystywać dowolny interfejs i czasem ma sens aby dać komuś (najczęściej użytkownikowi urządzenia) możliwość łatwego upgrade firmware. Twój przykład akurat jest średnio trafiony i tutaj to się nie sprawdzi. Inna sprawa to istnieją procesory które mają wbudowany fabrycznie bootloader i można je programować czy to przez UART/USB itp. Najbardziej popularne to STM32, z mniej popularnych H8/300 (programowanie przez UART) czy chińskie STC (UART lub USB) - te ostatnie w zasadzie mają możliwość tylko programowania i nie ma z nich możliwości odczytu zawartości pamięci (mowa o oficjalnych metodach - pomijam metody inwazyjne, wykorzystanie błędów itp.).
  • #11 17860058
    tmf
    VIP Zasłużony dla elektroda
    rapbalance napisał:
    Mi chodzi o to że wiekszość mikro kontrolerów ma piny kilku interfejsów (uart, spi, i2c, jtag) i chodzi mi o sytuacje w których uszkodzeniu ulega np Atmega w jakimś urządzeniu i zastępuję ją nową atmegą na którą chcę wgrać zawartość taką jak ta na uszkodzonej atmedze, więc do odczytu i zapisu eeprom i flash użyć można któregoś z tych interfejsów.

    Jeśli uległa uszkodzeniu, to raczej niewiele z niej odczytasz. Tym bardziej, ze nie bardzo to ma sens. Skoro ty zbudowałeś urządzenie, to masz do niego wsad. Czyli programujesz procesor poza urządzeniem i po zaprogramowaniu go wlutowujesz. Nie potrzebujesz więc żadnych dodatkowych interfejsów. Jeśli nie masz wsadu, to zapewne procesor i tak jest zabezpieczony przed odczytem, więc nic nie zrobisz.
    rapbalance napisał:
    Wiem że flash i eeprom można odczytac i zapisać poprzez SPI.
    Z tego co wiem to przez i2c można odczytać i zapisac tylko eeprom, a flash już nie - poprawcie mnie jeżeli się mylę.

    Mylisz interfejs programowania procesora, z interfejsami komuinikacyjnymi. Jeśli mówimy o AVR to ISP to nie to samo co SPI, mimo, że tehcnicznie jest tak realizowany. Co możesz odczytać lub zapisać po ISP, I2C, czy UART zależy od bootloadera, sam interfejs służy tylko wymianie danych.
  • #12 17865491
    rapbalance
    Poziom 10  
    tmf napisał:

    Mylisz interfejs programowania procesora, z interfejsami komuinikacyjnymi.


    To co jest najlepsze do odczytu i zapisu flash i eeprom w mikrokontrolerach z urzadzeń komercyjnych? W jaki sposób to zrobić jeżeli nie poprzez te interfejsy które wymieniłem (uart, isp, i2c, jtag)?
  • #13 17865497
    khoam
    Poziom 42  
    rapbalance napisał:
    To co jest najlepsze do odczytu i zapisu flash i eeprom w mikrokontrolerach z urzadzeń komercyjnych?

    Wszystko zależy od konkretnego mikrokontrolera, a skoro piszesz "mikrokontroler" to może byc nawet WiFi.
  • #14 17865509
    rapbalance
    Poziom 10  
    chodzi mi o atmele, np atmega8, albo jaki kolwiek inny uC wyposażony w interfejsy wymienione.
  • #15 17865693
    LChucki
    Poziom 31  
    rapbalance napisał:
    tmf napisał:

    Mylisz interfejs programowania procesora, z interfejsami komuinikacyjnymi.


    To co jest najlepsze do odczytu i zapisu flash i eeprom w mikrokontrolerach z urzadzeń komercyjnych?

    Do tego co napisał @khoam dodam jeszcze, zależy co potrzebujesz i jak duży może być bootloader.

    rapbalance napisał:

    W jaki sposób to zrobić jeżeli nie poprzez te interfejsy które wymieniłem (uart, isp, i2c, jtag)?

    USB, Ethernet, kartę SD (w przypadku AVR będzie to SPI).
  • #16 17865758
    tmf
    VIP Zasłużony dla elektroda
    rapbalance napisał:
    tmf napisał:

    Mylisz interfejs programowania procesora, z interfejsami komuinikacyjnymi.

    To co jest najlepsze do odczytu i zapisu flash i eeprom w mikrokontrolerach z urzadzeń komercyjnych? W jaki sposób to zrobić jeżeli nie poprzez te interfejsy które wymieniłem (uart, isp, i2c, jtag)?


    W mikrokontrolerach zazwyczaj nie da się odpowiedzieć na ogólne pytanie co jest najlepsze. Można spróbować odpowiedzieć na pytanie co jest najlepsze w konkretnej sytuacji, przy konkretnych założeniach.
    ISP to ogólne określenie interfejsu programowania mikrokontrolera, umożliwiajacego jego programowanie w układzie, czyli na płytce na której się znajduje. Taki interfejs wymaga dedykowanego programatora i specjalistycznego oprogramowania. Zazwyczaj wymaga też fizycznego dostępu do procesora. Interfejsy typu I2C, UART, czy inne, same w sobie nie umożliwiają programowania procesora, lecz umożliwiają dostarczenie do niego danych. Te dane musi obsłużyć program, tworzący tzw. bootloader. Dzięki temu możesz sobie stworzyć dostosowane do własnych potrzeb schematy wgrywania nowego oprogramowania. Ma to sens, jeśli po sprzedaży urządzenia planujesz mieć możliwość uaktualniania firmware, bez konieczności jeżdżenia do klienta z dedykowanym sprzętem. To tak powierzchownie napisałem co i jak. Jak widzisz temat wcale nie jest taki prosty, a wybór interfejsu taki oczywisty.
  • #17 17869432
    rapbalance
    Poziom 10  
    kaczakat napisał:
    A co do programatora to w podstawowej wersji jest to konwerter USB-UART, polecam czerwoną płytkę z FTDI


    Tylko w jakim programie zczytywac i wgrywac flash? Bo FTprog ma tylko opcję eeprom, a flash tylko dla czipów Vinculum.
  • #18 17869449
    yokoon
    Poziom 29  
    Np: MkAvrCalculator
  • #19 17869473
    tmf
    VIP Zasłużony dla elektroda
    rapbalance napisał:
    Tylko w jakim programie zczytywac i wgrywac flash? Bo FTprog ma tylko opcję eeprom, a flash tylko dla czipów Vinculum.


    FTProg odczyta EEPROM znajdujący się w chipie FT, a nie w podłączonym procesorze.
    Do odczytu zawartości AVR użyj AVRDude, lub jedną z darmowych nakładek.
  • #20 17869527
    rapbalance
    Poziom 10  
    Panowie, mkavrcalculator i avrdude wykorzystuja ISP, a mi chodzi o programowanie ftdi poprzez uart czy się da? Bo na pcb mam wyprowadzenia interfejsu ISP (i to wiem jak wykorzystać), ale tez interfejs uart, poprzez który nie wiem jak programować Atmegę

    Moderowany przez tmf:

    Kolega przeczyta i przemyśli uzyskane w tym wątku odpowiedzi. Wszystkie potrzebne informacje i wskazówki już zostały udzielone. Nie ma sensu kontynuować tematu, dopóki autor nie zada sobie trudu zapoznania się bliżej z interfejsami mikrokontrolera oraz bootloaderem.
    3.1.17. Nie wysyłaj pytań bardzo podstawowych, na które odpowiedzi można znaleźć w instrukcji obsługi lub ogólnie dostępnych źródłach. . Dbaj o poziom pytań i dyskusji. Dziękujemy.

  • #21 17869531
    khoam
    Poziom 42  
    rapbalance napisał:
    ale tez interfejs uart, poprzez który nie wiem jak programować Atmegę

    Najpierw musisz mieć odpowiedni bootloader w atmega, który takie programowanie zapewni.
REKLAMA