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

AVR ładowanie i wykonywanie programu z pamięci I2C, realizacja w BASCOM AVR

karlos79 22 Paź 2006 22:35 2003 10
REKLAMA
  • #1 3143632
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 76
    Witam
    Właśnie wpadłem na taki pomysł:
    Czy jest możliwe żeby procesor ładował sobie kod programu z pamięci I2C i go wykonywał ?
    Widze to tak, ze do procesora ładuje program obsługi magistrali.
    Po starcie procek ładuje sobie program do swojej pamięci i go wykonuje.
    Czy jest możliwa realizacja tego pomysłu?
    Dodam że program powinien być napisany w BASCOM AVR.
    Pozdrawiam
  • REKLAMA
  • Pomocny post
    #2 3143648
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Możesz napisać bootloader i ładować program DO mikrokontrolera i dopiero potem go wykonywać, ale bezpośrednio z zewnętrznej pamięci się nie da. Więc jeśli chodzi o programowanie z tej pamięci - tak, da się. Jeśli chodzi o wykonywanie programu bezpośrednio z niej - nie da się.
  • REKLAMA
  • #3 3143659
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 76
    Witam
    No właśnie o to mi chodzi żeby ładować prgram z pamięci zewnętrznej do pamięci procesora i go wykonywać.
    Jak napisac taki bootloader?
    Pozdrawiam
  • Pomocny post
    #4 3143670
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Polecam np. lekturę najnowszego wydania Elektroniki dla wszystkich. Jest tam artykuł o bootloaderach w AVR, z tego co zdążyłem go pobieżnie przeczytać - dość dokładnie napisany. Albo kursy AVR w sieci. Albo książka (np: "Mikrokontrolery atmega w praktyce").

    Ogólna idea wygląda tak że pamięć flash procka jest podzielona na dwie części - w jednej siedzi bootloader z obsługą odpowiedniego interfejsu (u Ciebie I2C), za pomocą którego ładuje sobie kolejne bajty programu i zapisuje je w drugiej części pamięci flash. Jeśli się postarać (nie jest to też trudne) - można zrobić taki myk że program się wykonuje od razu w czasie programowania, więc nie trzeba robić resetu po zaprogramowaniu...
  • REKLAMA
  • #5 3143689
    JacOwcz
    Poziom 12  
    Posty: 30
    Pomógł: 2
    Ocena: 1
    Tylko po co takie czary?. Rozmiaru pamięci Flash i tak się nie przeskoczy, a będzie to wszystko trwało znacznie dłużej. Bootloader to ma może sens przy jakimś uaktualnianiu programu, ale w tym miejscu to będzie sztuka dlasztuki.
  • Pomocny post
    #6 3143699
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    A tego nie wiesz czy będzie to sztuka dla sztuki czy może jednak będzie to miało jakiś cel :> Ale to prawda i wydawało mi się to oczywiste - że się rozmiaru flasha nie da przekroczyć.

    Chociaż widzę w tym pewien cel - w zewnętrznej pamięci przetrzymywać kilka programów - a procek będzie sobie ładował ten którego aktualnie będzie potrzeba użyć... :P
  • #7 3143706
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 76
    Witam
    Będzie to sztuka dla sztuki, za to bardzo kształcąca.
    Kolego maciek_slon wielkie dzięki za podpowiedź.
    Jutro śmigam do kiosku po EP :)
    Pozdrawiam
  • Pomocny post
    #8 3143714
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Nie EP (elektronika praktyczna) tylko EdW (elektronika dla wszystkich) :-) Żeby potem nie było żadnych uwag że coś przekręciłem :P
  • #9 3145281
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 76
    Witam
    Jeszcze jedno pytanko.
    Czy taki bootloader da się napisac dla AT90S2313?
    Wszystkie przykłady jakie znalazłem do tej pory dotyczyły ATMEGA...
    Pozdrawiam
  • REKLAMA
  • Pomocny post
    #10 3146041
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Attiny2313 (następca AT90S2313) ma coś co się nazywa "Self Programming Support" - pozwala to na samoprogramowanie takie jakiego potrzebujesz, ale jak dokładnie to napisać - musisz poszukać, w tej chwili nie mam nic pod ręką (w EdW jest napisane o wykorzystaniu boot-loadera w atmegach - tam jest to rozwiązane trochę inaczej niż w tiny...)
  • #11 3146089
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 76
    Pytałem dlatego że aktualnie mam pod ręka AT90S2313.
    Szkoda musze poczekać i zamówić jakąś Atmege :)
    Pozdrawiam

Podsumowanie tematu

✨ Rozważano możliwość ładowania i wykonywania programu przez mikrokontroler AVR bezpośrednio z zewnętrznej pamięci I2C. Stwierdzono, że bezpośrednie wykonywanie kodu z pamięci zewnętrznej nie jest możliwe, natomiast można zaimplementować bootloader, który po starcie procesora ładuje program z pamięci I2C do wewnętrznej pamięci flash mikrokontrolera i następnie go wykonuje. Bootloader dzieli pamięć flash na część z kodem bootloadera i część na program użytkownika, umożliwiając programowanie przez interfejs I2C. Wskazano literaturę i kursy dotyczące bootloaderów AVR, m.in. artykuł w "Elektronika dla wszystkich" oraz książkę "Mikrokontrolery atmega w praktyce". Dyskutowano też o ograniczeniach rozmiaru pamięci flash i potencjalnym zastosowaniu zewnętrznej pamięci do przechowywania wielu programów, które mikrokontroler może ładować według potrzeb. Poruszono temat implementacji bootloadera dla mikrokontrolera AT90S2313, gdzie brak jest gotowych przykładów, a samoprogramowanie jest lepiej wspierane w nowszych modelach, takich jak Attiny2313 czy Atmega.
Wygenerowane przez model językowy.
REKLAMA