This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Running from Redboot
- From: Gary Thomas <gary at mlbassoc dot com>
- To: Unni Nair <manjunni at yahoo dot com>
- Cc: eCos Discussion <ecos-discuss at sources dot redhat dot com>
- Date: 15 Aug 2003 14:28:14 -0600
- Subject: Re: [ECOS] Running from Redboot
- Organization: MLB Associates
- References: <20030815202458.66700.qmail@web14611.mail.yahoo.com>
On Fri, 2003-08-15 at 14:24, Unni Nair wrote:
> When I increased the size of the reserved_for_rom, the
> available ram reported by redboot (start address) was
> changed to reflect the change.
>
> Unfortunately the problem I am facing is with the ECOS
> + application linking process, relocating the code to
> be loaded to the end of the reserved_for_rom section
> (which is not where the available ram resides).
>
You changed the wrong file - change this value in the MLT
files for RAM mode startup.
> Unni
>
> > 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
>
> __________________________________
> Do you Yahoo!?
> Yahoo! SiteBuilder - Free, easy-to-use web site design software
> http://sitebuilder.yahoo.com
--
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