www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kopieren eines langen Hexwertes auf Speicherbereich


Autor: Josef Kkk (zumlin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

hab ein kleines Problem und komm einfach auf keine gute Lösung.
Ich alloziere Speicher und will dort dann einen Block an Hexwerten 
hineinkopieren. Nur wie?
Meine erster Versuch sah so aus:
uint8_t  *data;
data = malloc(sizeof(uint8_t) * 8);
memcpy(data, (char*)0x00FFAABB, 8);
Wie schon fast erwartet kam dabei nichts gutes raus. Wie macht man das 
richtig und mit möglichst wenig Befehlszeilen? :)

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
long  *data;
data = (long*)malloc(sizeof(uint8_t) * 8);
data[0] = 0x00FFAABB;

das sollte helfen...

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

Bewertung
0 lesenswert
nicht lesenswert
> memcpy(data, (char*)0x00FFAABB, 8);

Und was steht an der Adresse 0xFFAABB?

memcpy erwartet als zweites Argument einen Pointer auf die zu 
kopierenden Daten, nicht die Daten selber.

Autor: Josef Kkk (zumlin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm. Ich bräuchte aber einen uint8_t Pointer bzw. ein Speicherfeld mit 
lauter chars.

@Rufus
Mit welchem Befehl kann man dann direkt Daten kopieren ohne vorher für 
die Daten eine Variable angelegt zu haben? Das geht doch sicher mit 
memcpy irgendwie, oder?

Autor: Phantomix Ximotnahp (phantomix) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Daten kopieren ohne vorher für die Daten eine Variable angelegt zu haben

Wenn du sie nicht vorher im Speicher abgelegt hast, kann man sie auch 
nicht kopieren. Entweder per Variable oder per Konstante auf die 
zugegriffen wird. Die Lösung des Problems kann sogar dank 
Havard-Architektur beliebig komplex werden (je nachdem, wo du deine 
Quelle gern stehen hättest)
Edit: Sofern du natürlich eine CPU mit Havard hast. bei Von-Neumann ist 
zumindest das einfacher...

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.