内存地址分配:config.bib的配置
--作者:赖玉平(Auly)[email protected]
在嵌入式wince系统里,内存的分配,是通过config.bib文件来设置的,如分配显存地址,RAM地址,ROM地址等等。下面将详细介绍在该文件里面用到的一些关键字和使用NK镜或使用XIP时不同的地址分配。
(1) RAMIMAGE 是放在RAM里面的镜像,这个地址空间不受CE控制,这是启动时,自动拷贝到内存的区域,
(2) NANDIMAGE 是放在flash里面的镜像,这里给它分配的空间,是表示当系统要调用到它的函数时,把它拷到哪一块区域去运行,因为程序不能直接在flash中运行,所以,一般把它和RAM的区间重叠起来,表示把它拷到RAM去运行。因为有很多程序是放在NK里的,在platform.bib 中设置, NK SH , 这样的话,如果NK放在flash中,那该程序也是放在flash中了,当系统要调用它时,才拷贝到RAM中来。
(3) RAM 这是让CE来管理的地址空间,也就是让系统来动态支配的空间。
(4) 如果是采用NK方式,那么image要自动拷贝到RAM的,所以它的NK要分配的空间是RAMIMAGE。如果是XIP方式,那么,自动拷到存中的是XIPKERNEL,其它的先放在flash中,用到时才拷到内存中运行,所以NK要做成是NANDIMAGE
XIP方式:
XIPKERNEL 80200000 00300000 RAMIMAGE
NK 80500000 01900000 NANDIMAGE
NK方式:
NK 80100000 01F00000 RAMIMAGE
(5) 注意,如果专门为某一模块保留专用的空间,那最好这个空间不要在RAM的范围之内,不然系统有可能会动态地把它分配给其它应用使用了。
如给显示设的显存,就最好不要放在RAM区间内:
DISPLAY 80100000 00100000 RESERVED
例子:
XIP:
#define CHAIN_ADDRESS 81D00000
#define CHAIN_LENGTH 00001000
XIPKERNEL 80200000 00300000 RAMIMAGE
NK 80500000 01900000 NANDIMAGE
CHAIN $(CHAIN_ADDRESS) $(CHAIN_LENGTH) RESERVED
RAM 80500000 03B00000 RAM
FLASH 92000000 00100000 RESERVED
ARGS 80020000 00000800 RESERVED
SLEEP 80028000 00002000 RESERVED
EDBG 80030000 00020000 RESERVED
DISPLAY 80100000 00100000 RESERVED
NK:
NK 80200000 01900000 RAMIMAGE
RAM 81B00000 02500000 RAM ;这时的NK与RAM是不能重叠的
FLASH 92000000 00100000 RESERVED
; Common RAM areas
ARGS 80020000 00000800 RESERVED
SLEEP 80028000 00002000 RESERVED
EDBG 80030000 00020000 RESERVED
DISPLAY 80100000 00100000 RESERVED