ATMega8 rozšíření paměti pro programy

Tak a mám další dotaz.
Vím o možnosti přidat paměť EEPROM (třeba 24c16 přes I2C) umím do ní zapsat data nebo číst data po jednotlivých bytech. Probém je, že nevím jak zkompilovat a uložit/načítat program z této externí paměti. Ctěl bych najít cestu jak třeba uložit program (nejakou funkci napsanou v C) uložit do této paměti a po odeslání příkazu po UART by si MPU sáhlo do této paměti a provedlo daný program.

Pokud píšu FW MPU, vždy si kompilátorem vytvořím jeden čistý .hex soubor. Proto pokud je tenhle .hex soubor větší než 8kb mám smůlu.

Otázka tedy zní:

  1. Jak naadresovat externí flash pamět pro přímý přístup
  2. Jak vytvářet programy pro AVR

Jaká řešení mě napadla:

  1. napsat jednoduchý interpret a ten pak mít uložený v interní paměti a provádět příkazy z externí paměti – nejjednodušší ale nejkostrbatější cesta proto nepřipadá v úvahu
  2. Napsat nějaký zavaděč který by tahal data z externí paměti a chápal je jako program (to zní dost šíleně ale mělo by to jí)
  3. použít MPU s větší pamětí (není ideální - to mi jenom oddálí problém s pamětí)

Můj problém je, že né úplně chápu jak probíhá zkompilovaný program. Paměť je přeci pamět obsahuje data. Vím o možnosti připojení MMC karty k MPU ale je tam stejný problém. Tam už používám nějaký většinou FAT16,32 soubor systém. Takže jak nahrát na paměť data je jednoduché ale opět chybí nějaký cross compiler.

Řešil to už někdo? Děkuji za jakékoli nápady

Myslím, že procesor s 256kB by tvůj problém vyřešil na poměrně dlouhou dobu :smiley:
Některé megy(např. m64) mají vyveden paměťový řadič, ten je ale jen pro ram jesli se nemýlím. Externí programová paměť se dnes už moc nenosí, protože v ní nejde program zabezpečit proti zkopírování.
Nějaký interpret by sice napsat šel, ale to by bylo neeuuvěřitelně pomalý a musel bys řešit programové kolize - např. když by interpret pro svoji práci využíval r16 a program ho chtěl taky.

no ted si čtu nejake informace týkající se téhle problematiky a asi mi opravdu snáže poslouží výkonější procesor. Ono by to šlo napsat i pro externí paměť, ale i na to by ten 1kB RAM byl málo.
Hold mou zásobu ATMega8 použiju jen jako procesor pro slavové moduly. Přejdu asi na MPU ATMega644. Jestli se nepletu je to nejvýkonější ATmel do DIP pouzdra(musím se naučit pájet časem ty malé SMD a pak bude 128 nebo 256ka)

Jinak jako datovou pamět asi použiju kombinaci SD/MMC modulu spolu s knihovnami od Rolanda Riegela ( roland-riegel.de/sd-reader/) neustále tu knihovnu vyvíjí je podporováno hned několiik souborových systémů.

Tím to považuju za vyřízený

ATmega644 nie je najvykonnejsi procesor v DIP

Daleko vykonnejsi je ATmega644P
a nakoniec je uz k dostaniu ATmega1284P i v puzdre DIL40

Co sa pamate tyka tak ATmega2560 ale v puzdre TQFP

ja ty QFTP neumim pájet. Tistaky si delam fotocestou takze to by problem nebyl, ale jak to pripajet. K tomu uz je asi třeba naka horkovzdusnvora potvora ne?

Jinak ano myslel jsem tu 644P v TME jine ani uz nemaji

O pájení těhle pouzder je na netu celá řada článků nebo diskuzí, stačí mikropájka, odpájecí knot a nebát se toho:)

Ale ta obava je uplne na mieste. Plne chapem, ze ak niekto nema pracu s danym procesorom v “malicku”, rad privita moznost vytiahnut z patice a zasunut do patice iny kus - pre istotu. to s TQFP naletovanm na doske ide dost tazko :slight_smile:

Souhlasím, ale potom si jako “nováček” může vybrat nějaký procesor v dip, i když parametrově horší. Takový nováček stejně neposoudí jestli jsou pro něj parametry daného procesoru dostačující…
…jinak takovej je prostě vývoj, za pár let nebude pravděpodovně žádný procesor v DIP, a taky se s tím budeme muset nějak vypořádat:)
…a když bude na desce vyměňovat spálené pouzdro TQFP, tak si dá určitě příště i větší pozor:)

tak vsiml jsem si ze existuji i patice pro tyhle (nevím jestli QFTP) smd pouzdra. Je to neco jako kdysi byvaly na sis grafikách pameti. Nebo první biosy. Kazdopadne ted kdyz porad obcas narazim na problem ze nevim jestli je chyba v HW / SW tak je pro mne snazsi pouzit DIP pouzdro s patici.

Tak patice na TQFP samozřejmě existují, stejně tak jako na jiná pouzdra, ale ty ceny jsou v řádech tisíců, to se opravdu pak vyplatí odříznout poškozený procesor, desku vyčistit a připájet nový.

prostě zatím nemá cenu řešit do teď jsem si vystacil s ATMega8. Hral jsem si s ní dosita a ATMega644P mi vystaci na hoodně dlouho. Výhledově se to budu muset naučit.

Jen tak mimo mísu. Už jsem čím dál víc nucen pracovat s SMD třeba teď dělám takovou blbost. Redukci UART / Bluetooth a tam uz je to všude v SMD. Hold důkaz že člověk se pořád musí učit :smiling_imp: to je na tom to krásný.

Ale preco by mal byt parametrovo horsi? Tejto poznamke som akosi nerozumel. ATmega1284P je to najvykonnejsie (pomer rychlost/RAM/Flash/periferie), co Atmel v rade AVR spravil. A je v DIP40. Tak wocogou :slight_smile:

Jasně, ale já jsem to myslel obecně, většinou je to tak, že top procesory nejsou v pouzdře DIP… ale mám asi taky trochu zdeformovaný pohled, protože už vyvíjím většinou jenom na hotových deskách, kam zásadně dávám to nejmenší co v dané řadě je, takže ty DIPy jdou už trochu mimo mě, i když ho na kontaktní pole taky ještě občas nahodím… takže sorry jestli jsem se někoho dotknul :slight_smile:

koukám, že se nám tu ta debata trochu zvrhla. Podle mě je to zbytečny dál rozebírat. Pro testy je DIP lepší, pro koncový produkt může být výhodnější menší pouzdro.

Ja o ziadnom zvrhnuti nic neviem :slight_smile: