If I declare it as a global it is where I expect at the beginning of RAM
(0x1100). But if it is on the stack in the main function, even if I
declare it volatile, use asm(""); // __asm__ __volatile__ (""); or pass
it to a function, the variable address is in flash at 0x3102. It doesn't
make sense.

Now if I use the program:

#include <io.h> 

int f1()
{
    volatile int i = 5;
    i += 2;
    return i;
}

int main()
{
    while(1)
    {
        f1();
    }
}

The variable i address is on the stack in RAM at 0x30f8 which makes
sense. But if I change the compile option to use -02. Then the function
stack variable, i, goes back to being located in flash at 0x3102. And
it's value is not initialed to 5 nor is 2 added to it. The value of i is
constant = 12544 (0x3100.)

I noticed at new version of mspgcc4 is out as of Feb 18, 2010. I've
tried to install it on both a Fedora 9 and a Ubuntu machine but get the
same error:

Failed to execute sh do-gcc.sh "/opt/msp430-gcc-4.4.3" "4.4.3"
"http://ftp.uni-kl.de"; "build" "gcc-4.x" "4.3.1" "2.4.1"
at ./buildgcc.pl line 237, <STDIN> line 9.


Carl



On Sat, 2010-02-20 at 09:08 +0100, N. Coesel wrote:
> Carl,
> 
> Try to declare it outside the function (as a global).
> 
> At 19:43 19-2-2010 -0800, you wrote:
> >I tried declaring as volatile and it is at the exact same address.
> >
> >Carl
> >
> >On Sat, 20 Feb 2010 01:35:03 +0000
> > "Wayne Uroda" <[email protected]> wrote:
> >>try declaring i as volatile, or the compiler will probably get rid of it
> since it has no effect or side-effect.
> >>Sent via BlackBerry from Vodafone
> >>
> >>-----Original Message-----
> >>From: Carl <[email protected]>
> >>Date: Fri, 19 Feb 2010 18:29:03 
> >>To: <[email protected]>
> >>Subject: [Mspgcc-users] stack variable in flash?
> >>
> >>I'm sure that I'm missing some basic here but I'm not sure what. The
> >>first variable on the stack is in an unexpected location. I would expect
> >>it to be located somewhere on the stack in RAM (0x30ff-0x1100) but it is
> >>located in flash memory and it does not get set or incremented.
> >>
> >>
> >>#include <io.h>
> >>
> >>int main()
> >>{
> >>    int i=0;
> >>    while(1)
> >>        i++;
> >>}
> >>
> >



Reply via email to