Hi Dmitry & Others,

I thought I would have a look at the state of gcc-3.4.3 with a view of trying to find some of the problems now that I had some free time.

When I compile the attached pre-processed file I get the following error,

[peter_...@sts-43454 AWS2003.1.1.C011]$ msp430-gcc -O2 -DTARGET -mmcu=msp430x149 -g -Wno-main -Wall -Werror -Wno-format -I./include -Ibl/include -Iblbl/include -Iblblbl/include -c blbl/lib/flash/flash.c -o lib/flash/msp430x149/flash.o --save-temps
blbl/lib/flash/flash.c: In function `flashLocked':
blbl/lib/flash/flash.c:125: internal compiler error: Segmentation fault

A seg fault looks like a bad thing, but might not be that hard to track down(?)

Does anyone know where I should start looking?

Regards,

--
Peter Jansen
STS
Australian Antarctic Division
# 1 "blbl/lib/flash/flash.c"
# 1 "/home/peter_jan/aegis/AWS2003.1.1.C011//"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "blbl/lib/flash/flash.c"
# 9 "blbl/lib/flash/flash.c"
# 1 "blbl/include/stdio.h" 1
# 32 "blbl/include/stdio.h"
# 1 "/usr/local/lib/gcc/msp430/3.4.3/include/stddef.h" 1 3 4
# 151 "/usr/local/lib/gcc/msp430/3.4.3/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 213 "/usr/local/lib/gcc/msp430/3.4.3/include/stddef.h" 3 4
typedef unsigned int size_t;
# 325 "/usr/local/lib/gcc/msp430/3.4.3/include/stddef.h" 3 4
typedef int wchar_t;
# 33 "blbl/include/stdio.h" 2
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/sys/types.h" 1 3
# 36 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/sys/types.h" 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/sys/cdefs.h" 1 3
# 37 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/sys/types.h" 2 
3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/sys/inttypes.h" 
1 3
# 36 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/sys/inttypes.h" 3
typedef signed char int8_t;
typedef unsigned char uint8_t;

typedef int int16_t;
typedef unsigned int uint16_t;

typedef long int32_t;
typedef unsigned long uint32_t;

typedef long long int64_t;
typedef unsigned long long uint64_t;

typedef int16_t intptr_t;
typedef uint16_t uintptr_t;
# 38 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/sys/types.h" 2 
3



typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef unsigned short ushort;
typedef unsigned int uint;

typedef uint8_t u_int8_t;
typedef uint16_t u_int16_t;
typedef uint32_t u_int32_t;
typedef uint64_t u_int64_t;

typedef u_int64_t u_quad_t;
typedef int64_t quad_t;
typedef quad_t * qaddr_t;

typedef char * caddr_t;
typedef const char * c_caddr_t;
typedef volatile char *v_caddr_t;
typedef u_int32_t fixpt_t;
typedef u_int32_t gid_t;
typedef u_int32_t in_addr_t;
typedef u_int16_t in_port_t;
typedef u_int32_t ino_t;
typedef long key_t;
typedef u_int16_t mode_t;
typedef u_int16_t nlink_t;
typedef quad_t rlim_t;
typedef int32_t segsz_t;
typedef int32_t swblk_t;
typedef int32_t ufs_daddr_t;
typedef int32_t ufs_time_t;
typedef u_int32_t uid_t;
# 34 "blbl/include/stdio.h" 2


# 1 "/usr/local/lib/gcc/msp430/3.4.3/include/stdarg.h" 1 3 4
# 43 "/usr/local/lib/gcc/msp430/3.4.3/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 105 "/usr/local/lib/gcc/msp430/3.4.3/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 37 "blbl/include/stdio.h" 2
# 47 "blbl/include/stdio.h"
# 1 "/usr/local/msp430/include/stdio.h" 1
# 32 "/usr/local/msp430/include/stdio.h"
# 1 "/usr/local/lib/gcc/msp430/3.4.3/include/stddef.h" 1 3 4
# 33 "/usr/local/msp430/include/stdio.h" 2
# 45 "/usr/local/msp430/include/stdio.h"
int __attribute__((format (printf, 2, 3))) uprintf(int (*func)(int c), const 
char *fmt, ...);
int __attribute__((format (printf, 3, 4))) snprintf (char *buf, size_t size, 
const char *fmt, ...);
int __attribute__((format (printf, 2, 3))) sprintf (char *buf, const char *fmt, 
...);
int __attribute__((format (printf, 1, 2))) printf(const char *string, ...);
int vuprintf(int (*func)(int c), const char *fmt0, va_list ap);
int vsnprintf(char *dest, size_t maxlen, const char *string, va_list ap);
int vsprintf(char *dest, const char *string, va_list ap);
int vprintf(const char *string, va_list ap);

int puts(const char *s);
int putchar(int c);
# 48 "blbl/include/stdio.h" 2
# 10 "blbl/lib/flash/flash.c" 2

# 1 "./include/aws.h" 1
# 12 "./include/aws.h"
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/stdint.h" 1 3
# 13 "./include/aws.h" 2
# 45 "./include/aws.h"
extern unsigned int instrumentErrorCode;
# 248 "./include/aws.h"
struct DCOTuneStruct
{
    volatile uint8_t u8Control;
    volatile uint16_t u16Ticks;
    volatile uint16_t u16Last;
    volatile uint16_t u16Period;
    volatile int16_t i16Error;
    volatile int16_t i16NewDCO;
    volatile uint8_t u8Rsel;
};

extern struct DCOTuneStruct DCOTune;


extern volatile unsigned int uiSleep;
# 12 "blbl/lib/flash/flash.c" 2
# 1 "blbl/include/ucosii.h" 1
# 14 "blbl/include/ucosii.h"
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/string.h" 1 3
# 33 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/string.h" 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/include/stddef.h" 1 3 4
# 34 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/string.h" 2 3



extern void *memccpy(void *, const void *, int, size_t);
extern void *memchr(const void *, int, size_t);
extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern char *strchr(const char *, int);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
extern int strcasecmp(const char *, const char *);
extern size_t strlen(const char *);
extern char *strlwr(char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t) ;
extern int strncasecmp(const char *, const char *, size_t);
extern size_t strnlen(const char *, size_t);
extern char *strrchr(const char *, int);
extern char *strrev(char *);
extern char *strstr(const char *, const char *);
extern char *strupr(char *);
extern int bcmp(const void *b1, const void *b2, size_t length);
extern char *strsep(char **, const char *);
extern void bcopy(const void *, void *, size_t);
extern size_t strlcat(char *, const char *, size_t);
extern void * memset(void *, int, size_t);
extern void bzero(void *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern char * strdup(const char *);
extern void swab(const void *, void *, size_t);
# 15 "blbl/include/ucosii.h" 2
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/ctype.h" 1 3




extern inline int isalpha(int c) { return ((c>='A'&&c<='Z')||(c>='a'&&c<='z')); 
}

extern inline int iscntrl(int c) { return ((c>=0&&c<=27)||c==127);}

extern inline int isdigit(int c) { return (((c)>='0')&&((c)<='9'));}

extern inline int isalnum(int c) { return (isalpha(c)||isdigit(c));}

extern inline int isspace(int c) { return ((c) == ' ' || ((c) >= '\t' && (c) <= 
'\r'));}

extern inline int isascii(int c) { return (((c) & ~0x7f) == 0);}

extern inline int isupper(int c) { return ((c) >= 'A' && (c) <= 'Z');}

extern inline int islower(int c) { return ((c) >= 'a' && (c) <= 'z');}

extern inline int isprint(int c) { return (c>23 && c<127);}

extern inline int isblank(int c) { return (c=='\t' || c==' ');}

extern inline int isxdigit(int c)
{
 return (isdigit(c)|| ((c) >= 'A' && (c) <= 'F') || ((c) >= 'a' && (c) <= 'f'));
}

extern inline int ispunct(int c)
{
 return (isprint (c) && !islower(c) && !isupper(c) && c != ' ' && !isdigit(c));
}


extern inline int toupper(int c) { return ((c) - 0x20 * (((c) >= 'a') && ((c) 
<= 'z')));}

extern inline int tolower(int c) { return ((c) + 0x20 * (((c) >= 'A') && ((c) 
<= 'Z'))) ;}

extern inline int toascii(int c) { return (c&0x7f);}
# 16 "blbl/include/ucosii.h" 2
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/stdlib.h" 1 3
# 32 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/stdlib.h" 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/include/stddef.h" 1 3 4
# 33 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/stdlib.h" 2 3
# 52 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/stdlib.h" 3
extern void exit(int) __asm__("__stop_progExec__") __attribute__((__const__));



typedef struct {
 int quot;
 int rem;
} div_t;

extern div_t div(int num, int denom);


typedef struct {
 long quot;
 long rem;
} ldiv_t;

extern ldiv_t ldiv(long num, long denom);




extern __inline__ int abs(int __x) __attribute__((__const__));
extern __inline__ int
abs(int __x)
{
return (__x < 0) ? -__x : __x;
}

extern __inline__ long labs(long __x) __attribute__((__const__));
extern __inline__ long
labs(long __x)
{
return (__x < 0) ? -__x : __x;
}



long strtol(const char *, char **, int);
unsigned long strtoul(const char *, char **, int);

int atoi(const char *p);
long atol(const char *p);

void *malloc(size_t size);
void free (void *p);
void * bsearch(const void *, const void *, size_t, size_t, register int 
(*compar)(const void *, const void *));
# 17 "blbl/include/ucosii.h" 2

# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/signal.h" 1 3
# 33 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/signal.h" 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/iomacros.h" 1 3
# 124 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/iomacros.h" 3
extern void __bis_sr_irq(int);
extern void __bic_sr_irq(int);
extern void *__get_frame_address(void);
# 34 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/signal.h" 2 3
# 19 "blbl/include/ucosii.h" 2


# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 1 
3
# 26 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/mpy.h" 1 
3
# 18 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/mpy.h" 3
volatile unsigned int MPY asm("0x0130");

volatile unsigned int MPYS asm("0x0132");

volatile unsigned int MAC asm("0x0134");

volatile unsigned int MACS asm("0x0136");

volatile unsigned int OP2 asm("0x0138");

volatile unsigned int RESLO asm("0x013A");

volatile unsigned int RESHI asm("0x013C");

volatile unsigned int SUMEXT asm("0x013E");
# 27 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/gpio.h" 
1 3
# 1 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/iostructures.h"
 1 3
# 22 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/iostructures.h"
 3
typedef union port {
  volatile unsigned char reg_p;
  volatile struct {
    unsigned char __p0:1,
      __p1:1,
      __p2:1,
      __p3:1,
      __p4:1,
      __p5:1,
      __p6:1,
      __p7:1;
  } __pin;
} __attribute__ ((packed)) ioregister_t;
# 92 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/iostructures.h"
 3
struct {
  ioregister_t in;
  ioregister_t out;
  ioregister_t dir;
  ioregister_t ifg;
  ioregister_t ies;
  ioregister_t ie;
  ioregister_t sel;
} port1 asm("0x0020");




struct {
  ioregister_t in;
  ioregister_t out;
  ioregister_t dir;
  ioregister_t ifg;
  ioregister_t ies;
  ioregister_t ie;
  ioregister_t sel;
} port2 asm("0x0028");




struct {
  ioregister_t in;
  ioregister_t out;
  ioregister_t dir;
  ioregister_t sel;
} port3 asm("0x0018");




struct {
  ioregister_t in;
  ioregister_t out;
  ioregister_t dir;
  ioregister_t sel;
} port4 asm("0x001c");




struct {
  ioregister_t in;
  ioregister_t out;
  ioregister_t dir;
  ioregister_t sel;
} port5 asm("0x0030");




struct {
  ioregister_t in;
  ioregister_t out;
  ioregister_t dir;
  ioregister_t sel;
} port6 asm("0x0034");
# 2 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/gpio.h" 
2 3
# 101 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/gpio.h" 3
volatile unsigned char P1IN asm("0x0020");

volatile unsigned char P1OUT asm("0x0021");

volatile unsigned char P1DIR asm("0x0022");

volatile unsigned char P1IFG asm("0x0023");

volatile unsigned char P1IES asm("0x0024");

volatile unsigned char P1IE asm("0x0025");

volatile unsigned char P1SEL asm("0x0026");




volatile unsigned char P2IN asm("0x0028");

volatile unsigned char P2OUT asm("0x0029");

volatile unsigned char P2DIR asm("0x002A");

volatile unsigned char P2IFG asm("0x002B");

volatile unsigned char P2IES asm("0x002C");

volatile unsigned char P2IE asm("0x002D");

volatile unsigned char P2SEL asm("0x002E");




volatile unsigned char P3IN asm("0x0018");

volatile unsigned char P3OUT asm("0x0019");

volatile unsigned char P3DIR asm("0x001A");

volatile unsigned char P3SEL asm("0x001B");




volatile unsigned char P4IN asm("0x001C");

volatile unsigned char P4OUT asm("0x001D");

volatile unsigned char P4DIR asm("0x001E");

volatile unsigned char P4SEL asm("0x001F");




volatile unsigned char P5IN asm("0x0030");

volatile unsigned char P5OUT asm("0x0031");

volatile unsigned char P5DIR asm("0x0032");

volatile unsigned char P5SEL asm("0x0033");




volatile unsigned char P6IN asm("0x0034");

volatile unsigned char P6OUT asm("0x0035");

volatile unsigned char P6DIR asm("0x0036");

volatile unsigned char P6SEL asm("0x0037");
# 28 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/usart.h" 
1 3
# 85 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/usart.h" 3
volatile unsigned char U0CTL asm("0x0070");

volatile unsigned char U0TCTL asm("0x0071");

volatile unsigned char U0RCTL asm("0x0072");

volatile unsigned char U0MCTL asm("0x0073");

volatile unsigned char U0BR0 asm("0x0074");

volatile unsigned char U0BR1 asm("0x0075");

volatile unsigned char U0RXBUF asm("0x0076");

volatile unsigned char U0TXBUF asm("0x0077");




volatile unsigned char UCTL asm("0x0070");

volatile unsigned char UTCTL asm("0x0071");

volatile unsigned char URCTL asm("0x0072");

volatile unsigned char UMCTL asm("0x0073");

volatile unsigned char UBR0 asm("0x0074");

volatile unsigned char UBR1 asm("0x0075");

volatile unsigned char RXBUF asm("0x0076");

volatile unsigned char TXBUF asm("0x0077");


volatile unsigned char UCTL0 asm("0x0070");

volatile unsigned char UTCTL0 asm("0x0071");

volatile unsigned char URCTL0 asm("0x0072");

volatile unsigned char UMCTL0 asm("0x0073");

volatile unsigned char UBR00 asm("0x0074");

volatile unsigned char UBR10 asm("0x0075");

volatile unsigned char RXBUF0 asm("0x0076");

volatile unsigned char TXBUF0 asm("0x0077");


volatile unsigned char UCTL_0 asm("0x0070");

volatile unsigned char UTCTL_0 asm("0x0071");

volatile unsigned char URCTL_0 asm("0x0072");

volatile unsigned char UMCTL_0 asm("0x0073");

volatile unsigned char UBR0_0 asm("0x0074");

volatile unsigned char UBR1_0 asm("0x0075");

volatile unsigned char RXBUF_0 asm("0x0076");

volatile unsigned char TXBUF_0 asm("0x0077");
# 253 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/usart.h" 3
volatile unsigned char U1CTL asm("0x0078");

volatile unsigned char U1TCTL asm("0x0079");

volatile unsigned char U1RCTL asm("0x007A");

volatile unsigned char U1MCTL asm("0x007B");

volatile unsigned char U1BR0 asm("0x007C");

volatile unsigned char U1BR1 asm("0x007D");

volatile unsigned char U1RXBUF asm("0x007E");

volatile unsigned char U1TXBUF asm("0x007F");


volatile unsigned char UCTL1 asm("0x0078");

volatile unsigned char UTCTL1 asm("0x0079");

volatile unsigned char URCTL1 asm("0x007A");

volatile unsigned char UMCTL1 asm("0x007B");

volatile unsigned char UBR01 asm("0x007C");

volatile unsigned char UBR11 asm("0x007D");

volatile unsigned char RXBUF1 asm("0x007E");

volatile unsigned char TXBUF1 asm("0x007F");


volatile unsigned char UCTL_1 asm("0x0078");

volatile unsigned char UTCTL_1 asm("0x0079");

volatile unsigned char URCTL_1 asm("0x007A");

volatile unsigned char UMCTL_1 asm("0x007B");

volatile unsigned char UBR0_1 asm("0x007C");

volatile unsigned char UBR1_1 asm("0x007D");

volatile unsigned char RXBUF_1 asm("0x007E");

volatile unsigned char TXBUF_1 asm("0x007F");
# 29 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/timera.h" 1 3
# 18 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/timera.h" 3
volatile unsigned int TAIV asm("0x012E");

volatile unsigned int TACTL asm("0x0160");

volatile unsigned int TACCTL0 asm("0x0162");

volatile unsigned int TACCTL1 asm("0x0164");

volatile unsigned int TACCTL2 asm("0x0166");

volatile unsigned int TAR asm("0x0170");

volatile unsigned int TACCR0 asm("0x0172");

volatile unsigned int TACCR1 asm("0x0174");

volatile unsigned int TACCR2 asm("0x0176");



volatile unsigned int CCTL0 asm("0x0162");

volatile unsigned int CCTL1 asm("0x0164");

volatile unsigned int CCTL2 asm("0x0166");

volatile unsigned int CCR0 asm("0x0172");

volatile unsigned int CCR1 asm("0x0174");

volatile unsigned int CCR2 asm("0x0176");
# 30 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/timerb.h" 1 3
# 18 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/timerb.h" 3
volatile unsigned int TBIV asm("0x011E");

volatile unsigned int TBCTL asm("0x0180");

volatile unsigned int TBCCTL0 asm("0x0182");

volatile unsigned int TBCCTL1 asm("0x0184");

volatile unsigned int TBCCTL2 asm("0x0186");

volatile unsigned int TBR asm("0x0190");

volatile unsigned int TBCCR0 asm("0x0192");

volatile unsigned int TBCCR1 asm("0x0194");

volatile unsigned int TBCCR2 asm("0x0196");




volatile unsigned int TBCCTL3 asm("0x0188");

volatile unsigned int TBCCTL4 asm("0x018A");

volatile unsigned int TBCCTL5 asm("0x018C");

volatile unsigned int TBCCTL6 asm("0x018E");

volatile unsigned int TBCCR3 asm("0x0198");

volatile unsigned int TBCCR4 asm("0x019A");

volatile unsigned int TBCCR5 asm("0x019C");

volatile unsigned int TBCCR6 asm("0x019E");
# 31 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/basic_clock.h"
 1 3
# 18 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/basic_clock.h"
 3
volatile unsigned char DCOCTL asm("0x0056");

volatile unsigned char BCSCTL1 asm("0x0057");

volatile unsigned char BCSCTL2 asm("0x0058");
# 32 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/flash.h" 
1 3
# 18 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/flash.h" 3
volatile unsigned int FCTL1 asm("0x0128");

volatile unsigned int FCTL2 asm("0x012A");

volatile unsigned int FCTL3 asm("0x012C");
# 33 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/compa.h" 
1 3
# 18 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/compa.h" 3
volatile unsigned char CACTL1 asm("0x0059");

volatile unsigned char CACTL2 asm("0x005A");

volatile unsigned char CAPD asm("0x005B");
# 34 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/adc12.h" 
1 3
# 18 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/adc12.h" 3
volatile unsigned int ADC12CTL0 asm("0x01A0");

volatile unsigned int ADC12CTL1 asm("0x01A2");

volatile unsigned int ADC12IFG asm("0x01A4");

volatile unsigned int ADC12IE asm("0x01A6");

volatile unsigned int ADC12IV asm("0x01A8");



typedef struct {
  volatile unsigned
    adc12sc:1,
    enc:1,
    adc12tovie:1,
    adc12ovie:1,
    adc12on:1,
    refon:1,
    r2_5v:1,
    msc:1,
    sht0:4,
    sht1:4;
} __attribute__ ((packed)) adc12ctl0_t;

typedef struct {
  volatile unsigned
    adc12busy:1,
    conseq:2,
    adc12ssel:2,
    adc12div:3,
    issh:1,
    shp:1,
    shs:2,
    cstartadd:4;
} __attribute__ ((packed)) adc12ctl1_t;

typedef struct {
  volatile unsigned
    bit0:1,
    bit1:1,
    bit2:1,
    bit3:1,
    bit4:1,
    bit5:1,
    bit6:1,
    bit7:1,
    bit8:1,
    bit9:1,
    bit10:1,
    bit11:1,
    bit12:1,
    bit13:1,
    bit14:1,
    bit15:1;
} __attribute__ ((packed)) adc12xflg_t;


struct {
  adc12ctl0_t ctl0;
  adc12ctl1_t ctl1;
  adc12xflg_t ifg;
  adc12xflg_t ie;
  adc12xflg_t iv;
} adc12 asm("0x01A0");
# 93 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/adc12.h" 3
volatile unsigned int ADC12MEM0 asm("0x0140");

volatile unsigned int ADC12MEM1 asm("0x0142");

volatile unsigned int ADC12MEM2 asm("0x0144");

volatile unsigned int ADC12MEM3 asm("0x0146");

volatile unsigned int ADC12MEM4 asm("0x0148");

volatile unsigned int ADC12MEM5 asm("0x014A");

volatile unsigned int ADC12MEM6 asm("0x014C");

volatile unsigned int ADC12MEM7 asm("0x014E");

volatile unsigned int ADC12MEM8 asm("0x0150");

volatile unsigned int ADC12MEM9 asm("0x0152");

volatile unsigned int ADC12MEM10 asm("0x0154");

volatile unsigned int ADC12MEM11 asm("0x0156");

volatile unsigned int ADC12MEM12 asm("0x0158");

volatile unsigned int ADC12MEM13 asm("0x015A");

volatile unsigned int ADC12MEM14 asm("0x015C");

volatile unsigned int ADC12MEM15 asm("0x015E");
# 132 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/adc12.h" 3
volatile unsigned char ADC12MCTL0 asm("0x0080");

volatile unsigned char ADC12MCTL1 asm("0x0081");

volatile unsigned char ADC12MCTL2 asm("0x0082");

volatile unsigned char ADC12MCTL3 asm("0x0083");

volatile unsigned char ADC12MCTL4 asm("0x0084");

volatile unsigned char ADC12MCTL5 asm("0x0085");

volatile unsigned char ADC12MCTL6 asm("0x0086");

volatile unsigned char ADC12MCTL7 asm("0x0087");

volatile unsigned char ADC12MCTL8 asm("0x0088");

volatile unsigned char ADC12MCTL9 asm("0x0089");

volatile unsigned char ADC12MCTL10 asm("0x008A");

volatile unsigned char ADC12MCTL11 asm("0x008B");

volatile unsigned char ADC12MCTL12 asm("0x008C");

volatile unsigned char ADC12MCTL13 asm("0x008D");

volatile unsigned char ADC12MCTL14 asm("0x008E");

volatile unsigned char ADC12MCTL15 asm("0x008F");
# 35 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3

# 1 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/common.h" 1 3
# 71 
"/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430/common.h" 3
volatile unsigned int WDTCTL asm("0x0120");
# 37 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 
2 3


volatile unsigned char IE1 asm("0x0000");
# 48 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/msp430x14x.h" 3
volatile unsigned char IFG1 asm("0x0002");







volatile unsigned char ME1 asm("0x0004");





volatile unsigned char IE2 asm("0x0001");




volatile unsigned char IFG2 asm("0x0003");




volatile unsigned char ME2 asm("0x0005");
# 22 "blbl/include/ucosii.h" 2


# 1 "blbl/include/os_cpu.h" 1
# 39 "blbl/include/os_cpu.h"
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U;
typedef signed char INT8S;
typedef unsigned int INT16U;
typedef signed int INT16S;
typedef unsigned long INT32U;
typedef signed long INT32S;
typedef float FP32;
typedef double FP64;

typedef unsigned int OS_STK;


typedef unsigned int OS_CPU_SR;
# 61 "blbl/include/os_cpu.h"
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/io.h" 1 3
# 62 "blbl/include/os_cpu.h" 2
# 116 "blbl/include/os_cpu.h"
extern OS_STK *OSISRStkPtr;







OS_CPU_SR OSCPUSaveSR(void);
void OSCPURestoreSR(OS_CPU_SR cpu_sr);
# 25 "blbl/include/ucosii.h" 2
# 1 "blbl/include/os_cfg.h" 1
# 26 "blbl/include/ucosii.h" 2
# 249 "blbl/include/ucosii.h"
typedef struct os_event {
    INT8U OSEventType;
    INT8U OSEventGrp;
    INT16U OSEventCnt;
    void *OSEventPtr;
    INT8U OSEventTbl[(((7 +1)) / 8 + 1)];



} OS_EVENT;
# 346 "blbl/include/ucosii.h"
typedef struct os_mutex_data {
    INT8U OSEventTbl[(((7 +1)) / 8 + 1)];
    INT8U OSEventGrp;
    INT8U OSValue;
    INT8U OSOwnerPrio;
    INT8U OSMutexPIP;
} OS_MUTEX_DATA;
# 389 "blbl/include/ucosii.h"
typedef struct os_sem_data {
    INT16U OSCnt;
    INT8U OSEventTbl[(((7 +1)) / 8 + 1)];
    INT8U OSEventGrp;
} OS_SEM_DATA;
# 403 "blbl/include/ucosii.h"
typedef struct os_stk_data {
    INT32U OSFree;
    INT32U OSUsed;
} OS_STK_DATA;
# 416 "blbl/include/ucosii.h"
typedef struct os_tcb {
    OS_STK *OSTCBStkPtr;


    void *OSTCBExtPtr;
    OS_STK *OSTCBStkBottom;
    INT32U OSTCBStkSize;
    INT16U OSTCBOpt;
    INT16U OSTCBId;


    struct os_tcb *OSTCBNext;
    struct os_tcb *OSTCBPrev;


    OS_EVENT *OSTCBEventPtr;
# 445 "blbl/include/ucosii.h"
    INT16U OSTCBDly;
    INT8U OSTCBStat;
    INT8U OSTCBPrio;

    INT8U OSTCBX;
    INT8U OSTCBY;
    INT8U OSTCBBitX;
    INT8U OSTCBBitY;
# 469 "blbl/include/ucosii.h"
} OS_TCB;
# 478 "blbl/include/ucosii.h"
extern INT32U OSCtxSwCtr;


extern OS_EVENT *OSEventFreeList;
extern OS_EVENT OSEventTbl[3];
# 491 "blbl/include/ucosii.h"
extern INT8S OSCPUUsage;
extern INT32U OSIdleCtrMax;
extern INT32U OSIdleCtrRun;
extern BOOLEAN OSStatRdy;
extern OS_STK OSTaskStatStk[(64)];


extern INT8U OSIntNesting;
extern INT8U OSIntExitY;

extern INT8U OSLockNesting;

extern INT8U OSPrioCur;
extern INT8U OSPrioHighRdy;

extern INT8U OSRdyGrp;
extern INT8U OSRdyTbl[(((7 +1)) / 8 + 1)];

extern BOOLEAN OSRunning;

extern INT8U OSTaskCtr;

extern volatile INT32U OSIdleCtr;

extern OS_STK OSTaskIdleStk[(64)];


extern OS_TCB *OSTCBCur;
extern OS_TCB *OSTCBFreeList;
extern OS_TCB *OSTCBHighRdy;
extern OS_TCB *OSTCBList;
extern OS_TCB *OSTCBPrioTbl[(7 +1) + 1];
extern OS_TCB OSTCBTbl[7 + 2];
# 540 "blbl/include/ucosii.h"
extern volatile INT32U OSTime;



extern INT8U const OSMapTbl[8];
extern INT8U const OSUnMapTbl[256];
# 662 "blbl/include/ucosii.h"
INT8U OSMutexAccept(OS_EVENT *pevent, INT8U *err);


OS_EVENT *OSMutexCreate(INT8U prio, INT8U *err);


OS_EVENT *OSMutexDel(OS_EVENT *pevent, INT8U opt, INT8U *err);


void OSMutexPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);
INT8U OSMutexPost(OS_EVENT *pevent);


INT8U OSMutexQuery(OS_EVENT *pevent, OS_MUTEX_DATA *pdata);
# 732 "blbl/include/ucosii.h"
INT16U OSSemAccept(OS_EVENT *pevent);


OS_EVENT *OSSemCreate(INT16U cnt);


OS_EVENT *OSSemDel(OS_EVENT *pevent, INT8U opt, INT8U *err);


void OSSemPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);
INT8U OSSemPost(OS_EVENT *pevent);


INT8U OSSemQuery(OS_EVENT *pevent, OS_SEM_DATA *pdata);
# 769 "blbl/include/ucosii.h"
INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U 
prio);



INT8U OSTaskCreateExt(void (*task)(void *pd),
                                         void *pdata,
                              OS_STK *ptos,
                              INT8U prio,
                              INT16U id,
                              OS_STK *pbos,
                              INT32U stk_size,
                              void *pext,
                              INT16U opt);
# 800 "blbl/include/ucosii.h"
INT8U OSTaskStkChk(INT8U prio, OS_STK_DATA *pdata);
# 814 "blbl/include/ucosii.h"
void OSTimeDly(INT16U ticks);


INT8U OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U milli);



INT8U OSTimeDlyResume(INT8U prio);



INT32U OSTimeGet(void);
void OSTimeSet(INT32U ticks);


void OSTimeTick(void);







void OSInit(void);

void OSIntEnter(void);
void OSIntExit(void);






void OSStart(void);

void OSStatInit(void);

INT16U OSVersion(void);
# 866 "blbl/include/ucosii.h"
INT8U OS_EventTaskRdy(OS_EVENT *pevent, void *msg, INT8U msk);
void OS_EventTaskWait(OS_EVENT *pevent);
void OS_EventTO(OS_EVENT *pevent);
void OS_EventWaitListInit(OS_EVENT *pevent);
# 885 "blbl/include/ucosii.h"
void OS_Sched(void);

void OS_TaskIdle(void *data);


void OS_TaskStat(void *data);



void OS_TaskStkClr(OS_STK *ptos, INT32U size, INT16U opt);






INT8U OS_TCBInit(INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U 
stk_size, void *pext, INT16U opt);
# 912 "blbl/include/ucosii.h"
void OSInitHookBegin(void);
void OSInitHookEnd(void);


void OSIntCtxSw(void);

void OSStartHighRdy(void);

void OSTaskCreateHook(OS_TCB *ptcb);
void OSTaskDelHook(OS_TCB *ptcb);


void OSTaskIdleHook(void);


void OSTaskStatHook(void);
OS_STK *OSTaskStkInit(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U 
opt);






void OSTCBInitHook(OS_TCB *ptcb);



void OSTimeTickHook(void);
# 950 "blbl/include/ucosii.h"
void OSCtxSw(void);
void OSTickISR(void);
# 13 "blbl/lib/flash/flash.c" 2
# 1 "blbl/include/flash.h" 1
# 12 "blbl/include/flash.h"
# 1 "/usr/local/lib/gcc/msp430/3.4.3/../../../../msp430/include/stdint.h" 1 3
# 13 "blbl/include/flash.h" 2







extern void flashUpdate(unsigned char *addr, size_t len, unsigned char *data);
extern void flashUnlock(uint16_t key);
extern int8_t flashLocked(void);
extern void flashEraseFromLen(unsigned char *start, size_t len);
# 14 "blbl/lib/flash/flash.c" 2
# 22 "blbl/lib/flash/flash.c"
unsigned char scratch[512] __attribute__((section(".flashScratch")));
# 32 "blbl/lib/flash/flash.c"
extern unsigned char *_etext;
extern unsigned char *__boot_start;
# 49 "blbl/lib/flash/flash.c"
void flashErase(unsigned char mode, unsigned char *addr)
{
# 59 "blbl/lib/flash/flash.c"
    if (mode != 0x0002)
    {
        return;
    }

    __asm__ __volatile__("dint"::);asm("nop");;






    FCTL2 = 0xA500 | 0x0080 | 0x0001 | 0x0002;

    FCTL1 = 0xA500 | mode;
    *addr = 0xff;
    FCTL1 = 0xA500;

    while (FCTL3 & 0x0001);




    DCOTune.u8Control = 0;
    __asm__ __volatile__("eint"::);;
}
# 104 "blbl/lib/flash/flash.c"
void flashUnlock(uint16_t key)
{





    FCTL2 = 0xA500 | 0x0080 | 0x0008;



    FCTL3 = key;




}

int8_t flashLocked(void)
{

    return ((FCTL3 & 0x0010) != 0);




}
# 147 "blbl/lib/flash/flash.c"
unsigned char flashWriteByte(unsigned char *addr, unsigned char data)
{




    __asm__ __volatile__("dint"::);asm("nop");;


    FCTL1 = 0xA500 | 0x0040;
    *addr = data;
    FCTL1 = 0xA500;

    while (FCTL3 & 0x0001);
# 169 "blbl/lib/flash/flash.c"
    DCOTune.u8Control = 0;
    __asm__ __volatile__("eint"::);;

    return (data != *addr);
}
# 189 "blbl/lib/flash/flash.c"
unsigned char flashWriteWord(unsigned int *addr, unsigned int data)
{




    __asm__ __volatile__("dint"::);asm("nop");;


    FCTL1 = 0xA500 | 0x0040;
    *addr = data;
    FCTL1 = 0xA500;

    while (FCTL3 & 0x0001);
# 211 "blbl/lib/flash/flash.c"
    DCOTune.u8Control = 0;
    __asm__ __volatile__("eint"::);;

    return (data != *addr);
}
# 232 "blbl/lib/flash/flash.c"
unsigned char flashWriteBlock(unsigned char *addr, unsigned int len, unsigned 
char *data)
{
    unsigned char ret;





    ret = 0;
    while(len > 0)
    {
        ret = ret | flashWriteByte(addr, *data);
        len--;
        addr++;
        data++;
    }

    return ret;
}

void flashEraseFromLen(unsigned char *start, size_t len)
{
    unsigned char *tempBlock;
    unsigned char *blockStart, *blockEnd;
    unsigned char *end;


    if (len == 0) return;



    if (((start >= (unsigned char *)&__boot_start)
                && (start <= (unsigned char *)&_etext)) ||
            ((start + len) > (unsigned char *)0xffe0))
    {



        return;
    }


    tempBlock = scratch;
    flashErase(0x0002, tempBlock);

    blockStart = (unsigned char *)((unsigned int)start & 0xfe00);
    blockEnd = blockStart + 0x1ff;
    end = start + len - 1;
# 291 "blbl/lib/flash/flash.c"
    flashWriteBlock(tempBlock, start - blockStart, blockStart);
    while (end > blockEnd)
    {
        flashErase(0x0002, blockStart);
        flashWriteBlock(blockStart, 0x200, tempBlock);



        blockStart += 0x200;
        blockEnd += 0x200;




        flashErase(0x0002, tempBlock);
    }
    flashWriteBlock(tempBlock + (end - blockStart) + 1, blockEnd - end, end + 
1);

    flashErase(0x0002, blockStart);





    len = 0x200;


    flashWriteBlock(blockStart, len, tempBlock);
}

void flashUpdate(unsigned char *addr, size_t len, unsigned char *data)
{
    unsigned char *new;
    unsigned char erased;
    unsigned int i;







    if (((addr >= (unsigned char *)&__boot_start)
                && (addr <= (unsigned char *)&_etext)) ||
            ((addr + len) > (unsigned char *)0xffe0))
    {




        return;
    }




    new = addr;
    erased = 0;
    for(i = 0; i < len; i++)
    {
        erased |= ~(*new);
        new++;
    }

    if (erased != 0)
    {
        flashEraseFromLen(addr, len);
    }





    flashWriteBlock(addr, len, data);

    return;
}

Reply via email to