To make things consistent across the whole MSP430 product line the symbols
used to define the interrupt entrypoints no longer encode the address of
the pointer within the vector table, but rather its offset in words from
the start of the vector table.  Unfortunately the preprocessor capabilities
of the assembler don't allow that to be automatically generated from the
macro definition anymore.  Somewhere in the mail archive there's some
history explaining why this was done, but I can't find it immediately.

Recommended solutions are recode the interrupt handler entirely in C,
translate the asm interrupt body into asm statements that are placed within
a C interrupt handler, or just separately generate the asm source for a
dummy interrupt handler in C for the desired vector and replace the asm
entry point with the new syntax.  E.g., for a C declaration that looks like:

#pragma vector=TIMER0_A0_VECTOR
__interrupt void
ta0cc0_isr (void)
{

the corresponding assembly source would look something like this (ignoring
line numbers)
   7                            .text
   8                    .Ltext0:
   9                            .section
.near.text.ta0cc0_isr,"ax",@progbits
  10                            .p2align 1,0
  11                            .global ta0cc0_isr
  13                    /***********************
  14                     * Interrupt Vector 54 Service Routine `ta0cc0_isr'
  15                     ***********************/
  16                    ta0cc0_isr:
  17                            .global __isr_54
  18                    __isr_54:
  19                    .LFB37:
  20                            .file 1 "main.c"

It is the __isr_54 symbol that will be placed into the interrupt table by
the linker.

On this MCU the headers have:

#define TIMER0_A0_VECTOR    (0x006C) /* 0xFFEC Timer0_A5 CC0 */

Offset 0x6C in bytes is 54 words into the table that begins at 0xFF80, thus
generating the symbol __isr_54.

You should be able to determine the appropriate name for the interrupt
entrypoint for your MCU based on the value of the interrupt identifier.

Peter

On Sat, Mar 16, 2013 at 2:55 PM, garyr <ga...@fidalgo.net> wrote:

> Wayne, Matthias:
>
> I don't think the problem was due to the pathname containing a space but it
> would have become a problem, no doubt.
> The problem was due to a rookie error on my part: I neglected to recompile
> everything before trying to link. In doing that I've found and corrected
> problems in a few files but here is one I don't know how to fix:
>
> make
> msp430-gcc -mmcu=msp430F1132 -x assembler-with-cpp -D_GNU_ASSEMBLER_ -c  -o
> ../auart/auart.o ../auart/auart.s
> ../auart/auart.s: Assembler messages:
> ../auart/auart.s:35: Error: unknown opcode `vector_(0x0012):'
> make: *** [../auart/auart.o] Error 1
>
> The code in question is:
>
> #include <legacymsp430.h>
> #include <msp430.h>
> [snip]
> .text
> rxDataSize: .word rxDataEnd-rxDataStart
> ;--------------------------------------------------
> .global  rxInterrupt
> rxInterrupt:
> interrupt(TIMERA0_VECTOR) ;Receive interrupt processing
>    push r15
> [snip]
>
> >From msp430F1132.h:
> #define TIMERA0_VECTOR      (0x0012)  /* 0xFFF2 Timer A CC0 */
>
> Any suggestions?
> Gary
>
> ----- Original Message -----
> From: "Matthias Hartmann" <matthias.w.hartm...@gmail.com>
> To: <mspgcc-users@lists.sourceforge.net>
> Sent: Saturday, March 16, 2013 8:33 AM
> Subject: Re: [Mspgcc-users] Linker error
>
>
> >I can confirm what Wayne stated.
> >
> > If I add a blank at the middle of the name of my mspgcc directory and
> > update the path accordingly, the linker yields the error that memory.x
> > could not be found.
> >
> > So please recheck your test. Maybe the path contained the mspgcc
> > directory twice and you changed only one instance.
> >
> > Matthias
> > Am 16.03.2013 15:46, schrieb garyr:
> >> Wayne,
> >> Thanks for your reply.
> >>
> >> My path is C:\Program Files\mspgcc_4.6\bin;
> >>
> >> The path to my old version of mspgcc was C:\mspgcc\bin so I created a
> folder
> >> C:\mspgcc_4.6 and copied everything there and changed my path to
> >> C:\mspgcc_4.6\bin. Compile is OK but Make still returns the same error
> so
> >> that
> >> must not be the problem.
> >>
> >> Gary
> >>
> >> ----- Original Message -----
> >> From: "Wayne Uroda" <w.ur...@gmail.com>
> >> To: "garyr" <ga...@fidalgo.net>
> >> Cc: <mspgcc-users@lists.sourceforge.net>
> >> Sent: Friday, March 15, 2013 11:12 PM
> >> Subject: Re: [Mspgcc-users] Linker error
> >>
> >>
> >> This might be off base, but I've had similar issues when there was a
> space in
> >> my
> >> path to mspgcc in the newer versions.
> >>
> >> - Wayne
> >>
> >> On 16/03/2013, at 5:53, "garyr" <ga...@fidalgo.net> wrote:
> >>
> >>> I've been using the mspgcc toolchain I downloaded in 2006. I'm now
> trying to
> >>> switch to the latest version, 4.6.3. I can compile but make returns an
> >>> error:
> >>>
> >>> msp430-gcc -mmcu=msp430f1132 -o usb.elf main.o ../auart/auartc.o
> >>> ../auart/auart.o ../uart/delay.o ../uart/dco.o ../utils/b2d.o
> >>> ../utils/bin2hexS.o
> >>> c:/program
> >>>
> files/mspgcc_4.6/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe:
> >>> cannot open linker script file memory.x: No such file or directory
> >>> collect2: ld returned 1 exit status
> >>> mingw32-make: *** [usb.elf] Error 1
> >>>
> >>> It appears that I'm missing a file for the linker but I don't know
> what that
> >>> might be. The relevant (I think) portion of my makefile is:
> >>>
> >>> CPU          = msp430f1132
> >>> CFLAGS       = -mmcu=${CPU} -Wall -O2 -g
> >>> ASFLAGS      = -mmcu=${CPU} -x assembler-with-cpp -D_GNU_ASSEMBLER_ -c
> >>> CC           = msp430-gcc
> >>> AS           = msp430-gcc
> >>>
> >>> ${NAME}.elf: ${OBJECTS}
> >>>    ${CC} -mmcu=${CPU} -o $@ ${OBJECTS}
> >>>
> >>> Any suggestions?
> >>>
> >>>
> >>>
> >>>
> ------------------------------------------------------------------------------
> >>> Everyone hates slow websites. So do we.
> >>> Make your web apps faster with AppDynamics
> >>> Download AppDynamics Lite for free today:
> >>> http://p.sf.net/sfu/appdyn_d2d_mar
> >>> _______________________________________________
> >>> Mspgcc-users mailing list
> >>> Mspgcc-users@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> >>
> >>
> >>
> >>
> ------------------------------------------------------------------------------
> >> Everyone hates slow websites. So do we.
> >> Make your web apps faster with AppDynamics
> >> Download AppDynamics Lite for free today:
> >> http://p.sf.net/sfu/appdyn_d2d_mar
> >> _______________________________________________
> >> Mspgcc-users mailing list
> >> Mspgcc-users@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> >
> >
> >
> ------------------------------------------------------------------------------
> > Everyone hates slow websites. So do we.
> > Make your web apps faster with AppDynamics
> > Download AppDynamics Lite for free today:
> > http://p.sf.net/sfu/appdyn_d2d_mar
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> >
> >
>
>
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_mar
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to