Sprungaddressen ATxmega256A3U

Gast #6391009
Lesenswert?

Hallo,

ich hätte eine Frage. Ich habe den Mikrocontroller ATxmega256A3U. Der 
Mikrocontroller besteht aus 2 Seiten, je 64Kb, also insgesamt 256 Kb. 
Die Anwendungssoftware befindet sich auf Seite 1. Ich würde gerne, um 
den Speicherbereich auf Seite 1 zu schonen, einige Funktionen auf Seite 
2 verlagern.
Das bedeutet ich rufe von meiner Seite 1 irgendeine Funktion auf, die 
sich auf der Seite 2 sich befindet. Diese Funktion erledigt etwas und 
geht genau dahin wieder auf Seite 1 hin, woher sie aufgerufen wurde.
Da ich mich nicht so sehr mit Assembler von AVR kenne würde ich mich 
freuen wenn ihr mir helfen würdet. Wenn das ganze in C zu realisieren 
könnte wäre es noch besser.
Gruß
gc
#6391024
Lesenswert?

Die AVRs sind linear adressierbar, also brauchst Du Dich um Seiten nicht 
zu kümmern. Der Compiler nimmt schon die richtigen Call-Befehle.
Bei Flash >128kB werden 3 Bytes auf den Stack gepusht und beim RET 
wieder gelesen (siehe Instruction set).
Nur für Funktionspointer wird ein Trampolin eingerichtet, damit 
2Byte-Pointer ausreichen.
#6391034
Lesenswert?

Hallo Peter,

danke für dein Antwort. Hättest du vielleicht ein Beispiel?

z.B. befindet sich meine Funktion auf der 2. Seite auf Adresse 0x10000.

Bin in der Sache noch ein Anfänger. Wie kann ich dahin springen? Muss 
ich irgendwo definieren, das meine Funktion func2() sich auf der 
Addresse 0x10000 befindet? Wenn ja wie definiere ich es? Was meinst du 
mit Trampolin und wie werden sie errichtet?
Gast #6391047
Lesenswert?

Güney C. schrieb:
> weil auf der Seite 1 Speicher voll ist und Seite 2 gar nicht benutzt.
Ist das nicht egal?
Technisch scheint mir das egal zu sein.

Ich sehe da irgendwelche "Locken".
Ich rate dir dazu, dich von dieser "Locke" abzuwenden, und um die 
wichtigen Dinge dieser Welt zu kümmern.

Güney C. schrieb:
> Wie kann ich dahin springen?
Funktionspointer

Güney C. schrieb:
> Was meinst du
> mit Trampolin und wie werden sie errichtet?
Das macht der Compiler/Linker für dich.
Und in dessen Unterlagen findest du das auch.
Moderator (Firma: Titel) Persönliche Seite #6391083
Lesenswert?

Güney Can schrieb:
> Ich würde gerne, um den Speicherbereich auf Seite 1 zu schonen, einige
> Funktionen auf Seite 2 verlagern.
Du solltest unbedingt nochmal das Datenblatt des Controllers in dieser 
Hinsicht genauer ansehen. Denn das Lesen bedeutet für das Flash keinen 
Stress. Nur das Löschen und Neubeschreiben nutzt ihn ab und ist deshalb 
begrenzt.
(Firma: egal) #6391088
Lesenswert?

Lothar M. schrieb:
> Nur das Löschen und Neubeschreiben nutzt ihn ab und ist deshalb
> begrenzt.
Und selbst dafür sind mindestens 10000 Zyklen angegeben.

Und diese Anzahl an Programmänderungen muss man erstmal zusammen 
bekommen.
Und selbst wenn man das ausnahmsweise nach einigen Jahren Arbeit mal 
schaft sind halt 5€ für einen neuen µC fällig. Im verhältnis zu den zig 
tausenden Arbeitstunden die man benötigt um die 10000 änderungen 
überhaupt zu erreichen also nicht.
Gast #6391097
Lesenswert?

@ Güney Can

Möglicherweise wäre es nützlich, wenn Du erklärst, warum Du einen 
bestimmten Speicherbereich "schonen" willst. (Was, nach allgemeiner 
Auffassung, sowieso zu einer "gut" gestellten Frage gehört. Siehe 
Netiquette).

Ich denke, dass es im Allgemeinen nicht sinnvoll ist, sowas zu tun. Es 
mag besondere Fälle geben, aber liegt solch ein Fall hier vor?

Vorausgesetzt, eine bestimmte Funktion wird wiederholt geändert und neu 
geflasht, so wird entweder der eine oder der andere Speicherbereich 
beansprucht. Irgendwann ist die Anzahl der Schreibzyklen ausgeschöpft.
Ob nun die Funktion in diesem oder jenem Bereich liegt, ist dabei egal.
Gast #6391103
Lesenswert?

Theor schrieb:
> Vorausgesetzt, eine bestimmte Funktion wird wiederholt geändert und neu
> geflasht, so wird entweder der eine oder der andere Speicherbereich
> beansprucht.
Nöö...
Üblicher Weise wird das ganze Programm beim flashen geschrieben und 
nicht nur Teile davon und das fängt eben immer mit der Interrupt 
Sprungleiste an.

Ohne ganz ganz viele Klimmzüge, und Abweichung vom Üblichen, gibts da 
kein schonen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren