Wince 下的内存实际上是分为三个部分的. 先说这几部分的名字,对象存储, 系统内存,程序内存. 准确来讲,应该用下面公式说明Wince内存 = 系统内存 + (对象存储 + 程序内存).这里德内存也就是我们平时说的SDRAM,而我们的平台用的64M的SDRAM。
程序内存不用解释,就是可供我们的程序用的内存。
对象存储是wince里一个新的概念. 嵌入式wince操作系统一般是用在消费电子上面, 比如pocket pc, 手机, PDA等移动设备上. 这一类的设备一般都是有两个电源的, 一个是主电源(比如你的手机电池), 一个是后备电池(拆开手机,电路板上可以找到那个小电池). 后备电池的作用就是在主电源没电的情况下,维持操作系统的一些需要保存的数据, 比如注册表, 数据库等. 而这些要保存的数据就是放在对象存储里的,可以复制一个文件到wince下(SD卡,U盘除外),会发现对象存储占用空间变大,到这里,你应该理解对象存储了。
winCE系统在控制面板中滑动那个分配程序内存和储存内存大小的滑动条,但是这种情况在系统冷启动后有恢复成系统默认的了。
在config.bib中有个CONFIG 这里的详细内容可以参考何宗建老师的书。在CONFIG字段下面加入 FSRAMPERCENT=0x20202020 。这里为什么是0x20202020。可以参考网上牛人的公式。FSRAMPERCENT是一个4byte长度的十六进制数, 我们用代数假设 FSRAMPERCENT = 0xQXYZ, 其中Q,X,Y,Z都是十六进制数
那么最终划分给Storage Memory的大小 = ( Q + X + Y + Z ) / 0x400 * TOTAL_RAM_SIZE 以我平台例子可以发现Storage Memory = (0x20+0x20+0x20+0x20)/0x400*64 = 3800KB.
总体内存 TOTAL_RAM_SIZE
存储空间大小 StorageMemeory =(Q+X+Y+Z)×TOTAL_RAM_SIZE/0x400
程序空间大小 ProgramMemeory =TOTAL_RAM_SIZE-StorgeMemeory
假设开发板剩余的SDRAM空间是32MB,那么存储空间为6MB,程序空间为26MB,计算如下:
StorgeMemeory = (0x20+0x20+0x40+0x40)×32/0x400=6MB
ProgramMemeory = 32 -6=26MB
这是理论计算值,实际值略有偏差。
或者使用动态分配内存的代码,可参见:
http://blog.csdn.net/peilong1988/article/details/6291998
阅读(1390) | 评论(0) | 转发(0) |