Forum: Mikrocontroller und Digitale Elektronik EEPROM Emulation


von matze (Gast)


Lesenswert?

Hallo,

ich habe ein Projekt übernommen (Programmiersprache C, Compiler C30, 
Mplab), bei dem auf einem Pic p24FJ256GB ein EEPROM, mittels der von 
Microchip verfügbaren Bibliothek,implementiert wurde.
Nun habe ich ein Problem während des Programmierens.
Ich habe mitbekommen, dass man in dem LinkerScript Platz für den EEPROM 
freistellen muss. Leider weiß ich nicht genau wie das geht und die 
App-Note hat mir auch nicht weiterhelfen können.
In der Emulationsheader-Datei sind folgende Werte:

// User defined constants
#define DATA_EE_BANKS       1
#define DATA_EE_SIZE        20
#define DATA_EE_TOTAL_SIZE  (DATA_EE_BANKS * DATA_EE_SIZE)
#define ERASE               0x4042
#define NUM_DATA_EE_PAGES   5
#define PROGRAM_ROW         0x4001
#define PROGRAM_WORD        0x4003

Im LinkerScript steht:

MEMORY
{
  data  (a!xr)   : ORIGIN = 0x800,         LENGTH = 0x4000
  reset          : ORIGIN = 0x0,           LENGTH = 0x4
  ivt            : ORIGIN = 0x4,           LENGTH = 0xFC
  aivt           : ORIGIN = 0x104,         LENGTH = 0xFC
  program (xr)   : ORIGIN = 0x200,         LENGTH = 0x2A9F8
  config4        : ORIGIN = 0x2ABF8,       LENGTH = 0x2
  config3        : ORIGIN = 0x2ABFA,       LENGTH = 0x2
  config2        : ORIGIN = 0x2ABFC,       LENGTH = 0x2
  config1        : ORIGIN = 0x2ABFE,       LENGTH = 0x2
}

1. Bestimmt "PROGRAM_ROW", bzw. "PROGRAM_WORD" die Position im Speicher?
2. Wenn nein, wie bzw. wo muss ich den Anfang des EEPROMs im Speicher 
festlegen?
3. Wie geb ich im LinkerScript den für das EEPROM benötigten 
Speicherbereich an?
Hoffe jemand hatte dasselbe Problem bzw. jemand kann mir weiterhelfen.

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.