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

[C] uruchomianie *.hex z pamięci zewnętrznej? Możliwe?

Sinistra 22 Lip 2008 21:27 1596 12
REKLAMA
  • #1 5367877
    Sinistra
    Poziom 14  
    Cześć,
    chciałbym się dowiedzieć czy możliwe jest podłączenie kostki pamięci flash, np.: samsung 1GB, i uruchomiać program główny z niej. Głównie chodzi mi o to, czy mogę podłączyć taką kostkę do uC wraz z lcd, a po włączeniu układu, żeby mi sie wyświetliły wszystkie pliki hex z pamięci które mogę ruszyć, i gdy nacisnę guzik, uC uruchomi ten program. Ten pomysł jest mi potrzebny do uruchamiania dużych programów na małych prockach, możliwe to jest? Pomóżcie...

    P.S. Coś w rodzaju skierowania pointera od pierwszej lini programu do innej kostki pamięci? Wiem że to można zrobić w obrębie pamięci flash uC ale nie jestem pewny czy z zewn. też.

    Sinistra
  • REKLAMA
  • REKLAMA
  • #3 5367985
    MarasK
    Poziom 18  
    Panie.. takie rzeczy to tylko w Erz.... Armach :)
  • REKLAMA
  • #5 5376499
    Sinistra
    Poziom 14  
    OK, dobra.
    Architektury nie znam, bo dopiero kilka miesięcy siedzę w avrach. Ale mam jeszcze parę pytań, czy mógłbym podłączyć do jednej atmegi (nie wiem jakiej, chyba 8) procesorek pamięci samsunga 1GB, i kartę SD na raz, i mieć dostęp do danych w obu kartach na podobnej zasadzie, że mógłbym kopiować plik z jednej na drugą? I jeszcze jedno, gdybym do tego przykładu podłączył przez UART albo I2C inny procek, ale już z rodziny Attiny, i do tego podłączył pamięć atmela 512KB, to czy również mógłbym mieć swobodny dostęp do tych danych i przerzucać w którą kolwiek stronę pliki?
    Wiem że to brzmi laikowo, i że gdyby to było możliwe, to bym musiał ustawiać mnóstwo rejestrów, i funkcji do odczytania danych z kart, ale czy jest taka biblioteka dla GCC która to ma w sobie?

    Heh, koniec pytań :D


    Dzięki za odpowiedź na temat.
  • #6 5376943
    Dr.Vee
    VIP Zasłużony dla elektroda
    Witam,

    Uruchamianie programu z zewnętrznej pamięci jest możliwe, ale bardzo okrężną drogą. Część AVRów może z poziomu programu przeprogramować wewnętrzną pamięć flash (samoprogramowanie). Niestety w ten sposób nie uda Ci się (chyba że mocno na siłę) uruchomić programów o rozmiarze kodu większym niż pamięć flash procesora.

    Co do pytania o karty pamięci itd - wszystko można, ale zauważ, że musisz obsłużyć:
    * fizyczny protokół dostępu do pamięci (SD, SPI, etc.)
    * system plików (np. FAT) znajdujący się w pamięci

    Dopiero wtedy można mówić o "kopiowaniu plików". Biblioteki są (i były niejednokrotnie wskazywane na forum) ale zajmują dość dużo pamięci flash (zwłaszcza zapis plików).

    Pozdrawiam,
    Dr.Vee
  • #8 5383081
    Sinistra
    Poziom 14  
    aha, no czyli to najlepiej mi użyc atmega 128/256 to tego (koszty nie aż takie duże bo 13GBP za 256 płacę.), skoro już bede miał dużo flasha to mi sie libraries zmieszczą.
  • REKLAMA
  • #10 5383788
    Sinistra
    Poziom 14  
    pewnie że 7.5 jest mniej ale 13 to też nie jest masa pieniędzy.
    zresztą...
  • #11 5383912
    Samuraj
    Poziom 35  
    Tyle że to wszystko nie będzie takie łatwe.
    Nie wiemy jakie masz doświadczenie w programowaniu (piszesz coś o paru miesiącach pracy).
    Program nie będzie wyglądał tak że zlinkujesz sobie bibliotekę ustawisz pare rejestrów i wydasz komendę "copy RS to SD"
    Należy przewidzieć bardzo dużo rzeczy o których nawet teraz nie chce myśleć - począwszy od przerwania transmisji a zakończywszy na defragmentacji karty pamięci.
  • #12 5384210
    Dr.Vee
    VIP Zasłużony dla elektroda
    :arrow: Sinistra - jeśli jedyne co Cię martwi to rozmiar kodu wynikowego, to zacznij od pisania kodu, a na podstawie wyników kompilacji wybierz sobie procesor. Oczywiście upraszczam tu troche, ale niewiele :)

    Zgodzę się z Samurajem, jeśli się za to zabierzesz to będziesz tu musiał zadać jeszcze duuuużo pytań ;)

    Pozdrawiam,
    Dr.Vee
  • #13 5388169
    Sinistra
    Poziom 14  
    no właśnie, dlatego to nie jest rzecz którą sobie po prostu napisze. Moje doświadczenie z programowaniem jest bardzo małe (z AVRów zrobiłem tylko trzy kolorową diodę sterowaną przez PWM), dlatego najpierw się podszkolę w używaniu USART, SPI, porównywanie stanów na wyjściach (w tiny2313 wiem że jest), i korzystanie z atmelowskiego EEPROMu 512KB, który mi został po starym Cybiko.
    P.S. wiem to było ambitne żeby się brac na coś takiego, ale przecież grunt to miec jakiś cel.

    Dodano po 4 [minuty]:

    aha, kilka miesięcy, bo teraz męczę się ze sterowaniem wyświetlacza od starego Gameboy'a advance, i nie mogę ruszyc dalej, bo nie wiem jak skonfigurowac piny od LCDka. Ale wiem jak sie porozumiec z matrycą przynajmniej.
REKLAMA