Forum: Mikrocontroller und Digitale Elektronik Was macht diese Befehlszeile?


von Hans W. (hans_wurst)


Lesenswert?

Hallo,

ich bin gerade dabei Einstellungen für den Watchdog in meinem AVR 
vorzunehmen und dabei auf diese Seite gestoßen:
http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html

Dort ist die nachfolgende Zeile beschrieben, die mir ein wenig 
rätselhaft erscheint (aber sicher nicht Watchdog-Spezifisch ist):
1
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));

Kann mir jemand sagen was in dieser Zeile genau passieren soll? Meine 
Vermutung ist, dass hier dem Linker gesagt wird wo er die Variable 
ablegen soll, aber so ganz sicher bin ich mir trotzdem nicht. Abgesehen 
davon habe ich bisher nirgends einen Bereich ".noinit" 
verwendet/vorgesehen.

von Uhu U. (uhu)


Lesenswert?

Hans Wurst schrieb:
> Meine
> Vermutung ist, dass hier dem Linker gesagt wird wo er die Variable
> ablegen soll, aber so ganz sicher bin ich mir trotzdem nicht.

So ist es. Die Variable soll im uinitialisierten Datensegment liegen.

von Hans W. (hans_wurst)


Lesenswert?

Ok, danke dir für die Antwort.
Das mit dem "uninitialisierten Datensegment" ist mir allerdings noch 
nicht absolut klar. (was genau macht ihn aus? wo liegt er gewöhnlich im 
Speicher?...)
Kennt jemand eine Seite auf der diese verschiedenen Speicheraufteilungen 
gut/anschaulich beschrieben sind?

von Yalu X. (yalu) (Moderator)


Lesenswert?


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.