So with all the excitement going on in the page pool thread I was doing some external reading. One topic that caught my interest is NAND and NOR ROM.
I got a nice summary from here:
http://blogs.msdn.com/windowsmobile/archive/2005/08/19/453784.aspx
Basically, the synopsis is:
NOR: Faster to read, slower to write.
NAND: Slower to read, faster to write.
But, more importantly, NOR ROM let's you perform XIP operations. Now i remember seeing this XIP acronym before...in a directory when I extracted a ROM. This leads me to believe that at least part of the ROM in the Kaiser is NOR ROM.
XIP means eXecute In Place. It basically allows code to be executed directly from the ROM without first being copied into the RAM. This means less RAM utilization. As the article states i works for programs only, not user data files.
If we look in the XIP directory of an extracted ROM we see subdirectories like:
busenum.dll
diskcache.dll
imgfs.dll
These are things like low level bus, disk, and file system drivers. These things make perfect sense to XIP.
My question then is... if indeed we do have NOR ROM that can do XIP operations, how much is free on a typical ROM? AND can we cook in other applications into this XIP NOR location instead of into the NAND ROM and thus have those eXecute in Place and free up additional RAM?
It would be nice to get the 3% of my RAM back from Voice Command, or the 1% from PocketCM, etc, etc...
Could it be as easy as moving .dll files from \SYS to \ROM\XIP before cooking the ROM? I doubt it, but is it possible?
I'm just throwing a concept out there and asking about it's feasability. I'm not really a developer so I don't know how much further I can take this.
Thoughts?
bengalih said:
My question then is... if indeed we do have NOR ROM that can do XIP operations, how much is free on a typical ROM? AND can we cook in other applications into this XIP NOR location instead of into the NAND ROM and thus have those eXecute in Place and free up additional RAM?
It would be nice to get the 3% of my RAM back from Voice Command, or the 1% from PocketCM, etc, etc...
Could it be as easy as moving .dll files from \SYS to \ROM\XIP before cooking the ROM? I doubt it, but is it possible?
I'm just throwing a concept out there and asking about it's feasability. I'm not really a developer so I don't know how much further I can take this.
Click to expand...
Click to collapse
I don't think that blog applies to the Kaiser-like devices anymore. We already use all the ROM space we get. The partitioning between XIP and storage is out of the same space and controlled by how the ROM image is built and whatever they set the pagepool to.
Did you run out of space of the 100MB+ internal storage we all get?
I don't know why it wouldn't apply...it's not a WM5 vs WM6 issue.
Based on the only specs I have seen it lists the Kaiser with 256 ROM and 128 RAM.
The question is what type of ROM is it? Devices can mix NOR and NAND ROM. And based on what I see on the extracted ROM, at least some of it must be NOR (because of the existence of the XIP directories).
And this isn't a question of storage space. I am not trying to get more usable storage...I have a 8GB SDHC card for that. I am trying to maximize my available application space.
The point of my post is... can an application, let's say like Voice Command be moved from what might be the NAND portion of the ROM into the NOR portion of the RAM (from \SYS to \ROM\XIP). It would take up the same space of the TOTAL ROM, but when it executed it DOES NOT NEED BE LOADED INTO RAM and thus your available application space is not decreased.
Again, I am not a developer, so I may be way off in asking if this can be done. However your response is one that doesn't speak to the theory I am proposing.
if I remember right this was talked about before but on a different device I think the hermes. I am not sure of the reason it couldnt be done but I just remember it couldnt lol. Something about allocated memory maps
Some interesting things
I found this wile reading the link you posted. Some great information in there.
By the way, every SD and CF card is made out of NAND flash. So, no, you can't XIP programs stored on a storage card.
Click to expand...
Click to collapse
So am I reading this right. That any program we have stored on our Storage Card won't utilize the XIP
I've been working on & subsequently screwing up, page pool alteraitions for awhile. Because I'm messing with a Kaiser(CE5) & a UMPC (CE6) based device, I can tell you that while the pagepool will save you some seconds, mostly with the loading of contacts, your inbox, & the boot to os speed of the device, for the most part you're right, you won't see much difference.
However, with CE6, that will change. With CE 6 based devices you will be able to completely comtrol paging, be it XIP or Data (Read Only) paging. Maybe wm7 will introduce CE6 to PDA devices. With CE6, formerly & frequently confused with WM6, you will have 2 page pools & several controls over them including compaction.
The effectiveness of page pool sizes can vary widely depending on the types of processes & programs you use, but suffice to say, the average user will take little to no benefit from a larger paging file.
For all of you truly interested, there is a PB process file called DevHealth.exe, that can be used via SD card to report the actual status of the paging pool. Google it, you will find it. Kind of interesting to see what your device is actually doing before & after the changes.
AllTheWay said:
I found this wile reading the link you posted. Some great information in there.
So am I reading this right. That any program we have stored on our Storage Card won't utilize the XIP
Click to expand...
Click to collapse
No but what the OP is asking is if we can take apps and put them in the XIP section and run them from there. I think someone should try it out just cook up a rom with a complete app cooked in the XIP and see what happens. the worst is bad blocks i would guess but maybe POF or OLI should chime in on this one.
I do believe you can XIP from an SD card, I believe MS has done this with a few test devices that utilize under battery sd cards. I think it's not something they've done mostly because of problems in system stability when the SD is removed.
austinsnyc said:
No but what the OP is asking is if we can take apps and put them in the XIP section and run them from there. I think someone should try it out just cook up a rom with a complete app cooked in the XIP and see what happens. the worst is bad blocks i would guess but maybe POF or OLI should chime in on this one.
Click to expand...
Click to collapse
THANK YOU AUSTIN!
Yes, this is what I am saying. Forget about SD cards (which, according to what I have read are all NAND and thus can't XIP).
I am just asking if some of the applications that we are cooking into the flash (the things that extract to \SYS) like MS Voice Command, CM Contacts, QuickGPS, etc... if instead those things can be places in XIP.
Again, this is under the assumption (which is a big assumption) that what is in \XIP gets placed in the NOR ROM and what is in \SYS gets placed in the NAND.
What this would mean is that when you execute any of the programs I mention, like say Quick GPS you won't see the RAM utilization on your device go up, meaning you will have the same amount of available free memory. This is because of the XIP (based on the description I have read) it can be executed from the ROM without being copied into RAM.
Now, my guess is that even though the NOR has faster reads than NAND, it still might be slower than RAM. So, it might take another second to open Quick GPS. However for some apps I think I would prefer the slight delay in order for my available memory to be increased.
GSLEON3 said:
I've been working on & subsequently screwing up, page pool alteraitions for awhile. Because I'm messing with a Kaiser(CE5) & a UMPC (CE6) based device, I can tell you that while the pagepool will save you some seconds, mostly with the loading of contacts, your inbox, & the boot to os speed of the device, for the most part you're right, you won't see much difference....
For all of you truly interested, there is a PB process file called DevHealth.exe, that can be used via SD card to report the actual status of the paging pool. Google it, you will find it. Kind of interesting to see what your device is actually doing before & after the changes.
Click to expand...
Click to collapse
Good info Leon...but better to put this in the pagepool thread so we can discuss it there (and please do). What I'm trying to get at here is not directly related to pagepool sizes and speeds.
austinsnyc said:
if I remember right this was talked about before but on a different device I think the hermes. I am not sure of the reason it couldnt be done but I just remember it couldnt lol. Something about allocated memory maps
Click to expand...
Click to collapse
That's entirely possible. Again, I'm being the "idea guy" as I'm trying to synthesize some info I have absorbed. The most programming I do is high level scripting and VB so I don't know details about how this stuff would actually work down at the memory map level. There may be some other issues as well. I was hoping there was someone in these forums who actually had the knowledge (and wasn't just following cooking tutorials like most of us) of how this stuff truly interacts.
Also please reference my post in the pagepool thread, has some good thoughts (I think!):
http://forum.xda-developers.com/showpost.php?p=2101324&postcount=99
bengalih said:
http://forum.xda-developers.com/showpost.php?p=2101324&postcount=99
Click to expand...
Click to collapse
In addition to the above, I have found some more info which may partially defeat my reasoning:
XIPKernel
There are portions of the deepest parts of the OS that have to XIP. If you're on NOR, that code just XIPs like everything else. Not so on NAND. For a NAND system to boot, it needs to load this code into RAM first and then run it from there. When the system is running, it can't really tell if it's running from RAM or ROM, so it assumes it's running from ROM and doesn't count this space.
The XIPKernel region tends to be between 1.5 and 2M.
Click to expand...
Click to collapse
So it seems that just because we have a \XIP directory doesn't mean we have NOR ROM. It could just be the area the ROM places data that in NEEDS to XIP, and therefore means that it will get copied to RAM on boot (instead of just XIPing from where it is in ROM). This could also account for the additional "missing" RAM up to 128MB.
Therefore moving an application to this \XIP pre-cook doesn't mean that it will save us any RAM (again, assuming we DON'T have NOR ROM). It could however speed up that application since we are basically "pre-loading" it into RAM instead of waiting for the load to be user initiated.
I guess a question now is does all XIPed code run at the same time and is that all at boot? It does us no good to try and load up voice command (or QuickGPS, etc.) before the supporting code from the OS has loaded.
So, this may all be a wash, but it does help explain some of the interaction better and even if it leads no where, at least we will better understand how the devices memory system works.
I'm also a newbie and visited xda-developers to find solutions for my phone needs (lack of memory, useful tricks and enhanced apps). I must thank all you your good job (and when possible I'll donate to the developers, too).
I tried to find some answers to my problems, and sometimes I didn't find them, so, here are some of them. I assume only newbies try to find these answers and experienced people have them in their genes.
Battery: when taking the battery out of the device, or by making a hard reset and them some soft resets without having it totally charged makes the phone to "believe" the battery is full-charged in the level it's when beginning to work. So the device ssems to spend more battery because it is not full at all, even when appearing as charged in the screen.
Low volume of ringtones: I presume our devices have a battery saving system that decreases the maximum loudness when the battery begins to be at criticall levels.
Increase programs memory (WM6) : This appears in lots of threads. I tried every solutions and now I'm enjoying more programs memory:
Installing (or moving -editing Registry when needed) all the apps in the storage card is a good thing. But I "bricked" my storage card (I was afraid of bricking my phone) because of abuse of storaging/reading/moving, so I had to reformat it. Better if you can have a backup in some PC folder !
\Windows\Appmgr contains uninstalling info. Moving its folders to storage card (and moving again needed folders to promgrams memory when you need to uninstall/modify some app) saves some space in programs memory.
Today plugins and start menu can not be moved to storage card
Help files (those htm ones) may be moven to storage card but sometimes you must modify the links.
For all those tricks there are lots of threads in xda-developers. I suggest all the newbies like me to make a search, read all the threads and take some notes (in paper), organize the notes and make a small strategy. Sometimes some links take to apps designed to help to free space or move applications or modify the registry.
Now I'll begin the path to cook my own ROM, following all the steps: learning to create a .cab, learning to flash, learning to cook ..... but what I'd like is to learn to understand the whole registry.
(My specialities are not related either to electronics nor telecommunications but to city planning and building). I'll post some questions/suggestions about storaging (ROM, ExtROM, ProgramsMemory, StorageCard) to expand space.
Okay, for the sake of this question:
ROM = Read Only Memory
RAM = Random-Access Memory
When embedding programs, such as Mobile Notes, into an image the ROM size of the program is decreased due to digital compression. However, does it also decrease the RAM usage for that program?
Off the cuff, I would think so. Kinda like how an Assembler-language program can run on older machines faster than an optimized C-language program when compiled on the same machine. The tighter the binary conversion, the faster the program can run.
Not sure this is true though. I am trying to decide if it would be better to cook for myself and add the 3rd-party apps that I use, or to use something cooked by someone else and then adding via cab files the apps I want.
Bump.
Still wondering...
I was thinking and can't remember where I posted it before, but it seems that all of windows mobile devices for the most part lack one think available ram, now I was wondering if a developer or everyday tinker person could create this. As we all know all of the new MS OS available have a feature called ready boost that allows you to use an usb flash drive with the same size to increase or double your available ram similar to the use of swap in linux. Now if were able to partition our sd disk to a portion being the size of the available ram and would make device see it maybe this could increase the lifespan of older devices and increase performance. I believe this can be achieved because I am able to boot an entire android rom off my sd card. And with the community effort this can be achieved. If you guys think this is a worthy opportunity please let me know though I don't program I will do what I can to help. Thanks in advanced.
search for ramdisk.
or click:
http://lmgtfy.com/?q=ramdisk+xda
gotcha but
I read through that and had different results (thanks for showing me how to use google........you have to have appropriate keyword for appropriate responses). Have you tried that image and did it help you?
I am one of the unlucky who've bought a new phone, unaware that android 4.xx contained even major changes compaired to the earlier versions. My phone is a HTC DESIRE 816, bought only because of the 8 gb internal memory and the promise that the phone supported additional 128 GB of memory
This has resulted in many of my programs no longer work because Android now blocks the direct access to the SD card and to the system.
What I find reprehensible is that these phones are sold without the producers inform us about this limitation, and I actually find that we have taking a step backwards concerning user freedom.
Furtermore HTC expresses thet they are 'excited to see what you are capable of. HTC eagerly anticipates your innovations'and also containes a complet guide to how to root your phone.
This, I find is hypocritical as they at the same time refuses to give us S-Off or to edit the platform.xml giving us access to our self paid SD CARD, and at the same time in their AD's makes a big deal about the fact, that we can add 128 GB of additional memory, but doesn't mention that we have no say over it.
A few Of my paid programs that doesn't work anymore:
Navigon, because of the amount of data it require you to DL.
My expensive Firewall / Antitheft.
My GPS tracking App
Nandroid,
Callrecorder
several of my paid Backup programs
many Jrummy App
etc etc.
We have to stand together an demand that the prducers find a solution, and we have to face up to Google, their excuse that it has to do with security don't hold water in court, they must have had other choices, but they chose the easiest and the one which made most trouble for their users.
Maybe instead they could have chosen to have apps that needed the R/W to apply for a signed certificate to get access to this and as the experts Google is to gather information, it wouldn't have been hard to monitor those apps who was awarded with the certificat to control if thet was abusing this.
This is just one solution, but I'm no expert, but guaranteed, there must have been lots of ways to solve and to achieve their goal.
Regards Sc0rpio