Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333709
  • 博文数量: 97
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 636
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-12 22:41
文章分类

全部博文(97)

文章存档

2017年(8)

2015年(87)

2014年(2)

我的朋友

分类: 嵌入式

2015-06-13 12:03:01

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
阅读(1348) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~