EEPROM array in ein SRAM array casten

Gast #1394686
Lesenswert?

Kann man ein EEPROM array in ein SRAM array casten?

Bsp.
ich habe eine Funktion:

unsigned char cp(unsigned char* array1,unsigned char* array1){}

nun möchte ich mit dieser Funktion Daten aus dem EEPROM vergleichen mit 
Daten aus dem SRAM.

also:
1
eeprom unsigned char eep_arr[10]={1,2,3,4,5,6,7,8,9,0};
2
unsigned char arr[10]={1,2,3,4,5,6,7,8,9,0};
3

4
cp(eep_arr,arr);                    // das gefällt dem Compiler nicht
5
cp((unsigned char)eep_arr,arr);     //das gefällt dem Compiler, aber ist dies auch das was ich beabsichtige?
6
cp((unsigned char*)eep_arr,arr);    //das gefällt dem Compiler auch, aber ist dies auch das was ich beabsichtige?

Leider kann ich dies nicht in der Hardware testen, deshalb meine Frage.
#1394703
Lesenswert?

Jürgen schrieb:
> Kann man ein EEPROM array in ein SRAM array casten?

Können tust du schon, der Compiler kann sich gegen einen Cast nicht 
wehren. Ein Cast ist schlieslich das ultimate Mittel eines 
C-Programmierers, wie er dem Compiler so ziemlich alles unterjubeln 
kann.
Aber richtig ist es nicht.
Und das liegt daran, dass man auf Daten im EEPROM anders zugreifen muss, 
als auf Daten im SRAM.

Du hast 2 Möglichkeiten:
* entweder du schreibst dir selbst eine spezielle cp-Funktion, die weiß,
  dass zb. der 2-te Parameter ein Pointer auf Daten im EEPROM ist, und
  das entsprechend berücksichtigt
* oder du zerteilst die Operation in 2 Schritte
  a) die Daten aus dem EEPROM in ein Hilfsarray im SRAM lasen
  b) damit hast du dann die zu vergleichenden Daten beide im SRAM
     vorliegen und kannst deine ursprüngliche cp-Funktion benutzen.

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