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

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

Re: [avr-gcc-list] Allocating code to separate sections


From: Senthil Kumar Selvaraj
Subject: Re: [avr-gcc-list] Allocating code to separate sections
Date: Thu, 9 Oct 2014 11:59:51 +0530
User-agent: Mutt/1.5.23 (2014-03-12)

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



reply via email to

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