阅读:1843回复:8
如何提高启动速度?(100)
使用WinCE.NET做了一个产品(PC104工控模块),发现启动速度较慢。从NK.BIN加载算起,直至出现桌面,不包含BIOS引导时间,约需15秒。
1.各位做的产品,对应的启动时间是多少? 2.发现,在启动过程中,WinCE.NET有些不必要的动作,浪费时间: a.PnP ISA InitBusInfo : 0 card(s) found,产品没有PnP ISA设备当然不需要查询,如何去掉这个环节? b.PS2PORT,WinCE.NET的ps2、8042是一个驱动程序,我不需要PS2鼠标,但它还是要查,如何去掉?(如果插上个PS2鼠标,则能减少5秒的启动时间) c.产品不向用户暴露WinCE.NET的桌面,只有我的应用程序的界面。能不能去掉Shell.exe? 另外,调试时需要桌面,所以最好能在启动时,根据注册表的某个值,动态地决定是否加载Shell(注册表是永久存储的,应用程序可以读写注册表),怎么能做到呢? 每个问号都有分。谢谢。 |
|
沙发#
发布于:2005-02-23 15:28
1.我也用过PC104模块,启动时间也是15秒左右,和你的差不多,因为我的系统对启动时间没有太严格的要求。启动时间和你flash的大小、nk.bin的大小都有关系。
2. a.和b.: 这两个是否可以通过修改bios来实现。 c: (1)通过修改[HKEY_LOCAL_MACHINE\\init]下的键值\"Launch10\"=\"shell.exe\"可以屏蔽或使能对Shell.exe的加载。 (2)“另外,调试时需要桌面,所以最好能在启动时,根据注册表的某个值,动态地决定是否加载Shell(注册表是永久存储的,应用程序可以读写注册表),怎么能做到呢?” 请问,你说在启动时根据注册表的某个值,动态地决定是否加载Shell,那么这个注册表的某个值是什么时候设置的?我想只能是上次关机之前通过应用程序或者手动修改的。另外,要想使修改后的注册表在系统冷启动之后仍然有效,你要实现hive base registry功能,这部分你可以看看pb帮助里的文档。 |
|
|
板凳#
发布于:2005-02-23 16:02
感谢wwei_wang。
我会去bios里找找看,试着修改,如有问题,再请教。 “(1)通过修改[HKEY_LOCAL_MACHINE\\init]下的键值\"Launch10\"=\"shell.exe\"可以屏蔽或使能对Shell.exe的加载。”这样生成的NK.BIN就不能再加载桌面了吧? 你描述的“那么这个注册表的某个值是什么时候设置的?我想只能是上次关机之前通过应用程序或者手动修改的”,就是我现在的设想,hive base registry已经实现了,可以永久存储,冷启动之后仍然有效。 现在的问题是,如何能在启动时负责加载Shell.exe的那部分代码中,插入读注册表并决定是否加载的代码;能给些提示吗,比如这部分代码在什么文件,什么位置? |
|
地板#
发布于:2005-02-24 13:22
你看这样行不行:
(1)不管有是否加载桌面,系统启动后都自动运行你的应用程序,这个功能很容易实现; (2)另外,在你的应用中留个用户接口(如菜单命令或按钮等),通过它用户可以修改注册表以决定下一次启动的时候是否加载shell.exe。 |
|
|
地下室#
发布于:2005-02-24 14:19
你看这样行不行: 是的,我就想这样实现。第1条已做到;第2条,用户可以通过我的应用改写注册表选项;现在的问题是,WinCE.NET启动时,如何去读这个注册表选项,并决定是否加载Shell.exe? 在哪部分代码里增加这个判断呢? 另外,我反复察看了Bios,没有找到能够关闭ISA PnP和PS2的选项 [编辑 - 2/24/05 by benage] |
|
5楼#
发布于:2005-02-25 08:53
在你的应用中做个按钮或菜单命令,当需要下一次加载shell的时候,就修改[HKEY_LOCAL_MACHINE\\init]下的键值,增加\"Launch10\"=\"shell.exe\";如果下一次不需要加载shell,那么删掉这一行就行了。
|
|
|
6楼#
发布于:2005-02-25 14:39
在你的应用中做个按钮或菜单命令,当需要下一次加载shell的时候,就修改[HKEY_LOCAL_MACHINE\\init]下的键值,增加\"Launch10\"=\"shell.exe\";如果下一次不需要加载shell,那么删掉这一行就行了。 的确可行,已经实现。50分,不成敬意。请继续关注前两个问题。谢谢。 |
|
7楼#
发布于:2005-02-28 09:39
对于前两个问题,我觉得应该是这样:
在系统启动的时候,首先要对即插即用的设备进行检测(这需要一定的时间),对于检测到的设备则加载相应的驱动。如果想屏蔽对某一设备的检测,那么直接屏蔽对应的检测代码就行了。现在关键问题是找到这段代码。 |
|
|
8楼#
发布于:2005-03-01 17:01
谢谢提示。
在启动过程中,读出NK.BIN后,直至出现WinCE桌面,这个期间系统都做了什么,我不是很清楚,能不能给个介绍? 另:我分别用硬盘、CF卡,比较了NK.BIN读出后,到WinCE桌面出现之间的黑屏时间,分别是7秒和11秒;也就是说,因为CF卡的速率低,所以多用了4秒。如果忽略硬盘的读取时间(NK.BIN的大小是9M),这7秒里,系统在做什么? 总共11秒的黑屏,真是难受,用户会做何感想?我想至少应该做一个保持到桌面出现的splash screen,或者叫logo画面,如有经验,也请给指点。 [编辑 - 3/1/05 by benage] |
|