Is 30MB RAM available under WinCE6 normal?

helpWinCE
I installed WinCE6 NK.BIN and NBOOT-t35.bin but it seems I only have around
30mb of RAM when I go to control panel/system.

Is this normal or is there something I can do so I can have full access to
the 64mb of ram on the mini2440?

Thanks.

mindee
Hi,
yes, nk.bin will be copied into the RAM and take 30MB, the rest is for OS's
applications.

regards

mindee

crmann
I need all 64MB available for a navigation application that I have. This
application is designed to run on a 64MB ram CE 5 PNA (navigon).

I have reconfigured "config.bib" and the "image_cfg.h"
(IMAGE_WINCE_RAM_SIZE  ) entries to reflect 64MB (0x04000000) instead of
the default 32MB (0x01E00000). The default settings for config.bib confuse
me because they reflect a max allocation of 32MB.

I have poured over the MSDN docs, etc and have followed every step for
memory config and have searched many files. I just cannot seem to get the
right settings coded to access all 64MB of RAM inside wince. Hopefully
someone can shed some light on this that is more experienced than me.

domdom
It is not possible.
Windows CE can not be executed from NAND flash, that's why the bootloader
copies nk.bin in ram before to execute it.
Then, if the size of your nk.nb0 (nk.bin is a compressed file) is 30Mo and
your flash size is 64Mo, you won't have more than 34M0 available for your
application. But in reality, it will be less, because OS needs some RAM
too.
domdom

Errol
I have also been wondering about this. Is it really required to copy the
whole BIN file into ram? Can't we just copy the kernel into ram, and let it
load whatever it needs from NAND as required? :-)

I understand that you can't do Execute In Place from NAND, but 80% of BIN
isn't used all the time and just takes up space in ram.

For instance, if i include .NET2 in the OS then it gets copied into ram
with the rest of the BIN. But if i install it later then it gets loaded
into ram when needed.

Just wondering. :-)

crmann
Wow thanks domdom. This is bad news for me (at the moment). Short term
solution would be to trim down the image but no way would I be able to get
it small enough. Errol thanks for the input as well. I am going to do some
research into this. You guys at least gave me enough info to start looking
for the right solution.

As an aside - maybe we can find the 64MB SDRAM parts that are the brother
to the 32MB parts? That is the *real* solution.

Errol
crmann, i have also thought about upgrading the ram, but that would require
changes in the bootloader, the kernel startup code, SuperVivi(for which we
don't have source code) and maybe elsewhere... :-(

crmann
Here is something to consider - many of the navigation devices run CE 5 and
the applications require 64MB of RAM. Surely there is a solution to this! 

Thanks again for the info - I was looking in the wrong direction  :(

crmann
I should note "navigation devices" claim only 64MB RAM onboard...not, say, 
128MB so they have "extra" space.

domdom
Hi, 

A solution could be to reduce the size of nk.bin, if a reduced nk.bin is
compatible with supervivi, i think we could use the rest of the NAND flash
as a flash drive where we could add applications.
I tested briefly the windows CE 5.0 image that works like this. My 6.0
image don't, I didn't look why for the moment.
We can also add applications in a SDcard.

domdom

crmann
I am currently using the hive registry and ROM based file system so that my
settings are persistent within ce. Is this what you are discussing?

I am in the process of trimming down my NK.bin file to see how small I can
get it. I did a little research and yes, the core problem is that we cannot
use execute in place (XIP) due to using NAND.

domdom
No, what i'm trying to say is that if nk.bin reducing is possible (to
verify it, check the size of nk.nb0 that is the nk.bin not compressed), it
could be possible to configure the NAND flash part dedicated to the OS. 

Let's say that you have 64Mo of NAND flash. You can configure the OS to
take all the 64Mo and not more. Imagine that you have only 32Mo, you will
configure the OS to take the 32Mo and not more.
So it should be possible to configure the OS for 32Mo and reserve the other
32Mo for a flash disk.

But you are right, ROM based file system could be another solution...
domdom

crmann
I have been able to allocate more RAM to Programs by altering the
"FSRAMPERCENT" variable in 'config.bib'. Search the Help database for that
variable and also read this article for more info:

"CE memory division between "storage" & "program" memory"

http://blogs.msdn.com/sloh/archive/2004/09/09/227599.aspx

I currently have the following config:

FSRAMPERCENT=0x00000020


This will at least allocate practically ALL RAM to programs at boot. I'm
still trying to free up more RAM but it is difficult when I need the system
shell. It eats up a lot of memory.

crmann
Also note I am running a Hive based registry and ROM-only filesystem.

mVlad
A possible greater detail how it was possible to increase the available
memory for programs? I have a problem with Navitel Navigator and WCE6.0. -
Does not start or crashes with an error.