This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Redboot application


On Fri, 2003-08-15 at 13:33, Unni Nair wrote:
> Hello Gary:
> 
> Unfortunately I do not know how to post a followup to
> your response, hence emailing you directly.

In that case, why not just send this to the list (and maybe
copy it to me)?

> 
> The reserved_for_rom section is empty (I actually
> modified the adder board code to suit my needs).
> Apparently redboot is using areas after the
> reserved_for_room section to store additional
> sections. These details are not taken into
> consideration when I recompile for ECOS (default) and
> the linker is generating code located immediately
> after the reserved_for_rom (empty section). I do not
> know if the reserved_for_rom section is needed? 

It is indeed - that's how the .ldi file indicates what memory is
used by RedBoot and what memory can be used by the application.

Looking at the real 'adder' MLT file:
SECTIONS
{
    SECTIONS_BEGIN
    CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
    CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
    CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
    CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x3cd00;
    SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
    SECTION_text (ram, ALIGN (0x4), 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);
    SECTIONS_END
}

If you do the calculations, you'll see that the "__reserved_for_rom" segment
extends up through 0x80000.  If your RedBoot reports an address higher than
this, just change the 0x3cd00 above to an appropriate value.  E.g. 0x4cd00
would start the user applications at 0x90000, etc.

-- 
Gary Thomas <gary@mlbassoc.com>
MLB Associates


-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]