[ECOS] The 640k barrier

Andrew Lunn andrew@lunn.ch
Mon Dec 29 19:08:00 GMT 2003

On Mon, Dec 29, 2003 at 03:49:59PM -0300, Leandro Fanzone wrote:
> I already wrote about this in another thread, but as I didn't receive an 
> answer, I try to create a dedicated thread for this. I'm doing some 
> testing on eCos, and I'm trying to figure out if it fits our needs. I 
> wanted to quickly find out how much heap I have, so I made a floppy test 
> that mallocs memory until malloc returns NULL: some 140k of heap, and 
> that's it. We're planning a 2M i386 board, and though I declare through 
> the mlt_i386_pc_floppy files such thing, malloc always stops when the 
> pointer reaches the 640k barrier. It's also a concern for us that the 
> code can't be moved to the upper meg, because the linker complains 
> "relocation truncated to fit", something related to vectors.o, so I 
> assume that the interrupt vectors drag the code to the lower meg, and 
> therefore can't be moved that high. Our code will be large enough to 
> exceed the 640k, so the best for us would be to map the code in the 
> upper meg, and let data and heap in the lower 640k. Can someone help me 
> with this? I already modified the mlt_i386_pc_floppy.* files, but with 
> no success so far. Either I have linker errors, or it doesn't boot at 
> all. The documentation isn't much explicit about the this.

Floppy startup uses the bias to load the application into memory and
this limits it to the lower 640K. 

What you want to do is use a bootloader which can access all
memory. Redboot can do this. So make a floppy redboot image. Boot that
and then use it to load your application via the serial port/ethernet


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