助你一臂之力,XIPKERNEL可以裁减到1.2M以内。我用了MULTI BIN,加载BINFS为根目录方式,实现程序内存到60M,最多可以到60.8M,不过这种方式启动时间比较慢,把XIPKERNEL拷到内存后启动过程大概需要7,8秒钟,好像没有我之前的那种快。
MODULES
; Name Path Memory Type
; -------------- --------------------------------------------- -----------
nk.exe D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\kern.exe XIPKERNEL SH
coredll.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\coredll.dll XIPKERNEL SH
filesys.exe D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\filesys.exe XIPKERNEL SH
fatfsd.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\fatfsd.dll XIPKERNEL SH
diskcache.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\diskcache.dll XIPKERNEL SH
fatutil.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\fatutil.dll XIPKERNEL SH
binfs.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\binfs.dll XIPKERNEL SH
fsdmgr.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\fsdmgr.dll XIPKERNEL SH
mspart.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\mspart.dll XIPKERNEL SH
ceddk.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\ceddk.dll XIPKERNEL SH
smflash.dll D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\smflash.dll XIPKERNEL SH
FILES
boot.hv D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\boot.hv XIPKERNEL SH
default.hv D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\default.hv XIPKERNEL SH
user.hv D:\WINCE500\PBWorkspaces\SMDK2440\RelDir\SMDK2440_ARMV4I_Release\user.hv XIPKERNEL SH
--------------------------
现在修改了EBOOT,因为在MUKLTI-BIN,时生成的XIP被下载下来还是当做一个BIN文件,所以我在EBOOT里面对他做了一些处理,我把BIN文件都一个个提取出来,然后在存入FLASH,在启动时,只读取RAMIGAGE的段和CHAIN段!
----------------------
搞定,内核 1。9M!
---------------------
harktrip兄弟
搞定后发表一下做法文档啊!
我下星期也找个时间玩玩,思路按照你们的来玩
不过有点想不明白,把NK做成XIPKERNEL.nb0(内核部分)跟nk.nb0(其它镜像)
我eboot首先把XIPKERNEL.nb0拷到内存去运行,运行完了呢?怎么去加载第二部分的nk.nb0文件呢?还是要把第二部分NK.NB0拷到内存去吗?这样不是又要占用拷贝时间?
你NK.NB0部分跟RAM部分区载还有重叠吧?
-------------------
应该保证BINFS在系统从default.hv和user.hv读取注册表前就可用,所以你要保证你的boot.hv,BINFS,FMD驱动到RAMIMAGE的region里面而不是NANDIMAGE!所以对BINFS和SMFLASH的驱动的注册表的值也应该在:
;HIVE BOOT SECTION
;END HIVE BOOT SECTION
这个设置你可以参考网站上很多资料。
----------------------
一直有关注这个帖子,看你们似乎已经到此为止了,提几个问题,希望你们再接再励,看了harktrip发了贴图,知道系统跑起来占用了11432K,实际上已经用了11M之多了,前面辛辛苦苦挤那么个1~2M,这里系统基本没跑自己的应用程序就占用了11M之多。实际上最终说起来可用于自己的应用程序的内存只剩下47M多点。还有个问题,启动时间还是缩短不了。对比远峰的产品,我看到可用于程序内存是61M,系统跑起来,跑了主界面应用之后,explorer,我通过控制面板看到它占用的程序内存不到6M,光这点比我们自己作出来的节省5M之多内存,还有就是它的启动速度。所以要达到这个水平看来现在这种做法还有很大距离。
---------------------
做这个完全不是为了提高启动速度,启动速度和很多有关系,自己加载的驱动多少,另外内存占用的大小也和你的驱动和模块的多少有关。 现在我的整个IMAGE达到了36M,当时候MULTI-BIN之后,最终使用的RAM也就10多M,这样怎么也省了个10M。如果真要做成那样,那就精简IMAGE吧
-----------------------
搞到现在,我自己觉得要加强的…
1. 2440在WINCE开机后,已先占用10MB (图中11M,是因为执行了抓图软件),
但2410的板子,却只占8MB. 但因为LCD BUFFER我都是抓到1MB,可降的空间有限,
不过还是可以再试试 (我没记错的话,远峰GPS开机后占用6MB)
2.关于XIPKERNEL的大小,其实想想,降到最低时,例如0.8~1 MB,
但启动WINCE时势必会因为要读取驱动程序,而拖延到开机时间,不过我现在的2.6MB是大了点.
3.就是开机时间了, 2440的现在送电到看到桌面=7秒, 2410的为9秒.
不过监看debugmessage ,有些过程的确需要再改进,
因为ETHERNET驱动和其它INIT的动作,有稍微停顿..|
我估计修正过后,再加上看到桌面前就跑自己的AP,可以到5秒左右. 就看这几天优化后的情况吧!
----------------------
楼上的兄弟,我现在研究的就是看到桌面前,到底做了哪些驱动INIT…
目前只确定s3c2440disp.dll 是一定要含在里面的
触控的也要含在内会比较恰当
enthernet(cs8900,dm9000) 当然就到桌面之后才init
另外FMD_INIT_DONE之后不知做啥了…也做太久了..至少停顿1秒
至于xipkernel变大..只要在3MB以内,都是我可接受的范围内
xipkernel的大小,我是放弃了,因为拼命搞到1MB吧,可是开机时间多了2-3秒,这不划算~~