Forum: Mikrocontroller und Digitale Elektronik ASM Flash-Speicher reservieren


von Stephan (Gast)


Lesenswert?

Guten Morgen Leute,

ich hab leider ein kleines Problem, und zwar will ich im Flash, mir eine 
Art Struktur aufbauen, die aber zum Zeitpunkt der Kompilierung keine 
Werte enthält.

Ich hatte das schöne Schlüsselwort 'space' gefunden, das mir den 
Speicher reservieren sollte. freu und fertig
1
.sect "MyStrukt"
2
3
.def _Checksum
4
_Checksum:
5
   .space 010h       // reserv. 16 Bit -> 1 Wort
6
7
.def _Size
8
_Size:
9
   .space 010h       // reserv. 16 Bit -> 1 Wort

Leider, jetzt komms: reserviert 'space' den Speicher zwar, aber 
zusätzlich beschreibt es ihn auch (fill with '0')!!!!

Wenn ich jetzt die Werte von außen beschreiben möchte, geht das nicht 
mehr da der Speicher schon programmiert ist!
Mist, dumm gelaufen.

Was ist dann das richtige Schlüsselwort in ASM um Flash-Speicher frei zu 
halten?

Hier geht es um einen TMS320F28xx und dem CCS.(irgendwo ist da auch was 
vom GCC drin)
1
.sect "MyStrukt"
2
3
.def _Checksum
4
_Checksum:
5
   .word 0xFFFF      // reserv. 1 Wort
6
7
.def _Size
8
_Size:
9
   .word 0xFFFF      // reserv. 1 Wort

Wäre das so schon ausreichend?

Stephan

von Peter D. (peda)


Lesenswert?

Der Assembler muß garnichts reservieren.

Du denkst Dir einfach eine Adresse aus, die außerhalb Deines Programms 
liegt und nimmst sie als Anfang Deiner Flash-Daten.

von Arne Maximilian R. (arnemaximilian_r)


Lesenswert?

Man koennte auch (aufbauend auf Peters Idee) den Linker, bzw. das 
Linkerskript anpassen. Dort koenntest du den Speicher, den dein Programm 
einnehmen darf kleiner machen und dir einen Bereich abzweigen, den du 
nur ueber die Adresse erreichst. Dann bist du zumindest auf der sicheren 
Seite.

von Oliver S. (oliverso)


Lesenswert?

Stephan schrieb:
> Wenn ich jetzt die Werte von außen beschreiben möchte, geht das nicht
> mehr da der Speicher schon programmiert ist!

Nach allgemeinem Verständniss steht "Flash" für eine Speicherbauart, die 
mehrfach beschreib- und löschbar ist. Irgendwas passt da nicht 
zusammen...

Oliver

von Stephan (Gast)


Lesenswert?

Hi,

ja im Linker CMD File wird die Section 'MyStrukt' auf einen passenden 
Speicher gelegt. Im High-Level Bereich ist es hinterher auch eine 
C-Struktur!

Da Projekt läuft hier über einen Pre- und Post-Process wo mit irgend 
welchen Script-Sprachen auf einige Files zugegriffen wird.
Leider kann da nur ein ASM-File genutzt werden. (Hat Chef gesagt!)

Wie sieht denn ein Speicher-Layout im Linker File aus?
 - mit globalen Symbolen
 - mit und ohne Werten

In der Struktur sind 135 Worte reserviert die mit verschieden Werte bzw 
teilweise ohne Werte befüllt sind.

Ich wollte da so wenig wie möglich von Hand was rechnen lassen und dem 
Compiler + Linker die Arbeit machen lassen.

von Stephan (Gast)


Lesenswert?

Oliver S. schrieb:
> Nach allgemeinem Verständniss steht "Flash" für eine Speicherbauart, die
> mehrfach beschreib- und löschbar ist. Irgendwas passt da nicht
> zusammen...

ja, ist halt so.

Beim TMS kann man nur Sectoren löschen!
Beim Schreiben ist der flexibler da lässt er sogar einzelne Worte zu.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.