Forum: Mikrocontroller und Digitale Elektronik Cortex M3 , Flash mit Daten vorbelegen


von hhhhh (Gast)


Lesenswert?

hi

ich nutze den Flash meines LPC1768 als emulierten EEPROM.
nun möchte ich eine paar Daten an eine bestimmte adresse ablegen die 
auch gleich mitgeflasht werden sollen.

zur Laufzeit komme ich ohne Probleme an die Daten und kann diese auch 
manipulieren.
Nur die "Erstbelegung" funktioniert im moment nicht.

beim AVR ging das relativ entspannt für den EEPROM mit
1
uint8_t foo[16] EEMEM={
2
  [ADRESS  ]  = 0x01,
3
  [ADRESS+1]  = 0x02,   
4
  [ADRESS+2]  = 0x03...
5
};

gibts sowas auch für den ARM im FLASH adressbereich?
oder bleiben nur die
1
const uint8_t array[] __attribute__ ((section("xxx"))) = {};
mit angepastem linkerscript?


IDE ist CoIDE mit GCC 4.7


danke

von P. E. (philenotfound)


Lesenswert?

Ich habs immer so gemacht, andere Mittel und Wege sind mir nicht 
bekannt.

von hhhhh (Gast)


Lesenswert?

hi

hmm mit linkerscript will das auch nicht so richtig laufen...

er legt es immer am ende der restlichen .text  daten an ...

von P. E. (philenotfound)


Lesenswert?

Poste doch mal dein Linkerscript.

von hhhhh (Gast)


Lesenswert?

hi

weiß nicht ob das so richtig ist ...
bin in sachen linker nicht so fit, habe bisher nur die automatischen 
sachen genutzt.
1
MEMORY
2
{
3
  rom  (rx)   : ORIGIN = 0x00000000, LENGTH = 480K
4
  rom1  (rx)  : ORIGIN = 0x00078000, LENGTH = 32K
5
  ram  (rwx)  : ORIGIN = 0x10000000, LENGTH = 32K
6
  ram1 (rwx)  : ORIGIN = 0x2007C000, LENGTH = 32K
7
}
8
9
SECTIONS 
10
{ 
11
    .eeprom : ALIGN(4);
12
    {    
13
  *(.eeprom)
14
  . = ALIGN(4);
15
    } > rom1   
16
...
17
18
19
in der main dann über: 
20
__attribute__((__section__(".eeprom"),used))

in der .map liegt das array jedoch woanders ...
1
.rom1           0x00016ac0       0x10

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.