EEPROM array in ein SRAM array casten

Gast #1394686
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.
Gast
Natürlich ist das falsch:
unsigned char cp(unsigned char* array1,unsigned char* array1){}

und so ist es Richtig:
unsigned char cp(unsigned char* array1,unsigned char* array2){}
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.
Gast
>Und das liegt daran, dass man auf Daten im EEPROM anders zugreifen muss,
als auf Daten im SRAM.
ok, hab ich mir fast gedacht, aber gewust hab ich es nicht.

Danke!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.