<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>起点博客 &#187; Geode</title>
	<atom:link href="http://xinzero.com/tag/geode/feed" rel="self" type="application/rss+xml" />
	<link>http://xinzero.com</link>
	<description>起于学习，点与应用，一切只为更高效</description>
	<lastBuildDate>Mon, 06 Feb 2012 14:29:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>扩大WinCE可用物理内存</title>
		<link>http://xinzero.com/enlarge-wince-physical-memory-size.html</link>
		<comments>http://xinzero.com/enlarge-wince-physical-memory-size.html#comments</comments>
		<pubDate>Sat, 27 Dec 2008 17:28:44 +0000</pubDate>
		<dc:creator>will</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[Geode]]></category>
		<category><![CDATA[wince]]></category>
		<category><![CDATA[x86]]></category>

		<guid isPermaLink="false">http://xinzero.com/enlarge-wince-physical-memory-size.html</guid>
		<description><![CDATA[


WinCE系统内核的源代码中默认使用28M的内存。如果在Build Option中选中Run-Time Image Can be Larger than 32 MB (IMGRAM64=1)项，那么定制WinCE的时候Platform Builder会使用64M的内存来编译。对于大于64M内存系统的定制需要做些修改。
对于x86架构的GEODE处理器（注意此处是对于Geode处理，如果是CEPC则不需要改源代码，CEPC的内存修改方法），要支持大于64M的内存必须修改源码。
首先在WinCE安装目录找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\Inc\Pc.h文件，修改Pc.h中的CEPC_EXTRA_RAM_SIZE宏，CEPC_EXTRA_RAM_SIZE为总内存数减去Config.bib中详细列出的内存数。128M内存是在原来的0&#215;02400000基础上加上0&#215;04000000。
然后找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\Oal\OEMInit.asm文件，打开oeminit.asm文件，修改“_OEMAddressTable:”的值。 _OEMAddressTable是一个非常关键的内存映射描述表，主要描述物理内存和虚拟内存之间的映射，表的每一条目有3个DWORD,依次是（VA，PA，cbSize），其中VA是虚拟内存的开始地址，一般为80000000h,PA是物理内存的开始地址，一般为0，cbSize就是CE内核支持物理内存的大小，这个DWORD是我们最最关心的,其单位是BYTE。需要注意的是，cbSize,一定要是4M Byte的倍数，因为Windows CE.NET内核中检测内存大小，是以4M Byte为单位来检测的。cbSize系统默认为04000000h,其大小为64M,我们可以将其修改为8000000h,就可以支持128M内存了。
最后重新编译生成Buildi486oal.lib。选择Platform的Build OS菜单下的Open Release Directory打开CMD命令行（直接在windows下运行cmd命令行不行，一定要从Platform的build OS菜单进入）,进入 %_WINCEROOT%\Public\Common\OAK\CSP\i486\Oal目录下。然后执行：build –c和sysgen i486oal命令。然后在PB工作空间，选择FileView选项卡，找到%_WINCEROOT%\Public\Common\OAK\CSP\x86\Oal，右键后选上Run Makeimage Tool After Build，最后Build and sysgen编译生成映像NK.bin。
对于x86架构的非GEODE处理器，可以直接通过设置环境变量IMGRAM128=1，使系统可以支持128M的内存。注意config.bib文件中的代码RAM 80C00000 07000000 RAM，其中07000000代表分配的内存空间的大小，这部分空间是真实内存空间大小减去内核所占空间的结果。所以如果分配给RAM内存的空间过大，定制的系统加载之后会黑屏。
对于x86EMULATOR修改代码似乎也不能使其内存超过64M，测试了一次，失败了。
相关文章如何制作U盘DOS启动盘EVC通过网口调试WinCE设备方法ADOCE打包到WinCE NK.bin镜像中WinCE下SQLCE开发初探]]></description>
			<content:encoded><![CDATA[<p>WinCE系统内核的源代码中默认使用28M的内存。如果在Build Option中选中Run-Time Image Can be Larger than 32 MB (IMGRAM64=1)项，那么定制WinCE的时候Platform Builder会使用64M的内存来编译。对于大于64M内存系统的定制需要做些修改。</p>
<p>对于<font color="#ff0000"><strong>x86</strong><strong>架构的</strong><strong>GEODE</strong></font>处理器（注意此处是对于Geode处理，如果是CEPC则不需要改源代码，<a href="#cepc_memory">CEPC的内存修改方法</a>），要支持大于64M的内存必须修改源码。</p>
<p>首先在WinCE安装目录找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\Inc\Pc.h文件，修改Pc.h中的CEPC_EXTRA_RAM_SIZE宏，CEPC_EXTRA_RAM_SIZE为总内存数减去Config.bib中详细列出的内存数。128M内存是在原来的0&#215;02400000基础上加上0&#215;04000000。</p>
<p>然后找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\Oal\OEMInit.asm文件，打开oeminit.asm文件，修改“_OEMAddressTable:”的值。 _OEMAddressTable是一个非常关键的内存映射描述表，主要描述物理内存和虚拟内存之间的映射，表的每一条目有3个DWORD,依次是（VA，PA，cbSize），其中VA是虚拟内存的开始地址，一般为80000000h,PA是物理内存的开始地址，一般为0，cbSize就是CE内核支持物理内存的大小，这个DWORD是我们最最关心的,其单位是BYTE。需要注意的是，cbSize,一定要是4M Byte的倍数，因为Windows CE.NET内核中检测内存大小，是以4M Byte为单位来检测的。cbSize系统默认为04000000h,其大小为64M,我们可以将其修改为8000000h,就可以支持128M内存了。</p>
<p>最后重新编译生成Buildi486oal.lib。选择Platform的Build OS菜单下的Open Release Directory打开CMD命令行（直接在windows下运行cmd命令行不行，一定要从Platform的build OS菜单进入）,进入 %_WINCEROOT%\Public\Common\OAK\CSP\i486\Oal目录下。然后执行：build –c和sysgen i486oal命令。然后在PB工作空间，选择FileView选项卡，找到%_WINCEROOT%\Public\Common\OAK\CSP\x86\Oal，右键后选上Run Makeimage Tool After Build，最后Build and sysgen编译生成映像NK.bin。</p>
<p><a name="cepc_memory" title="cepc_memory"></a>对于x86架构的非GEODE处理器，可以直接通过设置环境变量IMGRAM128=1，使系统可以支持128M的内存。注意config.bib文件中的代码RAM 80C00000 07000000 RAM，其中07000000代表分配的内存空间的大小，这部分空间是真实内存空间大小减去内核所占空间的结果。所以如果分配给RAM内存的空间过大，定制的系统加载之后会黑屏。</p>
<p>对于x86EMULATOR修改代码似乎也不能使其内存超过64M，测试了一次，失败了。</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li><a href="http://xinzero.com/create-dos-startup-u-disk.html" title="如何制作U盘DOS启动盘">如何制作U盘DOS启动盘</a></li><li><a href="http://xinzero.com/evc-debug-by-ethenet-port.html" title="EVC通过网口调试WinCE设备方法">EVC通过网口调试WinCE设备方法</a></li><li><a href="http://xinzero.com/add-adoce-files-to-nkbin.html" title="ADOCE打包到WinCE NK.bin镜像中">ADOCE打包到WinCE NK.bin镜像中</a></li><li><a href="http://xinzero.com/wince-sqlce-dev-start.html" title="WinCE下SQLCE开发初探">WinCE下SQLCE开发初探</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://xinzero.com/enlarge-wince-physical-memory-size.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

