Allocate memory from predefined section
Robles Román, José Miguel
jmrroman@indra.es
Tue Jul 30 07:07:00 GMT 2002
Hi,
You may instruct the linker that certain sections of certain objects
are to be put in special regions of memory.
Something similar to next lines would work for you. In the example
I assumed that compiler generates sections .bss, .text and .data, as
my m68-coff cross compiler generates for me, and that the data you
want to allocate is in the .bss section of objects file1.o and
file2.o . This is probably not correct for you. You must determine, (for
example with objdump) what are the sections that you must reallocate.
MEMORY
{
ram (rwx): ORIGIN = 0, LENGTH = 0xefffff
ioRAM (rwx): ORIGIN = 0xf00000, LENGTH = 1M
}
SECTIONS
{
...
special_data:
{
file1.o (.bss)
file2.o (.bss)
} > ioRAM
normal_data:
{
*(.bss)
*(.text)
*(.data)
} > ram
}
As I posted in recent messages, in
http://www.gnu.org/manual/ld-2.9.1/ld.html you can see the document
"Using LD - the GNU Linker", where you will find how to use linker
scripts.
Regards,
José Miguel
José Miguel Robles Román
Development Engineer
Indra S.A.
Alcobendas (Madrid) Spain
mailto:jmrroman@indra.es
> -----Mensaje original-----
> De: Daniel Lidsten [mailto:Daniel.Lidsten@combitechsystems.com]
> Enviado el: martes, 30 de julio de 2002 13:32
> Para: crossgcc
> Asunto: Allocate memory from predefined section
>
>
> Hi,
>
> I am having some trouble with my mpc850. Currently i cache
> all RAM data
> and because of that both the serial port and ethernet have stoped
> working. A workaround for this problem is to let the serial
> and ethernet
> drivers allocate memory in a section that is not cached.
>
> Is there a way to tell the compiler/linker that all memory used within
> certain files (typ smc.c) shall be allocated from a predefined section
> or do i have to rewrite the code to allocate memory from a the new
> section. In the below clip i have created a new section called ioRAM
> where i want to put all serial and ethernet related data.
>
> Any ideas?
>
> Regards, Daniel
>
>
> MEMORY
> {
> ram : ORIGIN = 0, LENGTH = 0xefffff
> ioRAM : ORIGIN = 0xf00000, LENGTH = 0x100000
> }
>
> SECTIONS
> {
> SECTIONS_BEGIN
> SECTION_vectors (ram, 0, LMA_EQ_VMA)
> SECTION_text (ram, 0x5000, LMA_EQ_VMA)
> SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
> SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
> SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
> SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
> SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
> SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
> SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
> SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
> CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
> CYG_LABEL_DEFN(__IOSpace) = 0xf00000; . =
> CYG_LABEL_DEFN(__IOSpace)
> + 0x100000;
> SECTIONS_END
> }
>
>
> ------
> Want more information? See the CrossGCC FAQ,
> http://www.objsw.com/CrossGCC/
> Want to unsubscribe? Send a note to
> crossgcc-unsubscribe@sources.redhat.com
>
>
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
More information about the crossgcc
mailing list