Forum: Compiler & IDEs Was bedeutet ((progmem))?


von Markus (Gast)


Lesenswert?

Hi,
bin grad in nem Sourcecode über folgendes gestolpert:
static char _attribute_ ((progmem))

Bedeutet das das man Konstanten im Flash ablegen kann? Und was bedeutet
_attribute_? (doppelte Unterstriche vor und hinter attribute, falls
das Script das ändern sollte)

mfg

von Rolf Magnus (Gast)


Lesenswert?

> bin grad in nem Sourcecode über folgendes gestolpert:
> static char _attribute_ ((progmem))

Und diese Variable hatte keinen Namen?

> Bedeutet das das man Konstanten im Flash ablegen kann?

Ja.

> Und was bedeutet _attribute_?

Das ist eine GCC-Erweiterung, um Funktionen, Objekten und Typen
Attribute geben zu können.

von Markus (Gast)


Lesenswert?

Es gibt schon nen Namen, aber der spielt ja keine Rolle.

Aber das mit dem Attribut hab ich noch nicht ganz kapiert.

static char _attribute_ ((progmem)) IrgendeinArray[] = {1,2,3,4};

Was oder wo ist da das Attribut? Steht das irgendwo beschrieben? Hab
darüber noch nix gefunden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dann lies dir bitte die avr-libc-Doku durch.
(Oder die GCC-Doku für eine allgemeine Beschreibung.)

von Markus (Gast)


Lesenswert?

Ich les schon seit 2 Stunden und hab auch schon versucht zu suchen.
Leider bin ich noch nicht fündig geworden und hab ehrlich gesagt auch
schon aufgegeben. Ein genauerer Hinweis wäre ganz nett

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html
http://gcc.gnu.org/onlinedocs/gcc-3.4.5/gcc/Attribute-Syntax.html#Attribute-Syntax

(In etwas älteren Versionen sicher alles auch auf deiner Platte
zu finden, aber dafür kann ich dir schlecht einen locator
anbieten. ;-)

von Markus (Gast)


Lesenswert?

Ah, thx. Das mit pgmspace hab ich schon gefunden. Und bei der GNU C Doku
selber hatte ich zugegebenermaßen nicht geschaut. Dachte das wäre im
WinAVR Paket mit dabei.

btw: ich hab in nem anderen Thread schonmal gefragt: ich hab hier immer
noch nur die WinAVR Version vom Februar. Ist das Projekt eingestellt und
wird nur noch an den einzelnen Baustellen gearbeitet oder gibt es auch
mal wieder ein Komplettpaket zum Installieren? Ich tu mich nämlich noch
echt schwer bei sowas und würde mich freuen wenn's wieder mal was DAU
taugliches gibt

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Und bei der GNU C Doku selber hatte ich zugegebenermaßen nicht
> geschaut. Dachte das wäre im WinAVR Paket mit dabei.

Ist sie ja auch. ;-)

> btw: ich hab in nem anderen Thread schonmal gefragt: ich hab hier
> immer noch nur die WinAVR Version vom Februar. Ist das Projekt
> eingestellt und wird nur noch an den einzelnen Baustellen gearbeitet
> oder gibt es auch mal wieder ein Komplettpaket zum Installieren?

Das Projekt ist nicht eingestellt, aber es ist letztlich praktisch
eine one-man-show, die zu einem guten Teil in der Freizeit von Eric
Weddington abläuft.

von Markus (Gast)


Lesenswert?

> Ist sie ja auch. ;-)

Echt? Ich hab mit ner Volltextsuche danach gesucht und nix gefunden.
Naja, egal.

> Das Projekt ist nicht eingestellt, aber es ist letztlich praktisch
> eine one-man-show, die zu einem guten Teil in der Freizeit von Eric
> Weddington abläuft.

Hab ich vollstes Verständniss. Aber ich denke es gibt hier jede Menge
fähiger Leute die hier ein wenig nachhelfen könnten. Ich gehöre leider
(noch) nicht dazu, sonst würde ich das machen. Vielleicht finden sich
ja ein paar bereitwillige die das Projekt unterstützen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich glaube, Erics Problem ist, dass das ganze Projekt derzeit als
one-man-show aufgezogen ist und nicht wirklich `shareable'.

Ich habe ihm schon paar Ideen unterbreitet, wie man das aufteilen kann
(ein Gerippe für die Paketverwaltung und einzelne kleine Päckchen für
die Tools, damit entkoppelt man die Sache, kann die einzelnen Tools
schneller aktualisieren bzw. diese Arbeit auch teilweise an andere
abgeben).  Findet er auch gut.  Nur: wenn man das jetzt implementiert,
würde sich das nächste WinAVR natürlich noch weiter rausziehen.  Also
wird wohl die nächste Version, damit sie nun endlich überhaupt mal
fertig wird, als Monolith gezimmert wie bisher, mit der Konsequenz,
dass Eric das letztlich weitgehend allein fertigstellen muss.

von ope (Gast)


Lesenswert?

was für Änderungen müssen am gcc,binutils/gdb denn durchgeführt werden,
die nicht durch den configure Prozess eingestellt werden können
(binary-prefix= avr, host=, target= etc.)? Oder betreffen die
Änderungen die anderen "Beigaben"?

Viele Grüße
Olaf

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patches.

von ope (Gast)


Lesenswert?

Mmh, kann ich das so deuten, das die AVR Implementationen der
gcc/binutils distributions fehlerhaft sind, oder was soll gepatched
werden? Am Installer oder Programmer's Notepad kann/sollte es doch
nicht liegen.

Viele Grüße
Olaf

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> ...oder was soll gepatched
> werden?

Zum Bleistift:

. binutils: AVR-COFF-Implementierung, neue AVR-Typen
. GCC: 0b binary constants, neue AVR-Typen
. GDB: zwei kleine Bugs, die nur bei AVR auftreten
...

Dazu kommen sicher noch Win32-typische Patches (von denen ich keine
Ahnung habe).

von Peter Fleury (Gast)


Lesenswert?

Ein komplettes WinAVR Paket braucht es eigentlich gar nicht mehr.

Dank der neuen AVRStudio Version braucht man neben dem AVR-GCC
eigentlich keine weiteren Tools mehr.

Ich habe erfolgreich AVR-GCC (GCC 3.4.5) mit aktuellem binutils und
AVRlibc) sowie zum Vergleich auch mit GCC 4.0.2 mittels MSYS und MinGW
auf WinXP erstellt.

Für den ersten Einstieg in die AVR Programmierung genügt das aktuelle
WinAVR.

Wen man sich intensiver damit beschäftigen will, sollte man sich die
Zeit nehmen, selbst ein Packet zu kompilieren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Dank der neuen AVRStudio Version braucht man neben dem AVR-GCC
> eigentlich keine weiteren Tools mehr.

Vorausgesetzt, man will AVR Studio nehmen und sich auf die von diesem
unterstützten Programmieradapter beschränken. ;-)  (Außerdem brauchst
du natürlich in jedem Falle noch binutils und avr-libc.)

Man hat eigentlich natürlich auch noch nie WinAVR unbedingt gebraucht,
selbst compilieren ging schon immer...  In der Unix-Welt ist das lange
Zeit gang und gäbe gewesen.

von Peter Fleury (Gast)


Lesenswert?

Zur Frage des OP:
Das neue AVRStudio hat eine Menuoption "avr-libc Reference Manual"
unter Help.

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.