Grant Edwards <[EMAIL PROTECTED]> writes: > On 2006-10-30, Nick Garnett <[EMAIL PROTECTED]> wrote: > > > Using a RAM RedBoot to load RAM applications will not work > > since RedBoot would load at exactly the same address as the > > applications, with obvious bad consequences. > > That's odd, I do it all the time. ;) I've been shipping > products for years where RedBoot runs from RAM as a "ROM > Monitor" and loads applications into RAM. All you have to do > is run RedBoot in a section of RAM that you don't use for > applications.
Sure. But you have to build RedBoot differently from normal RAM applications in that case. > > > If this functionality is needed then RedBoot needs to be > > relocated. > > Which I guess is what I've done. You must have. Depending on the target there are several ways of doing this from an explicit startup type, configury to select a different .ldi file depending on what is being built, to explicit config options to set the RAM load address. > > > Since the main reason for doing this is often to allow RedBoot > > to be loaded via JTAG, > > I usually run RedBoot from RAM because > > 1) On my targets, RAM is several orders of magnitude faster > than ROM, and it allows RedBoot to keep up with network > traffic better. > > 2) Doing things like re-formatting flash and updating RedBoot > is much simpler if your not runnning from flash. > Both of which are what ROMRAM startup is designed to do. > I've been talking to our hardware guys about our next desing, > andit might not even have any any executable ROM, so RedBoot > will have to run from RAM. Using a built-in bootstrap to pull in an executable via I2C or SPI from a serial flash part is certainly possible. Such an executable probably need to be a careful combination of ROM and RAM startup as far as initialization is concerned. On some platforms you may need a two stage bootstrap to get a large application loaded. > > > then targets that support this usually have a JTAG startup > > type to support this. The same startup type supports the > > running of full applications via JTAG too. > > I've never heard of a JTAG startup type. How does it differ > from RAM startup? > Off the top of my head, there are two main differences: 1. Memory layout: usually it loads where a ROMRAM RedBoot would go, so that RAM applications can be loaded at their normal address. A RAM RedBoot would load at the same address as applications. 2. Initialization: It needs to initialize more of the system than a RAM RedBoot, since it cannot assume it is being loaded by a ROM RedBoot which will have already initialized most of the hardware. It also may need to do less that an ROM RedBoot, for example it cannot reinitialize the controller for the SDRAM it is running out of. Usually, some portion of the initialization has been performed by the JTAG device/software before the executable is loaded. Of course on some targets these issues may not be important, and a RAM startup RedBoot will work directly. -- Nick Garnett eCos Kernel Architect http://www.ecoscentric.com The eCos and RedBoot experts -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss