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
IAR version
Started by ●June 4, 2004
Reply by ●June 5, 20042004-06-05
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.
Reply by ●June 5, 20042004-06-05
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
>
>
...