Hello, Could you update CVS / GIT / BZR, thank you
PS : Don't hesitate to correct the document if you found some mistakes
#ifndef __MSP430_HEADERS_SYS_H #define __MSP430_HEADERS_SYS_H /* sys.h * * mspgcc project: MSP430 device headers * system control module * * (c) 2008 by Sergey A. Borshch <[email protected]> * Originally based in MSP430F543x datasheet (slas609) * and MSP430x5xx Family User's Guide (slau208). * * $Id: sys.h,v 1.3 2009/02/28 12:14:53 sb-sf Exp $ * * 2009-09-08 - THLN * - definition updated with flexible base address * based on Texas Instruments document : "MSP430x5xx Family User's Guide - SLAU208 Revised July 2010" * */ /* Switches: __MSP430_SYS_BASE__ - define base address of SYS module (default is 0x180) */ /* System base address */ #if !defined(__MSP430_SYS_BASE__) #define __MSP430_SYS_BASE__ 0x180 #endif #define SYSCTL_ __MSP430_SYS_BASE__ + 0x00 /* System control register */ sfrw(SYSCTL, SYSCTL_); #define SYSCTL_L_ __MSP430_SYS_BASE__ + 0x00 /* low byte */ sfrb(SYSCTL_L, SYSCTL_L_); #define SYSCTL_H_ __MSP430_SYS_BASE__ + 0x01 /* high byte */ sfrb(SYSCTL_H, SYSCTL_H_); #define SYSBSLC_ __MSP430_SYS_BASE__ + 0x02 /* Bootstrap loader configuration register */ sfrw(SYSBSLC, SYSBSLC_); #define SYSBSLC_L_ __MSP430_SYS_BASE__ + 0x02 /* low byte */ sfrb(SYSBSLC_L, SYSBSLC_L_); #define SYSBSLC_H_ __MSP430_SYS_BASE__ + 0x03 /* high byte */ sfrb(SYSBSLC_H, SYSBSLC_H_); #define SYSARB_ __MSP430_SYS_BASE__ + 0x04 /* Arbitration configuration register */ sfrw(SYSARB, SYSARB_); #define SYSARB_L_ __MSP430_SYS_BASE__ + 0x04 /* low byte */ sfrb(SYSARB_L, SYSARB_L_); #define SYSARB_H_ __MSP430_SYS_BASE__ + 0x05 /* high byte */ sfrb(SYSARB_H, SYSARB_H_); #define SYSJMBC_ __MSP430_SYS_BASE__ + 0x06 /* JTAG Mailbox control register */ sfrw(SYSJMBC, SYSJMBC_); #define SYSJMBC_L_ __MSP430_SYS_BASE__ + 0x06 /* low byte */ sfrb(SYSJMBC_L, SYSJMBC_L_); #define SYSJMBC_H_ __MSP430_SYS_BASE__ + 0x07 /* high byte */ sfrb(SYSJMBC_H, SYSJMBC_H_); #define SYSJMBI0_ __MSP430_SYS_BASE__ + 0x08 /* JTAG Mailbox input register #0 */ sfrw(SYSJMBI0, SYSJMBI0_); #define SYSJMBI0_L_ __MSP430_SYS_BASE__ + 0x08 /* low byte */ sfrb(SYSJMBI0_L, SYSJMBI0_L_); #define SYSJMBI0_H_ __MSP430_SYS_BASE__ + 0x09 /* high byte */ sfrb(SYSJMBI0_H, SYSJMBI0_H_); #define SYSJMBI1_ __MSP430_SYS_BASE__ + 0x0A /* JTAG Mailbox input register #1 */ sfrw(SYSJMBI1, SYSJMBI1_); #define SYSJMBI1_L_ __MSP430_SYS_BASE__ + 0x0A /* low byte */ sfrb(SYSJMBI1_L, SYSJMBI1_L_); #define SYSJMBI1_H_ __MSP430_SYS_BASE__ + 0x0B /* high byte */ sfrb(SYSJMBI1_H, SYSJMBI1_H_); #define SYSJMBO0_ __MSP430_SYS_BASE__ + 0x0C /* JTAG Mailbox output register #0 */ sfrw(SYSJMBO0, SYSJMBO0_); #define SYSJMBO0_L_ __MSP430_SYS_BASE__ + 0x0C /* low byte */ sfrb(SYSJMBO0_L, SYSJMBO0_L_); #define SYSJMBO0_H_ __MSP430_SYS_BASE__ + 0x0D /* high byte */ sfrb(SYSJMBO0_H, SYSJMBO0_H_); #define SYSJMBO1_ __MSP430_SYS_BASE__ + 0x0E /* JTAG Mailbox output register #1 */ sfrw(SYSJMBO1, SYSJMBO1_); #define SYSJMBO1_L_ __MSP430_SYS_BASE__ + 0x0E /* low byte */ sfrb(SYSJMBO1_L, SYSJMBO1_L_); #define SYSJMBO1_H_ __MSP430_SYS_BASE__ + 0x0F /* high byte */ sfrb(SYSJMBO1_H, SYSJMBO1_H_); #define SYSBERRIV_ __MSP430_SYS_BASE__ + 0x18 /* Bus error vector generator */ sfrw(SYSBERRIV, SYSBERRIV_); #define SYSUNIV_ __MSP430_SYS_BASE__ + 0x1A /* User NMI vector generator */ sfrw(SYSUNIV, SYSUNIV_); #define SYSSNIV_ __MSP430_SYS_BASE__ + 0x1C /* System NMI vector generator */ sfrw(SYSSNIV, SYSSNIV_); #define SYSRSTIV_ __MSP430_SYS_BASE__ + 0x1E /* System reset vector generator */ sfrw(SYSRSTIV, SYSRSTIV_); /* SYSCTL, SYSCTL_L */ #define SYSJTAGPIN (1<<5) /* Dedicated JTAG pins enable */ #define SYSBSLIND (1<<4) /* TCK/RST entry BSL indication detected */ #define SYSPMMPE (1<<2) /* PMM access protect */ #define SYSRIVECT (1<<0) /* RAM based interrupt vectors */ /* SYSBSLC, SYSBSLC_L, SYSBSLC_H */ #define SYSBSLPE (1<<15) /* BSL memory protection enable */ #define SYSBSLOFF (1<<14) /* BSL memory disable for size covered in SYSBSLSIZE */ #define SYSBSLR (1<<2) /* RAM assigned to BSL */ #define SYSBSLSIZE1 (1<<1) /* BSL size */ #define SYSBSLSIZE0 (1<<0) /* BSL size */ #define SYSBSLSIZE_0 (0<<0) /* size 512 bytes, BSL_SEG_3 */ #define SYSBSLSIZE_1 (1<<0) /* size 1024 bytes, BSL_SEG_2,3 */ #define SYSBSLSIZE_2 (2<<0) /* size 1536 bytes, BSL_SEG_1,2,3 */ #define SYSBSLSIZE_3 (3<<0) /* size 2048 bytes, BSL_SEG_0,1,2,3 */ /* SYSJMBC, SYSJMBC_L */ #define JMBCLR1OFF (1<<7) /* Incomming JTAG mailbox 1 flag auto-clear disable */ #define MBCLR0OFF (1<<6) /* Incomming JTAG mailbox 0 flag auto-clear disable */ #define JMBMODE (1<<4) /* Operation mode of JMB for JMBI0/1 and JMBO0/1 */ #define JMBOUT1FG (1<<3) /* Outgoing JTAG mailbox 1 flag */ #define JMBOUT0FG (1<<2) /* Outgoing JTAG mailbox 0 flag */ #define JMBIN1FG (1<<1) /* Incoming JTAG mailbox 1 flag */ #define JMBIN0FG (1<<0) /* Incoming JTAG mailbox 0 flag */ #ifndef __ASSEMBLER__ /* Structured declaration */ #undef __xstr #undef __str #define __xstr(x) __str(x) #define __str(x) #x typedef struct { union { volatile unsigned int CTL; /* System control register */ struct { volatile unsigned char CTL_L; /* low byte */ volatile unsigned char CTL_H; /* high byte */ }; }; union { volatile unsigned int BSLC; /* Bootstrap loader configuration register */ struct { volatile unsigned char BSLC_L; /* low byte */ volatile unsigned char BSLC_H; /* high byte */ }; }; union { volatile unsigned int ARB; /* Arbitration configuration register */ struct { volatile unsigned char ARB_L; /* low byte */ volatile unsigned char ARB_H; /* high byte */ }; }; union { volatile unsigned int JMBC; /* JTAG Mailbox control register */ struct { volatile unsigned char JMBC_L; /* low byte */ volatile unsigned char JMBC_H; /* high byte */ }; }; union { volatile unsigned int JMBI0; /* JTAG Mailbox input register #0 */ struct { volatile unsigned char JMBI0_L; /* low byte */ volatile unsigned char JMBI0_H; /* high byte */ }; }; union { volatile unsigned int JMBI1; /* JTAG Mailbox input register #1 */ struct { volatile unsigned char JMBI1_L; /* low byte */ volatile unsigned char JMBI1_H; /* high byte */ }; }; union { volatile unsigned int JMBO0; /* JTAG Mailbox output register #0 */ struct { volatile unsigned char JMBO0_L; /* low byte */ volatile unsigned char JMBO0_H; /* high byte */ }; }; union { volatile unsigned int JMBO1; /* JTAG Mailbox output register #1 */ struct { volatile unsigned char JMBO1_L; /* low byte */ volatile unsigned char JMBO1_H; /* high byte */ }; }; unsigned int dummy[4]; volatile unsigned int BERRIV; /* Bus error vector generator */ volatile unsigned int UNIV; /* User NMI vector generator */ volatile unsigned int SNIV; /* System NMI vector generator */ volatile unsigned int RSTIV; /* System reset vector generator */ } sys_t; sys_t SYS asm(__xstr(__MSP430_SYS_BASE__)); #endif /* __ASSEMBLER__ */ #endif /* __MSP430_HEADERS_SYS_H */
