EmbeddedRelated.com
Forums

IAR version

Started by Dieter Teuchert June 4, 2004
Hi,

today i tried to migrate an existing MSP430 project with mixed C and 
assembler from IAR 1.26B to 3.10, because i need support for the 
MSP430F1611.

With the old IDE i could override the __low_level_init contained in the 
cstartup code by declaring my own. This was the recommended method.

It doesn't work any more. My  __low_level_init is in the link map, but 
the cstartup code lacks the three statements to call it. Those 
statements used to appear between stack initialization and cstart_init_zero.

Anybody has seen this?

Regards
Dieter Teuchert


Beginning Microcontrollers with the MSP430

Dieter Teuchert <dieter@diet...> writes:

> today i tried to migrate an existing MSP430
project with mixed C and
> assembler from IAR 1.26B to 3.10, because i need support for the
> MSP430F1611.
>
> With the old IDE i could override the __low_level_init contained in the
> cstartup code by declaring my own. This was the recommended method.
>
> It doesn't work any more. My  __low_level_init is in the link map, but
> the cstartup code lacks the three statements to call it. Those
> statements used to appear between stack initialization and
cstart_init_zero.
>
> Anybody has seen this?

V3.10 should be able to handle this.

There are a number of things that could have happend:

* __low_level_init must have C linkage.  If you have enabled C++ then
  you must enclose it in and "extern "C" {}"-clause.

* The file containing the __low_level_init funciton can't be part of a
  library, it must be top-level file.

* The CSTART segment can't be "packed" using the -P (instead of
-Z)
  linker command line option.  If it is then the three instructions in
  question may very well have been included, but placed somewhere else
  where they do not do any good.

Technically, what happends in the new compiler (as of V2) is that a
file containing a __low_level_init function definition also generates
a "REQUIRE ?cstart_call_low_level_init".  This label is provided in
the cstartup file, and it it is included then the three instructions
you are missing will be included.

Can you see the REQUIRE-line in the list file for the file that
contains __low_level_init?  Can you see it in the linker map file?

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

Hi,
thanks for your support.

In fact  the __low_level_init is written in assembler in a s43 file and 
i solved the problem by manually including the "REQUIRE 
?cstart_call_low_level_init". Before it used to be enough to declare it 
public.

Regards
D. Teuchert

Anders Lindgren wrote:

>V3.10 should be able to handle this.
>
>There are a number of things that could have happend:
>
>* __low_level_init must have C linkage.  If you have enabled C++ then
>  
>
...