FreeRTOS on MSP430 using IAR interrupts probl

mariohuizar wrote on Wednesday, June 02, 2010:

Hello all,

I am using the FreeRTOS on a MSP430FG439 and I want to use the Uart0 but because the Free RTOS on the file portext.s43 redefine the INTVEC I am having problems…
The FreeRTOS needs the timer0 to define the “tick” of the OS. And it defines it in assembler like this:

        ASEG
ORG 0xFFE0 + TIMERA0_VECTOR

_vTickISR_: DC16 vTickISR

I was having the following error:

Error: Segment INTVEC (size: 0x14 align: 0x1) is too long for segment definition. At least 0x2 more bytes needed. The problem occurred while processing the 
segment placement command “-Z(CODE)INTVEC=FFE0-FFFF”, where at the moment of placement the available memory ranges were “CODE:ffe0-ffeb,CODE:ffee-ffff”
   Reserved ranges relevant to this placement:
   ffe0-ffeb            INTVEC
   ffec-ffed            Absolute code from TICK_ISR
   ffee-ffff            INTVEC

Now what I did was to redefine the INTVEC as a Common segment like this:

        COMMON INTVEC(1) ; Interrupt vectors
        ORG TIMERA0_VECTOR   
_vTickISR_: DC16 vTickISR

But now the linker complains with:

Linking
Error: Undefined external “?cstart_init_copy” referred in port ( C:\Users\Mario\Documents\MasterArbeit\Lifebridge\Supervisor\Demo\msp430_IAR\Debug\Obj\
port.r43 )
Error: Undefined external “?cstart_init_zero” referred in tasks ( C:\Users\Mario\Documents\MasterArbeit\Lifebridge\Supervisor\Demo\msp430_IAR\Debug\Obj\
tasks.r43 )
Error while running Linker

Any ideas?

Thanks!
Mario Huizar

davedoors wrote on Wednesday, June 02, 2010:

Sorry, no ideas, but FreeRTOS can use any suitable timer if it is the actual timer it is using that is the issue.

mariohuizar wrote on Wednesday, June 02, 2010:

Thanks I already found the solution… Although I do not know exactly what it was.
I think it was a bad configuration setting on the project.
I added this Common INTVEC instruction and it actually worked.