[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] Query regarding hard located variables
From: |
Anton Erasmus |
Subject: |
Re: [avr-gcc-list] Query regarding hard located variables |
Date: |
Wed, 9 Jan 2002 10:14:32 +0200 |
Hello Scott,
You can of course also define the variable in the linker script, and
force it to be at the address you want.
If you define a variable
unsigned char _PageReg
in the linker file, you add the line
extern unsigned char PageReg in your C file, and you can then
access it, directly.
As far as I can see, the RAM below this address, and the RAM
above this address will have to be different sections.
I have used this method to define variables in code space, that
contains information that only the linker can provide.
Hope this helps
Regards
Anton
> Hello Scott,
>
> The following C Code will put variable gTestVar into section
> "no_init". The relevent linker script commands you will need to put
> this section at a specific address, I do not know.
>
> int gTestVar __attribute__((section ("no_init");
>
> Regards
> Anton
>
> > Hello Anton,
> >
> > Yes, this is the kind of thing that I am after. However I am unable
> > to find any examples or doumentation on how to do this.
> > Specifically, I cannot find examples or instructions on how to do
> > this for a single variable (or even a single file... I can put the
> > "magic" variable in a file on it's own).
> >
> > Does anyone have an example that they can point me towards (or send)
> > which shows how to put a variable or a file into a specific section
> > in RAM?
> >
> >
> > Kind Regards,
> >
> > Scott
> >
> > Anton Erasmus wrote:
> > >
> > > Date sent: Mon, 07 Jan 2002 13:33:05 +1100
> > > From: Scott Finneran <address@hidden>
> > > Organization: Smart Container To:
> > > avr-gcc-list <address@hidden> Subject:
> > > [avr-gcc-list] Query regarding hard located variables
> > >
> > > > Hello All,
> > > >
> > > > I would have thought that the following would be a more commonly
> > > > asked (and therefore answered) question. I can only assume that
> > > > I am searching for the info in the wrong place or using the
> > > > wrong keywords. If so, then I apologise in advance.
> > > >
> > > > I would like to know how to hard locate a variable using gcc
> > > > and/or the gnu linker. The hardware that I am using has a number
> > > > of memory mapped hardware registers. Obviously I would like to
> > > > avoid having the linker drop variables into memory addresses
> > > > where these registers live. It would also be nice to be able
> > > > have variables (of my choosing) be located at these addresses.
> > > > Of course the latter can be easily achieved with a pointer. Many
> > > > commercial embedded compilers provide a compiler specific
> > > > directive such as: eg int reg1 _at(0x4000);
> > > >
> > > > Others simply allow you to specify the location of specific
> > > > variables in linker scripts.
> > > >
> > > > I have seen many websites and articles (eg from embedded.com)
> > > > talk about doing this. Many more say that it is possible. None
> > > > of them (that I have found) say how, or even better give an
> > > > example.
> > > >
> > > > Can anyone point me to some info or alternatively show me how
> > > > this is done?
> > > >
> > >
> > > Hi,
> > >
> > > You can put each variable in it's own named section with the
> > > "attribute section" command of gcc. In your linker script you can
> > > define the address of each section. I am not sure how many
> > > sections the linker can handle.
> > >
> > > Regards
> > > Anton
> > avr-gcc-list at http://avr1.org
> >
>
>
> avr-gcc-list at http://avr1.org
>
avr-gcc-list at http://avr1.org
Re: Fwd: [avr-gcc-list] Query regarding hard located variables, john . johnson, 2002/01/12
Re: [avr-gcc-list] Query regarding hard located variables, avr-gcc, 2002/01/12