[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [avr-gcc-list] Howto put constants on fixed address

From: zizka
Subject: RE: [avr-gcc-list] Howto put constants on fixed address
Date: Wed, 19 Dec 2007 18:07:19 +0100

Well, perhaps I've written something wrong, because I think that you are 
talking about something else. Or I did not understand that, that is also 
possible :-).

I need to put my constants on specific address into flash memory, not into 
sram. I want to have the resulting flash content like this:

0000-03FF    some part of .text section (including vectors and so on)
0400-041F    my .foo section
0420-end     the rest of .text section
>> Hi, I need to put some constants on specific address, for 
>> example 0x400.
>> I've declared my constants in a section .foo:
>> char __attribute__ ((section(".foo"))) myconsts="qwertyuiop";
>> then I've compiled that code using:
>> -Wl,-section-start=.foo=0x200
>> But I get this error:
>> .... ld.exe: section .foo [00000400 -> 0000040a] overlaps 
>> section .text
>> [00000000 -> 00001b7d]
>> I've tried to change the linker script and so on, but I was unable to
>> "insert" my code into the .text section. The only solution 
>> was to place my
>> section after the end of the .text section, so the sections 
>> do not overlap,
>> but that is not what I want. Is it possible to put section to 
>> any address?
>> Or are the sections "unbreakable"?
>I thought this answer was in the avr-libc user manual somwhere.
>The linker cannot do separate address spaces, it only knows about a
>single address space. So .data, .bss, .eeprom are set at specific, very
>high offsets to make them fit in this single address space and not
>overlap the .text (code) section. Add the relevant offset to your
>-section-start flag. See the default linker scripts to see how this

reply via email to

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