xmega.h - _PROTECTED_WRITE_SPM

OP #6877025
Lesenswert?

Hallo,

ich mach gerade mit dem Controller internen EEprom rum.
Das habe ich mit der Standard Arduino IDE gemacht.
Auch mit Boarderweiterungen klappt das.
Sobald ich jedoch eine aktuellere avr-gcc Toolchain verwende (9.4 ... 
11.2), dann ist Bspw.:
1
Arduino IDE Portable\AVR128DB\arduino-1.8.16\portable\packages\DxCore\hardware\megaavr\1.3.6\libraries\EEPROM\src/EEPROM.h:70:5: error: '_PROTECTED_WRITE_SPM' was not declared in this scope
Dann begann die Recherche was das fehlt und bin mit der xmega.h fündig 
gewurden. In all meinen Toolchain gibts in avr\include\avr\xmega.h in 
denen es jedoch nur das Makro _PROTECTED_WRITE gibt, aber nicht 
_PROTECTED_WRITE_SPM.

In der Standard Toolchain 7.3.0 die die Arduino IDE verwendet existiert 
das _PROTECTED_WRITE_SPM Makro in der xmega.h. Hat das Arduino selbst 
hinzugefügt oder ist das in späteren avr-gcc Version abhanden gekommen?
Ich stehe vor der Frage ob ich das fehlende Makro nur ergänzen muß (was 
funktioniert) oder ob dabei noch eine größere Falle lauert die ich nicht 
sehe?
Moderator Persönliche Seite #6878116
Lesenswert?

Arduino bastelt schon lange sein eigenes Zeug zusammen. Die Schöpfer des 
Projekts sind erfahrungsgemäß, naja, etwas eigenwillig und wenig 
kooperativ.

Davon abgesehen, dass ich auch endlich mal wieder einen avr-libc-Release 
machen müsste, ich sehe auch nichts in der Richtung auf Anhieb in den 
Bugs oder Patches, die bei avr-libc eingereicht worden sind. (Erst ist 
aber AVRDUDE mit einem Release dran. Für avr-libc muss ich außerdem noch 
die Patches von Johann ein wenig in ihre Einzelteile zerlegen.)
OP #6878264
Lesenswert?

Hallo Jörg,

okay, kein Problem.

Ich konnte bis jetzt nicht herausfinden seit wann das 
_PROTECTED_WRITE_SPM Makro in der xmega.h unter Arduino enthalten ist. 
Wenn es nicht von dir ist muss es ja von Arduino sein. Einen originalen 
Arduino mit XMega kenne ich nicht.
Möglicherweise kam das Makro wegen dem Arduino Nano Every in die xmega.h 
rein der einen ATmega4809 drauf hat. Der ist ja ähnlich zum AVRxDB den 
ich aktuell in der Mache habe.
Genau weiß ich es allerdings nicht, ist nur eine Vermutung. Ich binde 
das fehlende Makro erstmal zusätzlich ein damit ich weitermachen kann.

Danke für die Antwort.
OP #6878666
Lesenswert?

Hallo Jörg,

ich bin bei der Toolchain von Zakkemble fündig gewurden.
https://blog.zakkemble.net/avr-gcc-builds/
In der xmega.h bei ihm ist das _PROTECTED_WRITE_SPM enthalten.
Klickt man auf den Link "SVN with extras" > include > avr und klickt 
dann auf den Kommentar zur xmega.h, dann lese ich etwas von:
Add _PROTECTED_WRITE_SPM in xmega.h (as per Atmel's upstream 3.6.1).
Also müßte das demzufolge von Atmel stammen?

In Johann L. avr-gcc 10.0.0 Toolchain die ich noch habe ist das SPM 
Makro in seiner xmega.h nicht drin. Da ich davon ausgehe das Johann weiß 
was er tut muss das SPM Makro was spezielles sein.

Allerdings bin ich zufällig auf diesen Link gestoßen, wo davon die Rede 
ist.
https://savannah.nongnu.org/patch/?9543#comment10

Für die AVR DA/DB Serie gehört jedoch scheinbar noch mehr dazu.
https://www.avrfreaks.net/forum/avr128dx-eeprom-writing

Ich muss das noch näher durchleuchten, was genau gehauen und gestochen 
ist.
Soviel vielleicht als wichtige Info.
Moderator Persönliche Seite #6881103
Lesenswert?

Johann L. schrieb:
> was der Grund für den avr-libc3 Fork auf Github war

Da cyblord nun wohl gerade dabei ist, AVRDUDE nach Github zu migrieren 
(also insbesondere die Bug-Datenbasis), wenn du sowieso schon ein Repo 
auf Github hast, dann wäre das möglicherweise der sinnvollere Weg, 
gleich dort weiter zu machen. (Was auch immer er da scriptet, sollte 
sich ja für die Bugs von avr-libc recyceln lassen.)

Beim Integrieren deiner Patches auf Savannah bin ich letztens irgendwann 
abgestorben.

Erstmal gibt's aber einen AVRDUDE-Release, denn der ist schon genauso 
lange überfällig.
Persönliche Seite #6881518
Lesenswert?

Jörg W. schrieb:
> Beim Integrieren deiner Patches auf Savannah bin ich letztens irgendwann
> abgestorben.

Zuerst Revert von Patch 9864,  dann passt der Code von Issues 57071 und 
49567 ohne Konflikte.

Und erst dann den Xmega3-Patch. Der gibt Konflikte, aber weil Devices 
nicht mehr in configure(.ac) eingetragen werden, ist der Support 
einfacher als vorher. Einfach die Konflikte in configure(.ac) 
ignorieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren