Re: Allocating code to separate sections

Senthil Kumar Selvaraj <[email protected]>
Newsgroups gmane.comp.hardware.avr.gcc
Message-ID <[email protected]>
On Thu, Oct 09, 2014 at 07:32:51AM +0200, Alistair Gadd wrote:
> Hi Everybody,
> 
> I'm hoping this is an easy one for someone out there.
> 
> I'm putting together a bootloader for an ATmega328P using Atmel Studio 6.2
> and I would just like to ask if there is an easy way configure the IDE so
> that I can have separate sections that I can allocate code to. I have been
> using "-Ttext 0x7000" as a linker flag in "Configuration
> Manager->Toolchain->AVR/GNU Linker->Miscellaneous", which places all the
> code starting with reset vector at 0x3800 onwards, but I would like to have
> another section in the application section where I can place an SD card
> library that will be accessible by the bootloader and by future
> applications.
> 
> I have defined another "FLASH segment" - ".sdlib=0x2000" in "Configuration
> Manager->Toolchain->AVR/GNU Linker->Memory Settings, but I don't know how to
> configure .c source files and assembler .s files so that their code is
> allocated to this segment.
> 
> Can anybody give me some ideas on how I could achieve this?

There are a couple of ways.

1. Create a linker script that groups code from specific object
files into custom output sections. Something like

.sdlib :
{                                                                                                                                                                                                       
    foo.o(*.text)
}

where foo.o is the object file containing the code to go into the
section.

2. Use attributes in C code and .section directives in assembler code to
specify the section.

void __attribute__((section(".sdlib"))) my_function() {}
int main() { return 0; }

This makes the place the my_function's code in a .sdlib section. main's
code still goes into .text.

Hope this helps.

Regards
Senthil
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.