[ECOS] ROMRAM on EB55

Alan Bowman ABowman@synaptics-uk.com
Tue Dec 16 08:46:00 GMT 2003


Nick, thanks for your response.

So now I understand why the addresses aren't what I expected.  I have now attempted to place the redboot_ROMRAM.srec file into the boot area of flash, using the sequence below (obtained from HyperTerminal, after rebooting my EB55 into Redboot ROM):

RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN - built 20:04:38, Jul 15 2003

Platform: Atmel AT91/EB55 (ARM7TDMI)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.

RAM: 0x02000000-0x02040000, 0x02006948-0x0203f000 available
FLASH: 0x01000000 - 0x01200000, 32 blocks of 0x00010000 bytes each.
RedBoot> load -m ymodem -b %{FREEMEMLO}
CAddress offset = 0xffffec00
Entry point: 0x02006c40, address range: 0x02006c00-0x02015894
xyzModem - CRC mode, 2(SOH)/178(STX)/0(CAN) packets, 4 retries
RedBoot> fi wr -f 0x01100000 -b %{FREEMEMLO} -l 0x10000
* CAUTION * about to program FLASH
            at 0x01100000..0x0110ffff from 0x02006c00 - continue (y/n)? y
... Erase from 0x01100000-0x01110000: .
... Program from 0x02006c00-0x02016c00 at 0x01100000: .
RedBoot>

At this point I then switch the boot jumper to boot from the alternative area (0x01100000 instead of 0x01000000) and reapply power to the board.  I get no output on my Hyperterminal window.  Am I applying my ROMRAM image incorrectly?

Alan Bowman

-----Original Message-----
From: Nick Garnett [mailto:nickg@ecoscentric.com]
Sent: 15 December 2003 17:56
To: Alan Bowman
Cc: ecos-discuss@sources.redhat.com
Subject: Re: [ECOS] ROMRAM on EB55


Alan Bowman <ABowman@synaptics-uk.com> writes:

> I am attempting to use a Redboot ROMRAM image on an EB55 board.  I
> have the images that are in the CVS repository, under
> images\arm\at91eb55.  I thought that the ROMRAM image should act in
> the same way as the ROM image at startup, i.e. it sits in the boot
> area of flash, and sets up the processor, etc.  However, when I look
> at the provided srec image, redboot_ROMRAM.srec, I can see that it
> intends all the data to end up in the 0x02000000 area, which is RAM.
> The Redboot_ROM.srec file has its address in the 0x01000000 area,
> which is what I would expect, as this is the boot area of flash
> prior to remap.  (I appreciate that I need to load this into RAM
> before it can be placed in this location).
> 
> Is there an error in the ROMRAM.srec file, or have I misunderstood
> where it should end up in memory?  My ROM and RAM images work
> exactly as I would expect, but I am really struggling with ROMRAM.

A ROMRAM startup executable is designed to copy itself to RAM from ROM
on startup. It is therefore linked to execute at its RAM address and
the code that runs up to the point it does the copy and jumps to RAM
is position independent.

What you see in the srec file are therefore the RAM addresses. We
could, I suppose, use objcopy to rebase the file to its ROM
location. However, since you have to load it into a different memory
address from either in order to then program it into the flash, it
doesn't actually matter. All the addresses in the srec file do is
serve to define the relative positioning of the records as they are
loaded.

-- 
Nick Garnett                    eCos Kernel Architect
http://www.ecoscentric.com      The eCos and RedBoot experts

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



More information about the Ecos-discuss mailing list