EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

FreeRTOS interrupts port on IAR workbench

Started by "mario.huizar" June 3, 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[e16]: 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)INTVECE0-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[e46]: Undefined external "?cstart_init_copy" referred in port ( C:\Users\Mario\Documents\MasterArbeit\Lifebridge\Supervisor\Demo\msp430_IAR\Debug\Obj\
port.r43 )
Error[e46]: 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

Beginning Microcontrollers with the MSP430

Hi Mario!

See my embedded comments below:

On 2010-06-02 14:23, mario.huizar wrote:
> 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

This is the right way to go. All the other interrupt vectors are placed
in INTVEC, which is a COMMON segment.
> But now the linker complains with:
>
> Linking
> Error[e46]: Undefined external "?cstart_init_copy" referred in port (
> C:\Users\Mario\Documents\MasterArbeit\Lifebridge\Supervisor\Demo\msp430_IAR\Debug\Obj\
>
> port.r43 )
> Error[e46]: 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?

The two labels are defined by cstartup. My guess is that you haven't
included the runtime library on the command-line of the linker.

-- Anders Lindgren, IAR Systems
--
Disclaimer: Opinions expressed in this posting are strictly my own and
not necessarily those of my employer.


The 2024 Embedded Online Conference