Hello,

I'm using a device with Pentim M and 1GB ram. So far I've mapped only 512 MB
Ram. I've tryed do map the additonal ram but the device crashes. As I read
the documentation the kernel can adress only 512MB ram diectly. How can I
acess the additonal RAM on my device ?

Re: Mapping 1GB Ram by Steve

Steve
Wed Mar 02 16:16:16 CST 2005

1) Use XPe
2) Wait for some unknown future version of CE to possibly support more than
512M...

Seriously - You can't use that much memory in Windows CE. The kernel does
not support a system with more than 512M of RAM. It's theoretically
possible, under limited conditions, to utilize more by employing a bank
switching technique. As a general technique that couldn't work but in some
specialized cases it could work without a significant performance hit if
implemented properly.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com



Re: Mapping 1GB Ram by Adrian

Adrian
Thu Mar 03 03:01:02 CST 2005

Hello Steve,

Thank you for answering.

I need to use Windows CE 5.0 for a real time data aquisition.

I will try to modify the OEM table with new memory mapping.

How does bank switching work ?

Re: Mapping 1GB Ram by Steve

Steve
Thu Mar 03 11:49:02 CST 2005

OEMAddressTable can only support a maximum of 512M, However any peripherals
that must be statically mapped there are done on 4M boundaries (for the x86)
so you don't get all 512 of that for RAM.

Bank switching works however the hardware engineers implement it. The
general idea is that you map several banks (or blocks) of RAM to the same
physical address and use a separate I/O register of some sort to select
which portion of the larger memory is "connected" to the fixed physical
address. This is also referred to as windowing. simple implementations
simply use a fixed set of blocks each a fixed size and then the IO registers
is effectively an index. more sophisticated implementations use a "sliding
window" where there are no fixed blocks and instead of an index the I/O
register is an offset for the start of the "window" (Most Display
controllers use some variation of this technique for "page flipping"


--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com



Re: Mapping 1GB Ram by Adrian

Adrian
Wed Mar 09 05:05:04 CST 2005

I would like to use dinamic allocation for 512MB RAM. I want to allocate
2x256 RAM. I've changed the OEMAdressTable with the 2 settings, but I dont't
know what to change in the config.bib to use this configuration. It allways
maps the memory statical.

How can I find the true values for RAM in the config.bib? For example
1E000000 is not 512MB. What algortim is used for this ?

Re: Mapping 1GB Ram by Steve

Steve
Wed Mar 09 11:52:40 CST 2005

huh? There is no Algorithm. config.bib simply lists the starting virtual
address size and type of each memory region.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com



Re: Mapping 1GB Ram by Bruce

Bruce
Wed Mar 09 12:14:22 CST 2005

There might actually be an alogrithm here. I suspect that it is:

TotalRAM = 512 Mb or 0x20000000 Bytes
PreAllocatedRAM=32 Mb or 0x2000000 Bytes

RAM = TotalRAM - PreAllocatedRAM

RAM is now 480 Mb or 0x1E000000 Bytes

PreAllocatedRAM might be set aside for things like a RAM image, DMA, Display
Buffer... But without knowing more about the config.bib that the OP is
referenceing this is just a guess.

Bruce