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
FreeRTOS interrupts port on IAR workbench
Started by ●June 3, 2010
Reply by ●June 3, 20102010-06-03
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.
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.