目前我们的实验板可用
RAM
空间是
64M
,在
WINCE
系统中对应的虚拟地址从
0x8c000000-0x8ff00000
,我们来仔细分析一下这些宝贵的
RAM
资源是如何使用的。
首先,系统启动时会自动将映象
NK.nb0
拷贝到
RAM
中再运行,目前我们分配给
NK.nb0
的空间是
29M
(
0x8c200000-0x8cdf0000
)。无形当中就有
29M
不能使用,但是如果在定制系统的时候根据需求,以“开发出满足最大的开发需要的最小的系统内核”为标准,还是可以充分利用有限的
RAM
资源的。
其次,有一部分
RAM
可以由用户自己定义为某个外设的缓存区,比如:
display
、
dbug
、
camera
等等,这部分空间虽然可以修改,但是个人认为这部分空间没必要做修改。主要原因有二:一方面是这部分空间一般都是约定俗成的(比较了一个不同版本的
BSP
后得出来的),修改后有可能影响系统的稳定性;另一方面这部分空间是从
0x8c000000
-
0x8c200000
,大概就是
2M
空间,修改后可能可以省出
1M
空间。所以考虑到系统的稳定性,和节省的空间并不是很大,对这部分就不做修改。
配置系统内存和程序内存
在
config.bib
文件的
config
区有这样一个参数。
FSRAMPERCENT
:
格式: FSRAMPERCENT = number
格式: 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%
。
默认情况下,系统内存和文件内存是各占
50
%的,所以程序内存就只有
17M
了。为了提高系统的性能可以通过修改
FSRAMPERCENT
值的大小,来获得较大的程序内存空间。