eine speicheradresse auslesen.

OP #708696
Lesenswert?

hallo,

ich schreibe an die adressen 0x030050 bis 0x030060 werte, und möchte nun 
auf diese zugreifen, wie geht sowas ? mit pointern kann ich irgendwie 
nur die adressen von bereits vorhandenen variablen austauschen(im ram), 
die adressen die ausgelesen werden sollen stehen aber im flash....


gruß
#708703
Lesenswert?

@ Thorsten Heimberg (imonkey)

>ich schreibe an die adressen 0x030050 bis 0x030060 werte, und möchte nun
>auf diese zugreifen, wie geht sowas ? mit pointern kann ich irgendwie

Waum schreibst du auf absolute Adressen? Das hat in den meisten Fällen 
keinen Sinn. Ja das geht mit pointern.

uint8_t * my_pointer = 0x300050;

>die adressen die ausgelesen werden sollen stehen aber im flash....

Dann musst du sowieso die PGM_... Funktionen nutzen und die Pointer als 
pgm Pointer definieren.

MFG
Falk
OP #708712
Lesenswert?

also ich versuche daten die in den ram eingelesen wurden in den flsh zu 
schreiben, dazu verwende ich eine funktion die ich nem beispiel von keil 
entliehen habe, und die auch zu funktionieren scheint?

jetzt möchte ich halt mal die adresse auslesen...PGM_ funktionen ?

gruß

(mach das auch erst seit 4 wochen, jeder schritt neuland!)
Gast #708722
Lesenswert?

>also ich versuche daten die in den ram eingelesen wurden in den flsh zu
>schreiben,

>mach das auch erst seit 4 wochen, jeder schritt neuland!)

Du brauchst keine Werte ins Flash zu schreiben, egal, mit welchem 
Controller, und welchem Compiler.

Sag aber trotzdem, was du verwendest.

Und dazu, was du eigentlich erreichen möchtest.

Oliver
OP #708731
Lesenswert?

@ oliver

ich baue im rahmen meiner diplomarbeit ein messgerät das den lpc2294 als 
auswerteeinheit benutzt, dazu möchte ich Referenzdaten über den com-port
einlesen und diese dann (auch nach neuboot) zur auswertung von 
sensorsignalen heranziehen...alles geht nur nicht die ablage der 
ref.daten im eeprom oder im flash...eeprom geht gar nicht da über 
spi-interface azusteuern und da läuft überhauptnix...

Controller: phillips lpc2294
compiler: schätz auch von keil...
Persönliche Seite #708740
Lesenswert?

Du verwendest also einen Controller mit von-Neumann-Architektur.

Daher ist der Lesezugriff auf das RAM exakt dasselbe wie der Lesezugriff 
aufs Flash, beide liegen im gleichen Adressraum.

Du möchtest wohl Daten aus dem RAM ins Flash kopieren, dazu solltest Du 
Dir die entsprechenden Appnotes von Philips/NXP ansehen, wie auf dem von 
Dir verwendeten Controller das FlashROM zu beschreiben ist.


> eeprom geht gar nicht da über spi-interface azusteuern

Hä?
Persönliche Seite #708784
Lesenswert?

Ja, das ist der gleiche Adressraum, die Adress_bereiche_ unterscheiden 
sich.

Mit ein und demselben Pointer kannst Du sowohl aufs RAM als auch aufs 
Flash zugreifen:
1
  int* p;
2

3
  p = (int *) 0x40000000;
4

5
  printf("Wert aus RAM %d\n", *p);
6

7
  p = (int *) 0x00020000;
8

9
  printf("Wert aus Flash %d\n", *p);


Auf einer Harvard-Maschine wie dem AVR sieht das ganz anders aus, da 
sind Hilfskonstrukte wie "pgmspace.h" etc. erforderlich.
OP #708815
Lesenswert?

genau das habe ich gesucht!!!
den richtigen syntax...klappt auch so weit, also die adressen werden 
richtig ausgegeben bei:

printf("Wert aus Flash %x\n", &p);

nur die werte stimmen noch nicht, da muss ich nochmal über der funktion 
brüten..bzw den code hier mal posten..
vielen dank rufus!

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