Alex74 schrieb:
Um noch ein wenig auf Jörgs Antwort aufzubauen
> Es wäre nett, wenn ihr mir etwas auf die Sprünge helfen könntet.
Das einzige was in deinem Codeausschnitt Standard-C ist (neben dem
ganzen Datentyp Geplänkel), ist das (tatsächliche) Schlüsselwort
'volatile'. Und was es damit auf sich hat, kannst du hier
FAQ: Was hat es mit volatile auf sich
nachlesen.
Alles andere ist herstellerspezifisch.
Man kann das machen, was im amerikanischen Sprachgebrauch ein "educated
guess" genannt wird.
Also: wenn ich raten müsste, dann würde ich vermuten, dass damit so was
wie Pseudovariablen (zb GPIO_PORTJ) eingeführt werden, und diese im
Adressraum des Prozessors an bestimmte Hardwareadressen festgenagelt
werden. Warum? Weil genau an diesen Adressen der Prozessor seine
Steuerregister einblendet. Daraus folgt auch, dass hier der
COmpiler/Linker nicht einfach diese Register-Variablen, so wie bei
anderen Variablen, einfach irgendwo in den Speicher pappen darf, sondern
dass diese Register-Zugriffs-Variablen an genau definierten Stellen im
Adressraum liegen müssen. Also im Prinzip sowas wie: Im Grunde kannst du
in einem Haus die Gasanschlüsse machen wo du willst. Nur einer nicht -
der Hausanschluss der von der Strasse kommt. Der liegt schon in der Erde
und wenn du dein Haus baust, dann musst du zwingend den Hausanschluss an
dieses Rohr anschliessen, dessen Position der AUstrittsöffnung fix
vorgegeben ist.
Und dieser sfr - absolute Mechanismus macht genau das, für die Dinge,m
die eben hardwaremässig vorgegeben sind.
Das wäre mein 'educated guess'
Genaueres weiß der Compiler-Hersteller.