Forum: Compiler & IDEs memcpy_P mega1280 bootloader


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tom (Gast)


Lesenswert?

Hallo,

ich hab hier grad ein kleines Problemchen. Der Code läuft, wenn er in 
einem "niedrigen" Speicherbereich steht (< 64k). Ist er allerdings im 
Bootloadersektor vom Atmega (0x1E000), setzt memcpy alle bits auf 1.

memcpy_P(uip_ethaddr.addr, PSTR("ac:de:48:fd:0f:d0"), 6);

Da kommt dann wenn es in der bootloader section steht nurnoch 
ff:ff:ff:ff:ff:ff raus... im unteren Programmspeicher klappts 
problemlos.

memcpy(uip_ethaddr.addr, "ac:de:48:fd:0f:d0", 6);

so tuts auch im oberen Bereich.


ist irgendwie komisch, hab ich was übersehen?


Grüße,

Euer Tom
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

memcpy_P nimmt wie memcpy 16-Bit Adressen:

   http://cvs.savannah.gnu.org/viewvc/avr-libc/libc/pmstring/memcpy_P.S?revision=1.8&root=avr-libc&view=markup

Ein void* in avr-gcc ist 16 Bit breit.

Johann
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.