阅读:1834回复:9
内存大于64M问题?
用PB定制NK时,如何使内存大小不受32M、64M的限制,如果内存是128M或256M要怎么修改呢?还有如何使定制后的系统的存储内存和程序内存不是对半分,而是自己可以设定一个比例。
在线等待,谢谢! |
|
|
沙发#
发布于:2004-08-27 09:54
需要改config.bib。这个文件定义了系统内存的分配.
在这个贴子里,我做了一些解释,你可以参考。 http://www.driverdevelop.com/forum/html_76340.html?1093572085 [编辑 - 8/27/04 by leo_cyl] |
|
论坛版主
|
板凳#
发布于:2004-08-27 13:25
在config.bib中memroy段指定内存的起始和长度,格式是:
Name Start Size Type 这样可以给出sdram的大小,对于ram file system,在config.h的config段用变量FSRAMPERCENT=0xXXXXXXXX指定,其中每一个字节的含义是: A 4-byte hexadecimal number. Each byte represents the number of 4-KB blocks per MB allocated for the file system, as follows: byte 0 = # of 4-KB blocks per MB in the first two MB byte 1 = # of 4-KB blocks per MB in the second two MB byte 2 = # of 4-KB blocks per MB in the third two MB byte 3 = # of 4-KB blocks per MB in the remaining memory 然后还需要在编译环境中设置一个环境变量IMGTINYFSRAM=1 这是另外一位兄弟fanronaldo试出来的:) |
|
地板#
发布于:2004-08-31 16:39
楼主不厚道。
回答了你的问题,竟然不给分。 |
|
地下室#
发布于:2004-09-01 14:46
hehe!你说的对吗?恐怕修改的不只这些吧!
打开%_WINCEROOT%\Public\Common\OAK\CSP\i486\OAL. 的 Oeminit.asm 修改 _OEMAddressTable: dd 80000000h, 0, 04000000h ; FLASH and other memory, if any ; dd FlashVA, FlashPA, FlashSize dd 0, 0, 0 The default RAM size in the example is 04000000h, which is 64 MB. • From the Build menu, choose Open Build Release Directory. • Navigate to %_WINCEROOT%\Public\Common\OAK\CSP\i486\OAL. • In the Build window, type build and press ENTER. • Type sysgen i486oal and press ENTER |
|
论坛版主
|
5楼#
发布于:2004-09-01 16:37
这个表不表示ram的大小,它只是指明第一级页表映射多少,你可以把第一级页表映射满,但并不是全部都可用。
|
|
6楼#
发布于:2004-09-01 17:41
TO no.killer
我们并不知道楼主的实际配置,所以只能给出解决问题的思路。 如果楼主不是使用x86体系的CPU,如何能修改Oeminit.asm ? |
|
7楼#
发布于:2004-09-02 16:30
谢谢大家了,我先把分给了.
我已经修改好了,需要修改3个地方.pc.h文件,Oeminit.asm 文件和congfig.bib文件. 不过我现在又有另外一个问题,我用的是128M内存,系统起来后显示的有90M可用,我给存储空间分配了16M,剩下的都作为程序空间,我做图象处理时,当我的程序起来后,系统的整个程序空间被使用了27M(这27M不都是我的程序使用的),然后我在程序里用GlobalAlloc()再申请6M空间时,系统出错,返回内存不够,不知道为什么? 我理解的原因可能有两种: 1、虽然我把128M内存驱动起来了,而且也做了分配,但是不可用,还需要改其他的地方。 2、好象CE系统的每个进程都受32M的限制,所以进程都不能大于32M。 不知道我分析的对不对呢?又该怎么修改??? |
|
|
8楼#
发布于:2004-09-03 09:41
大家帮忙呀,上个问题的分已送。我可以另开一贴送分。
http://www.driverdevelop.com/index.php 不过,主要是希望大家能相互讨论讨论,共同解决问题。 |
|
|
论坛版主
|
9楼#
发布于:2004-09-03 15:14
1.如果像你说的每个进程只需用32M的空间的话,那么有可能分配6M过大,超出了该进程寻址范围,比如本身该进程的代码和数据就使用了30M的地址空间。
2.系统可能分配不出那么大的连续空间,你试试分配多次小的空间呢 |
|