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]

Re: again ROMRAM startup on SA1100


On Mon, Jun 11, 2001 at 03:36:18PM +0200, Andreas Bürgel wrote:
> Hi folks,
> 
> I may have a working version now, but I found it far too easy to do. 
> So I suppose it's wrong somewhere. Here's what I did:

[..]

> My application now starts from ROM and seems to run in RAM, but there
> *must* be a trap waiting for me (?).

Where do you jump from ROM to RAM. I could not see it in your code. My
relocation code does..

#if defined(CYG_HAL_STARTUP_ROMRAM)
#define RELOCATE_TEXT_SEGMENT                                             ;\
        ldr     r2,=__exception_handlers                                  ;\
        ldr     r3,=CYGMEM_REGION_rom                                     ;\
        cmp     r2,r3                                                     ;\
        beq     20f                                                       ;\
        ldr     r4,=__rom_data_end                                              
  ;\
15:                                                                       ;\
        ldr     r0, [r3], #4                                              ;\
        str     r0, [r2], #4                                              ;\
        cmp     r2, r4                                                    ;\
        bne     15b                                                       ;\
        b       __new_pc                                                  ;\
__new_pc:                                                                 ;\
20:              

The b __new_pc is important. This is where is jumps from ROM to
RAM. Do you have an equivelent somewhere? You have to be carefull
about the address you are branching to. You dont want to make a
relative jump of 1 instruction, since you still end up on ROM. You
have to make big jump down into RAM. I just copied this code from Dave
Airlie.

        Andrew


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