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]

redboot RAM and it's memory address


Okay, after I followed the textbook and compiled eCos CVS for my XScale PXA 
(Accelent IDP) target, I got no more errors and 
install/bin/redboot.{elf|bin|img|srec}.

My aim is to let the current bootloader (where I don't have source) let the 
system initialize and run my redboot in RAM. The current bootloader can 
execute Linux, so there should be a way to let it execute something 
different.

So, speaking of Linux: when I arm-elf-objdump vmlinux (that is what the 
current bootloader gets, in some WinCE NK.BIN format), then I see

c0008000 <stext>:
c0008000:       e1a0c000        mov     r12, r0
c0008004:       e3a000d3        mov     r0, #211        ; 0xd3
c0008008:       e121f000        msr     CPSR_c, r0

but when I arm-elf-objdump install/bin/redboot.elf, then I see

00020000 <__exception_handlers>:
   20000:       e59ff018        ldr     pc, [pc, #18]   ; 20020 <vectors>
   20004:       e59ff018        ldr     pc, [pc, #18]   ; 20024 
<.undefined_instruction>
...
00020020 <vectors>:
   20020:       00020040        andeq   r0, r2, r0, asr #32
...
00020040 <reset_vector>:
   20040:       e3a00000        mov     r0, #0  ; 0x0
   20044:       e59f1388        ldr     r1, [pc, #388]  ; 203d4 
<_eCos_id+0x14>



My question:

I guess I have to simple edit 
ecos/packages/hal/arm/xscale/idppxa/current/include/pkgconf/mlt_arm_xscale_idppxa_ram.h 
and mlt_arm_xscale_idppxa_ram.ldi so that it uses 0xc0008000, too?  Maybe 
something like

#include <cyg/infra/cyg_type.inc>

MEMORY
{
    ram : ORIGIN = 0xc0000000, LENGTH = 0x02000000
}

SECTIONS
{
    SECTIONS_BEGIN
    SECTION_fixed_vectors    (ram, 0xc0000020,           LMA_EQ_VMA)
    SECTION_rom_vectors      (ram, 0xc0008000,           LMA_EQ_VMA)
    SECTION_text             (ram,          ALIGN (0x4), LMA_EQ_VMA)
    SECTION_fini             (ram,          ALIGN (0x4), LMA_EQ_VMA)
    SECTION_rodata           (ram,          ALIGN (0x4), LMA_EQ_VMA)
    SECTION_rodata1          (ram,          ALIGN (0x4), LMA_EQ_VMA)
    SECTION_fixup            (ram,          ALIGN (0x4), LMA_EQ_VMA)
    SECTION_gcc_except_table (ram,          ALIGN (0x4), LMA_EQ_VMA)
    SECTION_data             (ram,          ALIGN (0x4), LMA_EQ_VMA)
    SECTION_bss              (ram,          ALIGN (0x4), LMA_EQ_VMA)
    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
    SECTIONS_END
}

Greetings, Holger


-- 
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]