Speicher auslesen, wie?

OP (Firma: schueler) #693284
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
Angehängte Dateien:
#693289
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
#693309
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.
OP (Firma: schueler) #693314
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
Gast #693354
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;
#693356
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.

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