Thanks for everyone's input.
I agree that having a linker script would be a cleaner way of implementing
this and think I am just going to buckle down and use a linker script so I
do not end up shooting myself in the foot.
I want to make it however so that the "sections" that I define like
CrazyCasta said are merely appended to the end of the default linker
script. Reading into the msp430-ld man page, it has the following to say:
"If the linker cannot recognize the format of an object file, it will
assume that it is a linker script. A script specified in this way augments
the main linker script used for the link ..... Specifying a script in this
way merely augments the main linker script, with the extra commands placed
after the main script; use the -T option to replace the default linker
script entirely, but note the effect of the "INSERT" command."
So, making a linker script like this (called linker.x):
1 SECTIONS
2 {
3 .mySection 0x0100:
4 {
5 variable1 = 0x2280;
6 variable2 = 0x0820;
7 variable3 = 0x22C8;
8 variable4 = 0x2288;
9 variable5 = 0x2278;
10 variable6 = 0x2270;
11
12 }
13 }
And passing it in to the linking step of my Makefile like:
$(CC) -Wall $(LDFLAGS) linker.x $(ALLOBJS) -o $(BUILDDIR)/EXAMPLE.ELF
should do the trick, right? I do get the following warning:
/usr/lib/gcc/msp430/4.5.3/../../../../msp430/bin/ld: warning: linker.x
contains output sections; did you forget -T?
.. but maybe this is normal?
Sorry if this is going too deep into generic-linker questions.
Cheers,
Tim
On Tue, Dec 13, 2011 at 6:48 AM, Peter Bigot <big...@acm.org> wrote:
> On Tue, Dec 13, 2011 at 6:03 AM, JMGross <msp...@grossibaer.de> wrote:
> > ----- Ursprüngliche Nachricht -----
> > Von: Peter Bigot
> > Gesendet am: 12 Dez 2011 21:39:15
> >
> > On Mon, Dec 12, 2011 at 2:31 PM, Timothy Logan <timothy.lo...@gmail.com>
> wrote:
> >>> I am porting some code from IAR which involves me having to place a few
> >>> different structures in very specific addresses in the MSP430 memory.
> >
> >> You can use asm statements, as are done with the peripheral register
> >> declarations. Something like:
> >> volatile unsigned int specialdata __asm__("0x1320");
> >> will force the definition of specialdata to be placed at address 0x1320.
> >
> > That's the obvious way.
> > However, it must be used with care.
> > The variable locations are put as direct addresses into the
> > compiler-generated assembly output.
> > The linker won't see them or know of them.
>
> Which is why the real peripheral register declarations use:
>
> volatile unsigned int P1OUT __asm__("__P1OUT");
>
> where __P1OUT is a symbolic constant defined at final link time from
> the MCU-specific periph.x file. The same thing can be done in this
> case so ensure all modules get the same address. The original request
> was for a simple way that didn't muck with linker scripts, but if the
> potential for inconsistency is a concern the symbol value can also be
> provided on the linker command line; see the msp430-ld man page.
>
> Peter
>
> > So if two independent compilaiton units (C files)
> > Use their own "superstatic variable" and it happens
> > to be placed on the same location, you won't get
> > an error or even a warning. And the two code parts
> > will mess with each others storage then.
> >
> > Especially dangerous when using libraries, where
> > the particular code is not checked/adjusted for every project.
> > (so it could be noticed)
> >
> > JMGross
> >
> >
> ------------------------------------------------------------------------------
> > Systems Optimization Self Assessment
> > Improve efficiency and utilization of IT resources. Drive out cost and
> > improve service delivery. Take 5 minutes to use this Systems Optimization
> > Self Assessment. http://www.accelacomm.com/jaw/sdnl/114/51450054/
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
>
> ------------------------------------------------------------------------------
> Systems Optimization Self Assessment
> Improve efficiency and utilization of IT resources. Drive out cost and
> improve service delivery. Take 5 minutes to use this Systems Optimization
> Self Assessment. http://www.accelacomm.com/jaw/sdnl/114/51450054/
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
------------------------------------------------------------------------------
Systems Optimization Self Assessment
Improve efficiency and utilization of IT resources. Drive out cost and
improve service delivery. Take 5 minutes to use this Systems Optimization
Self Assessment. http://www.accelacomm.com/jaw/sdnl/114/51450054/
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users