avr-gcc-list
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]