Gast
#1936422
Ich habe hier den C-Compiler von Renesas fuer SH. Fuer den liefert
Renesas ein File fuer die Registerdefinitionen der CPUs mit.
Das sieht in etwa so aus:
struct st_iic3 { /* struct IIC3 */
union { /* ICCR1 */
_UBYTE BYTE; /* Byte Access */
struct { /* Bit Access */
_UBYTE ICE:1; /* ICE */
_UBYTE RCVD:1; /* RCVD */
_UBYTE MST:1; /* MST */
_UBYTE TRS:1; /* TRS */
_UBYTE CKS:4; /* CKS */
} BIT; /* */
} ICCR1; /* */
[einiges gekuerzt]
union { /* NF2CYC */
_UBYTE BYTE; /* Byte Access */
struct { /* Bit Access */
_UBYTE :6; /* */
_UBYTE PRS:1; /* PRS */
_UBYTE NF2CYC:1; /* NF2CYC */
} BIT; /* */
} NF2CYC; /* */
}; /* */
#define IIC3_1 ( *(volatile struct st_iic3 *) 0xFFFEE400 ) /* IIC3_1
Address */
Ein Zugriff auf ein Bit ist dann zum Beispiel einfach so moeglich:
IIC3_1.ICCR1.BIT.ICE = 1;
Ich wuerde gerne dieses File auch unter dem gcc nutzen. Der Prozessor
hat eine ganze Menge Register und das File ist 600kbyte gross. Das
schreibt man nicht mal eben so neu.
Es ist auch kein Problem das einzubinden und ich habe damit auch schon
einiges programmiert. Es sollte also funktionieren. Allerdings habe ich
hier auch einen relativ schlichten Programmteil (i2c-bus) der mit dem
Compiler von Renesas funktioniert, mit dem gcc aber nicht.
Daher meine Frage ob soetwas portabel ist, oder ob es sein kann das der
gcc die Reihenfolge der Bits oder anderer Elemente umsortiert?
Olaf