mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Speicher auslesen, wie?


Autor: Matthias Grimmer (Firma: schueler) (rok)
Datum:
Angehängte Dateien:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Matthias Grimmer (Firma: schueler) (rok)
Datum:

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

codevisionAVR eben

Autor: Roland Z. (r-zimmermann)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int *p;

 p = (int*)0x5000;

Autor: Matthias Grimmer (Firma: schueler) (rok)
Datum:

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

Autor: Matthias Grimmer (Firma: schueler) (rok)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int *p;

 p = (int*)0x5000;

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Matthias Grimmer (Firma: schueler) (rok)
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Matthias Grimmer (Firma: schueler) (rok)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ÄRGER

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

lg

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.