Bedeutung von C-Code

Gast #649325
Lesenswert?

extern code Tabelle
unsigned int code *z;
z = (unsigned int code *)&Tabelle;

Geschrieben ist das ganze für einen 8051-basierten Micrcontoller und
soll von einem Keil-Compiler übersetzt werden
Bei Tabelle handelt es sich soweit ich weiß um eine in Assembly 
geschreibenen Funktion
Gast #649327
Lesenswert?

Atmel verwendet in einigen Beispielcodes die Datei compiler.h
Dort wird code als __flash definiert (#define code __flash).
Das bedeutet, dass die Tabelle im Flash gespeichert wird um RAM zu 
sparen.

mfg
#649594
Lesenswert?

Thomas B. wrote:
> Beim Keil heisst das "code", dass der int z im Flash liegt. z ist dann
> aber konstant und im laufendem Programm nicht mehr veränderbar.

Ne, beim Keil C51 kann man memory specific pointer angeben:

> unsigned int code *z;

bedeutet, daß z ein Zeiger auf unsigned int im Code-memory ist.

z selber ist natürlich veränderbar, sonst würde ja die nachfolgende 
Zuweisung nicht klappen, d.h. z ist im RAM oder in Registern.


Peter

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