Wince storage memory and program memory


The RAM on a Windows CE–based device is divided into two areas: the object store(对象存储区) and the program memory(程序存储区).

The object store resembles<类似于> a permanent<永久性的,固定的>, virtual RAM disk. Data inthe object store is retained when you suspend or perform a soft resetoperation on the system. Devices typically have a backup power supplyfor the RAM to preserve data if the main power supply is interruptedtemporarily. When operation resumes, the system looks for a previouslycreated object store in RAM and uses it, if one is found. Devices thatdo not have battery-backed RAM can use the hive-based registry topreserve data during multiple boot processes.

The program memory consists of the remaining RAM. Program memoryworks like the RAM in personal computers — it stores the heaps andstacks for the applications that are running. 


具体的设置可以在系统启动后,Control Panel -> System -> Memory里面看到。默认的是把内存五五开,一半给Storage Memory, 一半给ProgramMemory用。这样显然是不合算的。以64M的RAM为例, 启动后Storage Memory 32M,而因为没有留出界面让用户往里面拷东西, 任何时候in use都不会超过10M; Program Memory也是32M,但启动后就用掉27M, 实际上应用程序可用的内存只有5M, 一旦达到了上限,那么每前进一步都要很艰难地去释放几十K内存,然后用掉,再去释放几十K内存,如此循环,此时应用程序的运行速度狂慢无比.


划分的方法也很简单,其实说白了就一句话,

在BSP的config.bib里 CONFIG 区添加这个变量 FSRAMPERCENT = 0xXXXXXX,

但注意两点,

(1) 必须写在config.bib的CONFIG区里, 不是plagform.bib不是config.reg等其他文件而是config.bib,也不是config.bib文件的任意地方而一定要在CONFIG REGION里.
(2) FSRAMPERCENT这个变量一定得写为FSRAMPERCENT, 不能写成FSROMPERCENT不能写成ILOVEU, 或者阿猫阿狗什么的.


FSRAMPERCENT是一个4byte长度的十六进制数, 我们用代数假设 FSRAMPERCENT = 0xQXYZ,

其中Q,X,Y,Z都是十六进制数,Q(BYTE3)----------Z (BYTE0)


The following code example shows how to use FSRAMPERCENT to allocate available RAM to the file system.

FSRAMPERCENT=0x10203040
 

In this example,  64(0x40)* 4KB chunks are allocated to byte 0.

                         48 (0x30)*4KB chunks are allocated to byte 1,
                         32  (0x20)   *4KB chunks are allocated to byte 2,

                         16  (0x10)*   4KB chunks are allocated to byte 3.
The total percentage of memory reserved for the file system would be ((64 + 48 + 32 + 16) * 4KB) / 4MB, or 15.6%.


config.bib文件中的FSRAMPERCENT说明

FSRAMPERCENT:
格式:FSRAMPERCENT = number
  默认值为0x80808080。指定为文件系统分配的内存的百分比。number分为四个字节,由十六进制表示。

byte0的值(单位为4KB)表示在第一个2MB中,其中每1MB包含的4KB的整数倍。
byte1的值(单位为4KB)表示在第二个2MB中,其中每1MB包含的4KB的整数倍。
byte2的值(单位为4KB)表示在第三个2MB中,其中每1MB包含的4KB的整数倍。
byte3的值(单位为4KB)表示在剩下的内存中,每1MB包含的4KB的整数倍。

  计算一下默认值0x80808080表示的百分比:0x80*4K/1M = 0.5,因为每个字节都等于0.5,所以整个占用的百分比是50%。


config.bib文件中的FSRAMPERCENT修改实验数据

FSRAMPERCENT设置的值为存储内存占系统整个内存的比例,系统整个内存=存储内存+程序内存

在WINCE系统的控制面板的系统的内存选项有对应的FSRAMPERCENT设置的一个进度条反应出来


prog ram is %50--------程序内存占整个内存的比例
FSRAMPERCENT=0x80808080  

prog ram is 87.5%--------程序内存占整个内存的比例
FSRAMPERCENT=0x20202020

prog ram is 50%--------程序内存占整个内存的比例-
FSRAMPERCENT=0x80808010

prog ram is 88%--------程序内存占整个内存的比例
    FSRAMPERCENT=0x10808080

rog ram is 94%--------程序内存占整个内存的比例
   FSRAMPERCENT=0x10101010


基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值