Loginbox
Please enter your username and password into the following fields to log in.
Changes in upcoming compiler release
Subject: Changes in upcoming compiler release - Posted: 02.11.2021 - 10:59 -
AVRCo has always defined {$DATA} as being the registers plus IO space.
In older chips this led to no ambiguity and a statement like
would lead to x being stored in the register area.
For newer chips (XMEGA and UPDI chips) the registers have been moved out of normal data space. This also means that the IO page has moved in these chips.
This causes ambiguity issues in various parts of the compiler, because where previously the data space could be inferred from the address, in these later chips it cannot.
Therefore from the next release I will be prohibiting variable definitions in the DATA space, unless they are referenced.
so
will be banned, but variables of the form
will be allowed.
Older chips will not be affected.
=====================================
AVRCo hat {$DATA} immer als die Register plus IO Raum definiert.
In älteren Chips führte dies zu keiner Zweideutigkeit und eine Anweisung wie
würde dazu führen, dass x im Registerbereich gespeichert wird.
Bei neueren Chips (XMEGA- und UPDI-Chips) wurden die Register aus dem normalen Datenbereich ausgelagert. Das bedeutet auch, dass die IO-Seite bei diesen Chips verschoben wurde.
Dies führt zu Mehrdeutigkeitsproblemen in verschiedenen Teilen des Compilers, denn wo früher der Datenbereich aus der Adresse abgeleitet werden konnte, ist dies bei diesen neueren Chips nicht mehr möglich.
Daher werde ich ab der nächsten Version Variablendefinitionen im DATA-Raum verbieten, es sei denn, sie werden referenziert.
also
verboten sein, aber Variablen der Form
werden erlaubt sein.
Ältere Chips werden davon nicht betroffen sein.
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)
In older chips this led to no ambiguity and a statement like
Code
{$DATA}
var
x : byte;
var
x : byte;
would lead to x being stored in the register area.
For newer chips (XMEGA and UPDI chips) the registers have been moved out of normal data space. This also means that the IO page has moved in these chips.
This causes ambiguity issues in various parts of the compiler, because where previously the data space could be inferred from the address, in these later chips it cannot.
Therefore from the next release I will be prohibiting variable definitions in the DATA space, unless they are referenced.
so
Code
{$DATA}
var
x : byte;
var
x : byte;
will be banned, but variables of the form
Code
{$DATA}
var
x[_SCRATCH0] : byte;
var
x[_SCRATCH0] : byte;
will be allowed.
Older chips will not be affected.
=====================================
AVRCo hat {$DATA} immer als die Register plus IO Raum definiert.
In älteren Chips führte dies zu keiner Zweideutigkeit und eine Anweisung wie
Code
{$DATA}
var
x : byte;
var
x : byte;
würde dazu führen, dass x im Registerbereich gespeichert wird.
Bei neueren Chips (XMEGA- und UPDI-Chips) wurden die Register aus dem normalen Datenbereich ausgelagert. Das bedeutet auch, dass die IO-Seite bei diesen Chips verschoben wurde.
Dies führt zu Mehrdeutigkeitsproblemen in verschiedenen Teilen des Compilers, denn wo früher der Datenbereich aus der Adresse abgeleitet werden konnte, ist dies bei diesen neueren Chips nicht mehr möglich.
Daher werde ich ab der nächsten Version Variablendefinitionen im DATA-Raum verbieten, es sei denn, sie werden referenziert.
also
Code
{$DATA}
var
x : byte;
var
x : byte;
verboten sein, aber Variablen der Form
Code
{$DATA}
var
x[_SCRATCH0] : byte;
var
x[_SCRATCH0] : byte;
werden erlaubt sein.
Ältere Chips werden davon nicht betroffen sein.
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)
Merlin.
Software is a black art.

Software is a black art.

Harry 
PowerUser
Gender: 
Location:
zwischen Augsburg und Ulm
Age: 57
Posts: 2020
Registered: 03 / 2003

PowerUser


Location:

Age: 57
Posts: 2020
Registered: 03 / 2003
Subject: Re: Changes in upcoming compiler release - Posted: 02.11.2021 - 17:42 -
Sorry, aber hat das jemand verstanden und kann es mir erklaren? Und was bedeutet das für bestehende Projekte mit XMegas?
Was bewirkt/bedeutet dieses [ _SCRATCH0] ?
Gruss
Harry
Was bewirkt/bedeutet dieses [ _SCRATCH0] ?
Gruss
Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
Electronics works with smoke - if you let the smoke out, it works no longer.
Subject: Re: Changes in upcoming compiler release - Posted: 02.11.2021 - 17:54 -
Sorry Harry, not sure what went on there.
should read
_SCRATCHn is a location to store fast access bytes in some devices, but is just given as an example.
Existing XMEGA projects should be unaffected, but if they are affected then they are faulty.
Regards
Merlin
=========================================
Tut mir leid, Harry, ich weiß nicht, was da los war.
sollte lauten
_SCRATCHn ist ein Speicherplatz für schnell zugreifende Bytes in einigen Geräten, wird aber nur als Beispiel angegeben.
Bestehende XMEGA-Projekte sollten nicht betroffen sein, aber wenn sie betroffen sind, sind sie fehlerhaft.
Mit freundlichen Grüßen
Merlin
Code
x[ _SCRATCH0] : byte
should read
Code
x[@_SCRATCH0] : byte
_SCRATCHn is a location to store fast access bytes in some devices, but is just given as an example.
Existing XMEGA projects should be unaffected, but if they are affected then they are faulty.
Regards
Merlin
=========================================
Tut mir leid, Harry, ich weiß nicht, was da los war.
Code
x[ _SCRATCH0] : byte
sollte lauten
Code
x[@_SCRATCH0] : byte
_SCRATCHn ist ein Speicherplatz für schnell zugreifende Bytes in einigen Geräten, wird aber nur als Beispiel angegeben.
Bestehende XMEGA-Projekte sollten nicht betroffen sein, aber wenn sie betroffen sind, sind sie fehlerhaft.
Mit freundlichen Grüßen
Merlin
Merlin.
Software is a black art.

Software is a black art.
![]() |
Registered users in this topic Currently no registered users in this section |