mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm auslagern


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Gibt es eine Möglichkeit den Programmcode, der sonst in den Flash des
AVR geschrieben wird, auszulagern in ein EEprom oder externes Flash.
So das er zur Laufzeit den Code von da holt? Ich würde dafür einen
Meg16 nehmen wollen und den externen Speicher mit dem i2c ansteuern.
Der Speicher müsste > 128kb haben.
Gruss
Frank

Autor: beta-frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht mit dem AVR nicht, es sei denn, Du würdest quasi einen Interpreter
aus seinem Flash ausführen, der Dein EEPROM-Code interpretiert ->
aufwändig, langsam.

Der AVR kann auch seinen eigenen Flash beschreiben, da könnte man
häppchenweise immer den nötigen Code aus'm EEPROM ins Flash kopieren.
Genauso belämmert, zumal der Flash nicht beliebig oft beschreibbar
ist.

Bleibt Dir fast nix anders übrig, als Dich mi nem µC anzufreunden, der
Deinen vorstellungen näher kommt und Code aus externem Speicher
ausführen kann oder besser genug Flash intus hat.

>128KB Programmspeicher (ATmega128 hat 128KB Flash) mußte erstmal
gefüllt kriegen!! Wenn der wegen Grafiken oder ähnlichen Daten so
vollgestopft wird: Die lassen sich natürlich ganz gut auslagern.

Autor: Thomas K. (thkais)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein.
Einzige Alternative: Einen Interpreter schreiben, der dann die
Programmcodes im externen Speicher interpretiert.
Oder einen anderen Prozessortyp verwenden (z.B. MCS-51).

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Der Speicher müsste > 128kb haben.
ATMEGA 2561 ? Der hätte 256kb flash und 8kb ram und gibt's auch schon
bei csd-electronics.de

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eigentlich sind die "Nein" ja richtig, aber "von hinten durch die
Brust ins Knie geschossen" könnte man doch einen bootloader schreiben
der auf neue Daten im externen Flash konntrolliert und gegebenenfalls
den AVR neu programmiert.
Obs Sinn macht sei dahingestellt, aber vielleicht wäre es ein work
around.
@Frank: was ist die Idee hinter der Fragestellung?

grüße leo9

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten aber der Atmega sollte schon in DIP Formbleiben.

Für mich als Anfänger besser zu verarbeiten. Geht es das man z.B. Text
der auf einem LCD erscheinen soll auslagert. Der scheint ja auch viel
Flash in Anspruch zu nehmen?
Frank

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Geht es das man z.B. Text der auf einem LCD erscheinen soll
auslagert."


Kein Problem.

Autor: Marcel Pokrandt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber ich versteh das noch nicht ganz. Du bist Anfänger und schon an der
32k-Grenze des AtMega32?
Puh, ich glaub das größte, was ich bisher geschafft hab, liegt derzeit
so bei 15k...

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Das liegt daran das ich ein relativ grosses Menü habe mit vielen LCD
Textanzeigen. Ausserdem ist mein Code wohl noch nicht so effektiv das
er sich noch sehr aufbläht.  Ich kann nur DIP AVR verarbeiten. Alle
anderen AVR laßt meine "Lötkünste" noch nicht zu.
Frank

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hallo
> Das liegt daran das ich ein relativ grosses Menü habe mit vielen
> LCD Textanzeigen.

Um einen signifikanten Teil von 32k vollzubekommen, ist aber auch schon
eine ziemlich große Menge Text nötig. Wieviele Tausend Menüeinträge hast
du denn?
Generell kannst du aber durchaus Daten auch aus dem EEPROM (welches
aber normalerweise verhältnismäßg klein ist) oder externem Speicher
holen. Nur Programmcode kann von dort nicht ausgeführt werden.

> Ausserdem ist mein Code wohl noch nicht so effektiv das
> er sich noch sehr aufbläht.  Ich kann nur DIP AVR verarbeiten.
> Alle anderen AVR laßt meine "Lötkünste" noch nicht zu.

Es gibt auch Module mit größeren AVRs, die man auf eine normale
Lochrasterplatine stecken kann.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja es sind so 15 Menüpunkte, aber es ist noch der soft i2c und eine
DCF integriert und halt noch anderer Funktioncode.Und es fallen mir
noch mehrere Sachen ein die mit rein könnten. So habe ich dann schon
die 32Kb des Meg32 ausgenutzt. Wie ist den das Meg128 Modul zu flashen?
Auch über den ISp? Kann ich dann auch meinen ISP (den ich hier aus den
Shop habe und für den Meg32 nehme) für den Meg128 nehmen?

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich bezweifle das du mit den 15 Menüpunkten und allem anderen 32k
voll bekommen hast.

Wo hast du denn die 32kbyte her ?

Sagt das der programmer oder hast du evtl geguckt wie groß die
main.c/main.asm/main.hex ist ?

Bye, Simon

Autor: Marcel Pokrandt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sonst versuch doch mal, die Optimierung beim Compiler einzuschalten...
der dampft das ganze meist auch noch um nen guten Faktor ein.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
15 Menüpunkte in 32kB, das sind ja 2000 Zeichen pro Menüpunkt, wer soll
das denn alles lesen ?


Peter

Autor: Anton Wert (antonwert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte mal ein Menü auf einem Mega128 implementiert (per Comandline) und
dazu noch so ziemlich jede verfügbare Hardware genutzt --> 1,7k !!
Glaub irgendetwas läuft da schief bei dir...

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir die Grösse der main angeguckt. Die hat 31kb .
Wie gesagt da ist noch ne DCF und I2c Steuerung, Drehgeber auslesen
u.s.w.! Ich denke manches ist nicht optimal programmiert. Dakönnte man
auch noch Platz einsparen.

Autor: Marcel Pokrandt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Frank:
Die Hex-Datei?

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhhh, dir ist aber schon klar, dass du das Programm noch kompilieren
musst?
Da schrumpfen 31kB ASCII-Text (wohl inkl. Kommentaren und allem drum
rum) schnell mal auf 2-3kB reinen HEX-Code runter.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Hex hat nach dem kompilieren 32 kb!!
Frank

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du evtl. jede verfügbare Bibliothek eingebunden?

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Frank: Die HEX-Datei ist mind. um den Faktor 2 größer als der
Platzbedarf Deines Programms im uC. Was sagt denn avrdude beim Flashen?

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind dann aber maximal 12-16KB binär. Ist doch Intel-Hex-Format.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne ich habe nur die Dateien eingebunden die sein müssen.
Notepad sagt 31KB und wenn ich mir die Hex im Verzeichniss ansehe
ist die 32 KB? Ist sie nun so gross oder nicht? wie kann man das
rauskriegen?

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hexx ist immer mindestens doppelt so groß, wie dei reine Flash-Datei
später, also hast Du jetzt gerade mal so um die 13k!!!

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hex mit einem x hätte auch gereicht ;-)

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also kann man nirgends auslesen wie gross die Hex nun wirklich ist also
wieviel Platz man noch hat????

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Frank: Wenn Du avrdude zum Flashen benutzt, erzählt er Dir, wie viele
Bytes er geflasht hat.

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem kannst du die Hex-Datei in einem Editor öffnen und in den
ersten Spalten sollte die Speicheradresse der jeweiligen Zeile stehen.
In Hex - versteht sich ;-) Die Adresse der letzten Zeile + die Bytes
der letzten Zeile ergeben dann deine Größe.

Siehe auch:

http://www.schulz-koengen.de/biblio/intelhex.htm

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.