ich habe tatsächlich eine sam3x8e.pp gefunden.
Sehr interessant, dort sind die ganzen Register wohl definiert.
und auch die Interrupt Vectoren Tabelle und Nummern wie sie im Speicher abgelegt werden.
So ähnlich (leider in C) sieht es bei meinem LPC1768 Controller von NXP (ebenfalls ein Cortex M3) auch aus.
Was ich etwas vermisse, vieleicht gibt es das ja, sind die Bit Records.
Also wie die Bits in einem Register verteilt sind. Quasi eine Varianten Record.
Hier erledigt der Compiler dann die Ausmaskierung bzw. die Bitschieberei bei Register Zugriffen:
Code: Alles auswählen
typedef unsigned int U32; /* 32 Bit without sign */
typedef volatile union
{
struct
{
U32 Revision : 4; // [0..3] Revision nunber, the p value in the rnpn product revision identifier 0x0 = r2p0
U32 PartNo : 12; // Part number of the processor: 0x23 = Cortex-M3
U32 Constant : 4; // read as 0x0F
U32 Variant : 4; // Variante number, the r value ist the rnpn product revision identifier
U32 Implementer : 8; // Implementer code: 0x41 = ARM
} bits;
U32 value;
} CPUID_TypeDef;
#define LPC_CPUID (*(CPUID_TypeDef *)(0xE000ED00))