Forum: Mikrocontroller und Digitale Elektronik Arrays im Flash


von Owen S. (senmeis)


Lesenswert?

Hallo,

in der Keil-Dokumentation ist diese Beschreibung von const zu lesen: 
http://www.keil.com/support/man/docs/c166/c166_le_const.htm

Kann man damit sicher sagen, die Elemente folgendes Arrays sind im Flash 
gespeichert?
1
static const UINT8 aucCRCHi[] = {
2
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
3
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
4
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
5
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
6
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
7
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
8
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
9
    0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
10
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
11
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
12
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
13
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
14
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
15
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 
16
    0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
17
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
18
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 
19
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
20
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
21
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
22
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
23
    0x00, 0xC1, 0x81, 0x40
24
};
Ciao
Senmeis

von Thomas E. (thomase)


Lesenswert?

Owen Senmeis schrieb:
> Kann man damit sicher sagen, die Elemente folgendes Arrays sind im Flash
> gespeichert?

Was soll diese Frage?

Compilier das einmal mit und einmal ohne dein Array und guck dir die 
Größe des Programmspeichers an.

mfg.

von minifloat (Gast)


Lesenswert?

Owen Senmeis schrieb:
> folgendes Arrays sind im Flash
>
> gespeichert?

Die Frage lautet: wird das Array bei Ausführung des Programmes direkt 
aus dem Flash gelesen oder zu Beginn in den RAM kopiert?
mfg mf

von Arne (Gast)


Lesenswert?

Schau doch ins MAP File. Wenn der Linker Platz im RAM reserviert, 
besteht Handlungsbedarf (#pragma o.ä.).

von Oliver (Gast)


Lesenswert?

Owen Senmeis schrieb:
> in der Keil-Dokumentation ist diese Beschreibung von const zu lesen:
> http://www.keil.com/support/man/docs/c166/c166_le_const.htm

Und was steht dort? Gebabelsfished das hier:

In ANSI C, wird die const Art nähere Bestimmung benutzt, um auf 
Gegenstände zu definieren und zurückzugreifen, die konstant sind und die 
möglicherweise nicht geändert werden können. Eine Variable, die mit 
const erklärt wird, kann möglicherweise nicht im Programm zugewiesen 
werden. Der Compiler C166 verlängert die ANSI-Definition der const 
Gegenstände, um zu bedeuten, dass sie im Read-only-- oder ROM-Speicher 
gespeichert werden. Gegenstände, die Sie in ROM lokalisieren möchten, 
müssen mit der const Art nähere Bestimmung erklärt werden. Z.B.: const 
Putzfrautest [] = " Dieses ist ein Text string" ; Konstante Gegenstände 
werden gewöhnlich initialisiert, wenn sie definiert werden (in Ihren 
Quellakten). Sie werden in eine CONST Kategorie gesetzt, die gewöhnlich 
im ROM-Raum durch das Verknüpfungsprogramm sitzt.

Owen Senmeis schrieb:
> Kann man damit sicher sagen, die Elemente folgendes Arrays sind im Flash
> gespeichert?

Man kann. Aber wie schon gesagt wurde, absolute Gewissheit bringt der 
Blick ins map-file.

Oliver

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Die Übersetzung ist wunderbar. Vorallem der Putzfrauentest. Könnte man 
doch mal Galileo vorschlagen, oder?

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.