Forum: Mikrocontroller und Digitale Elektronik Speicher auslesen, wie?


von Matthias G. (Firma: schueler) (rok)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

ATmega32, CodeVisionAVR

Aaalso, habe ein mehr oder weniger großes Problem...
Ich bearteite das fertige HEX-File (nach dem compile-ieren) und zwar
füge ich noch mit ner kleinen C-Software ein paar strings hinzu.
Das heißt, mein Programm liegt zB von 0x0000 - 0x4000
dann werden noch Strings hinzugefügt, zB 0x5000-0x6000
Jetzt meine Frage, wie kann ich in meinem Programm auf die Werte bzw auf
die Speicherstellen (0x5000-0x6000) zugreifen?
Mit Zeiger?

int *p;
p=0x5000;    //Das wäre mein erster Gedanke gewesen, geht aber nicht...

Error beim compilieren...

Hat wer eine Idee wie ich auf dieses Zeugs zugreifen kann????

Ich habe zur veranschaulichung ein HEX-file dazugegeben, damit ihr wisst
wie das aussieht...

Ab 0x3000 beginnen die hinzugefügten Daten...


Danke für eure Vorschläge schon im Vorraus!

lg
rok

von Peter D. (peda)


Lesenswert?

Matthias Grimmer wrote:

> Error beim compilieren...

Wasn das fürn komischer Compiler?

Schmeißn weg, ein Compiler ohne ordentliche Fehlermeldung mit 
Zeilennummer taugt nichts.

Und dann:
Copy&Paste Fehlermeldung + Soucre-Zeile, sonst wird das nix.


Peter

von Matthias G. (Firma: schueler) (rok)


Lesenswert?

der compiler schreibt:
zeile (p=0x3100;)  : missing '('

codevisionAVR eben

von Roland Z. (r-zimmermann)


Lesenswert?

Hallo,

muß Peter Dannegger zustimmen der CodeVisionAVR-Compiler hat in der 
Fehlerausgabe so seine Eigenheiten, aus diesem Grund ist der auch bei 
mir schon vor längerer Zeit von der Platte geflogen. Nimm den GCC oder 
ein kommerzielles Produkt, aber erspare dir den CodeVision-Schrott. Da 
wirst du meiner Meinung nach nicht Glücklich damit.
Falls es kommerziell sein muß, ich arbeite gerne mit dem 
Imagecraft-Compiler, ist meiner Meinung nach sehr gut das ding leider 
aber auch nicht ganz billig.

Roland

von Karl H. (kbuchegg)


Lesenswert?

int *p;

 p = (int*)0x5000;

von Matthias G. (Firma: schueler) (rok)


Lesenswert?

hm, ich hab auch schon bemerkt, dass der codevision schrott ist...
aber ich habe leider keine alternative... firmenprojekt :(
ich muss es also wohl oder übel mit codevision schaffen...

vl helfen assambler befehle weiter...

von Matthias G. (Firma: schueler) (rok)


Lesenswert?

int *p;

 p = (int*)0x5000;

hmmm, selber fehler...
<<'(' missing>>

von Karl H. (kbuchegg)


Lesenswert?

Matthias Grimmer wrote:
> int *p;
>
>  p = (int*)0x5000;
>
> hmmm, selber fehler...
> <<'(' missing>>

Poste mal etwas mehr aus der Umgebung der Zeile. 2 Zeilen
davor, 2 Zeilen danach. Das klingt nach einem Folgefehler, zumal
ja in der (originalen) Zeile keine ( vorkommt.

von Matthias G. (Firma: schueler) (rok)


Lesenswert?

Karl heinz Buchegger wrote:
> Matthias Grimmer wrote:
>> int *p;
>>
>>  p = (int*)0x5000;
>>
>> hmmm, selber fehler...
>> <<'(' missing>>
>
> Poste mal etwas mehr aus der Umgebung der Zeile. 2 Zeilen
> davor, 2 Zeilen danach. Das klingt nach einem Folgefehler, zumal
> ja in der (originalen) Zeile keine ( vorkommt.



#include <mega32.h>
#include <stdio.h>
#include <string.h>
#include "types.h"
#include "delay.h" // for wait function
#include "iinchip_conf.h"
#include "w3150a.h"
#include "main.h"

#include "util.h"
#include "sockutil.h"
#include "socket.h"
#include "httpd.h"
#include "webserver.h"

//#define WEB_DEBUG


u_char* http_response;    // Pointer to HTTP response

st_http_request *http_request;  // Pointer to HTTP request




/* http service */
void proc_http(SOCKET, u_char *, int);    // processing HTTP
char ERROR_REQUEST_PAGE[]="a";
char ERROR_HTML_PAGE[]="A";

char temp[112];


uint16 *pointer;
pointer = (uint16*)0x3100;
uint8 i;

/*
Description  : processing http protocol , and excuting the followed 
fuction.
               View the configuration of EVBARM7
               Remote LEDs Control
               Remote System Reset
               Send a Mail to SMTP Server
Argument     : None.
Return Value : None.
Note         :
*/
void web_server(u_char ch)
{



... hier beginnt dann die software...

ohne den zeiger-deklarationen lässt sich der code comilieren

von Rolf Magnus (Gast)


Lesenswert?

Eine Zuweisung kann nicht auf oberster Ebene stehen. Sie kann nur in 
einer Funktion ausgeführt werden. Mach eine Initialisierung daraus, dann 
sollte es gehen:

uint16 *pointer = (uint16*)0x3100;

von Karl H. (kbuchegg)


Lesenswert?

Matthias Grimmer wrote:
>
>
> uint16 *pointer;
> pointer = (uint16*)0x3100;
> uint8 i;

Du bist hier noch mitten in der Deklarationssektion.

pointer = (uint16*)0x3100;
ist aber eine Anweisung. Anweisungen können nur innerhalb von
Funktionen auftauchen. Was du brauchst ist eine Initialisierung!

uint16 *pointer = (uint16*)0x3100;

Auch wenn das syntaktisch sehr ähnlich aussieht, besteht doch
ein fundamentaler Unterschied zwischen einer Initialisierung
und einer Zuweisung.

von Matthias G. (Firma: schueler) (rok)


Lesenswert?

ÄRGER

so ein dummer anfängerfehler...
danke vielmals...

lg

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.