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

Bootloader dla AVR w DELPHI 7

TomekMus 28 Sty 2010 23:58 2922 8
  • #1 7608954
    TomekMus
    Poziom 17  
    Mam w swoim projekcie uC na ATmega8.

    Chcę napisać w Delphi 7 własny program który z pliku *.hex będzie wysyłał do uC kod wysterowania bootloadera a następnie dane według schematu (którego nie znam i o to pytam).

    Jak mam wysyłać plik HEX przez COM'a tak by uC odebrał poprawnie dane nowej pamięci FLASH?
  • Pomocny post
    #2 7609297
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #3 7609517
    mirekk36
    Poziom 42  
    TomekMus napisał:

    Chcę napisać w Delphi 7 własny program który z pliku *.hex będzie wysyłał do uC kod wysterowania bootloadera a następnie dane według schematu (którego nie znam i o to pytam).


    czyli nie znasz ani w ząb schematu wysyłania jak mówisz , co oznacza też że niewiesz nic o samym mechaniźmie bootloadera tzn jak on działa dokładnie w uC

    TomekMus napisał:

    Jak mam wysyłać plik HEX przez COM'a tak by uC odebrał poprawnie dane nowej pamięci FLASH?


    rozumiem też, że nie masz pojęcia w ogóle jak wysyłać cokolwiek przez port COM w Delphi

    hmmmm to bardzo ciekawe twoje pytanie jest w takim razie.... bo jak chcesz żeby ci pomóc??? napisać wszystko za ciebie i przesłać ci gotowca? po czym się okaże, że jednak coś nie działa tak jak chciałeś i wtedy poprawić gotowca, potem znowu coś nie tak więc znowu .... itd itd itd

    Ja jednak osobiście zachęcam cię do podjęcia małych kroków aby po kolei wszystko zrozumieć a wtedy albo sam wszystko napiszesz sobie albo dopytasz rzeczywiście o jakieś szczegóły na forum, gdzie będzie można udzielić jasnej , którtkiej i zwięzłej podpowiedzi - zamiast pisać całej książki tutaj dla ciebie o tym: jak działa bootloader w procku, jakie są formy przesyłania danych, jak to zorganizować od strony PC no i jak nauczyć się Delphi aby wysyłać coś przez port COM nie mówiąc już o klarowaniu na czym polega standard IntelHEX - bo tu to już mocno zaszalałeś, że tak powiem. Wystarczy wpisać hasło: "format IntelHEX" w google i masz jak na dłoni podane na milionach stron o co tu chodzi.

    ____________________________________________________

    zapewniam cię, że napisanie własnego prostego bootloaderka czy może na początku lepiej jakiejś własnej komunikacji z prockiem przez RS232 z PCtem na którym będzie właśnie jakiś programik w Delphi - nie będzie trudne dla ciebie a jednocześnie będą to te małe kroczki od których musisz zacząć - chcąc to wszystko zrobić o czym napisałeś
  • #4 7609624
    TomekMus
    Poziom 17  
    Powiem tak DELPHI 7 w małym palcu :) obsługa COM bez problemu.
    BASCOM znam na tyle dobrze że nie mam problemów niższego rzędu.
    Jedynie czego nie znam to ASM i nie wiem dzięki temu jak ugryść to zagadnienie. Bo jak bym znał ten język to z pliku jaki dołączyłem wyżej to bym wyczytał algorytm dostarczania informacji a niestety dla mnie jest to "czarna magia".

    Wiem wiem ASM to podstawa ale ..........

    Prosta sprawa potrzebuję tłumaczenia ASM, jak ktoś mi powie o cam tam chodzi to ja już dośle mu odpowiednie informacje z pliku HEX w Delphi po COM'ie
  • Pomocny post
    #5 7609665
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #6 7609960
    chifchif
    Poziom 12  
    Bootloader - jest to program który powinien być stale wpisany d pamięci Flash AVRa, powinieneś wiedzieć jak wejść w tryb bootloadera i jaka jest prędkość transmisji.
    Bootloader musi być wpisany do AVRa innym programatorem a dopiero wtedy można przeprogramowywać AVRa po RS.

    Plik nowy hex po wejściu w tryb bootloadera przesyła się:
    każda cała linia na raz i krótka przerwa na przeprogramowanie
    i tak do końca pliku.
  • #7 7610009
    TomekMus
    Poziom 17  
    OK Dzięki co oznacza pojęcia linia ?

    Tutaj jest ładnie opisany format HEX Link i chodzi mi o to linia do wysłania od jakiego miejsca się zaczyna? (Ilości bajtów/ adresu/typ rekordu/) Gdzieś wyczytałem właśnie że ta przerwa to wynosi 20ms.
  • Pomocny post
    #8 7627530
    chifchif
    Poziom 12  
    Wczytujesz hex do komponentu memo1 (musi mieć zaznaczoną opcję WordWrap=False żeby nie zawijał tekstu)

    wysłanie przez komponent Cport

    for i := 0 to Memo1.Lines.Count - 1 do
      begin
        st := Memo1.Lines.Strings[i];
        If length(st) > 0 then
        begin
          st := st + #13;
          ComPort1.WriteStr(st);
          delay(400);  // moja procedura - czas doświdczalnie dobrany 
        end;
      end;
  • #9 8691234
    TomekMus
    Poziom 17  
    Czy można zastosować ten bootloader do ATmega164 i ATmega324 ???

    Ponieważ jak zaminie na te układu kompilator regfile to nie chce się skompilować...
REKLAMA