mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik eine speicheradresse auslesen.


Autor: Thorsten Heimberg (imonkey)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für ein Controller ist das? Harvard- oder von-Neumann-Architektur?

In welcher Programmiersprache versuchst Du Dich?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorsten Heimberg (imonkey)
Datum:

Bewertung
0 lesenswert
nicht 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!)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WELCHER Controller ist das?

WELCHE Programmiersprache verwendest Du?

(Das erinnert mich irgendwie an Haare und Nasen)

Autor: Thorsten Heimberg (imonkey)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein lpc 2294 den ich mit C programmiere, die entwicklungsumgebung ist 
keil µVision..

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorsten Heimberg (imonkey)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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ä?

Autor: Thorsten Heimberg (imonkey)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich verwende einen real-view-compiler...

@rufus
ram-adressraum 0x4000 0000 bis 0x4000 1FFF
flash-adressraum 0x0002 0000 bis 0x0004 0000
und das ist dann der gleiche adressraum?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
  int* p;

  p = (int *) 0x40000000;

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

  p = (int *) 0x00020000;

  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.

Autor: Thorsten Heimberg (imonkey)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> printf("Wert aus Flash %x\n", &p);

Das ist auch falsch, hier gibst Du die Adresse aus, an der die Variable 
p gespeichert ist.

Statt des & solltest Du schon ein * verwenden, wie ich es auch angegeben 
habe.

Autor: Thorsten Heimberg (imonkey)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rufus das stimmt schon, ich WILL ja die adresse ausgegeben bekommen,
danach folgt dan der syntax für den wert...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.