WinCE的快速启动

PXA270上的双启动功能已经实现了,但又引入了一个新问题,WinCE的启动太慢,大概需要2分钟!这显然是不能忍受的。通过两天的努力,现在已经缩短到20秒,虽然还是有点长,但已改善不少了。先整理一下,免得忘了,有时间再做优化。

      WinCE启动慢的主要原因是从NAND FLASH中加载NK到内存特别慢,这几乎占了99%的时间,而加载完NK后的启动其实是挺快的。所以要缩短启动时间,可以通过缩小NK来实现,因为NAND FLASH的读写速度是一定的,没有太大的改善空间。

      WinCE中提供了Multi-BIN的功能,它将整个内核映像分成几部分,在WinCE启动时可只加载核心部分,这样就能有效提高WinCE的启动速度。

      要实现Multi-BIN,必须做两部分的修改,一是EBOOT,另外一个是映像。下面就简要说一下这两部分实现时的要点和注意点。

EBOOT中需要支持BINFS,这在先前做双启动时已经留好了路,没什么问题。

EBOOT中需要支持Multi-BIN的下载和烧写,这一部分可参考帮助文档的相关部分。

映像的修改,首先是bib文件,配置各部分的大小,并设定NK.bin中包含的文件,需要注意的是FLASH的驱动(nandflash.dll)必须包涵在NK.bin中。在定制系统时,需要添加BINFSFATFSROMONLYFSHIVE-BASEED的注册表。修改NANDFLASH的注册表配置,使其在BOOTPHASE 0加载。整个过程,代码的修改比较少,除了EBOOT中需要修改一些代码外,映像只需修改几个配置文件。

需要注意的是调试Multi-BIN的映像最好不要用Debug的方式编译下载,否则会出现一堆可怕的打印信息,摘录如下:

0x83d16000: BINFS: InitVolume - Signature of ROM Header does not Match- Assuming Chain Region

0x83d16000: FLASHDRV.DLL:L2P_GetPhysicalSectorAddr() - Secondary table doesn't exist for logical sector 0x11689!!!

等这些打印信息完成,得要好几分钟。用Release的方式编译则不会有这个问题。Debug模式下,为什么会出现这些,还不清楚,有时间再看吧。

贴两张效果图,实现MULTI-BIN前后SDRAM的大小比较。


这是采用MULTI-BIN时,SDRAM的大小,60M Bytes


没有采用MULTI-BIN时,只有35M Bytes

这两幅图表明,MULTI-BIN除了能提高WinCE启动的速度,还能增加WinCE的可用内存。这是MULTI-BIN的另外一个重要作用。

除了MULTI-BIN能提高WinCE的启动速度外,优化启动时驱动的加载也能提高WinCE的启动速度。一般情况下,驱动的加载都很快,可以不予考虑。但在驱动加载很费时间时,如果通过异步的方式加载驱动,那将给用户带来极速体验,5秒钟进入WinCE界面!

、、============在CSDN里发贴问到的======================

30m的话你的NK是中文的吧? 
如果是中文的添加Agfa AC3 Font Compression\GB18030 Dta Converter\simsun&nsimsun(subset 2_50) 
这样大概可以小10M左右 
另外你的BSP都调试确定没有问题之后,生产的时候可以将那些串口打印信息都屏蔽掉,还会省一点时间。

增加字体压缩组件,如LS所说是一个可行的方法

如果CPU速度低于300MHZ,Agfa AC3 Font Compression最好不要选,这样仍然可以比默认的减小7M左右



你的意思是不用设置下面的这个菜单了? 

要设置,只是上边选组件的时候选的字体比PB默认选的中文字体小,并且Agfa AC3 Font Compression是压缩字库的。 
我目前16M

相应的Boot程序也得跟着改,如果NK是10M,Boot上电只读10M。这样开机Boot读NK到内存速度快,NK启动速度也快。可以控制在10秒内

可以修改下启动文件,在NANDFLASH中存放nk.bin,在copy时将nk.bin释放到ram中,这样的话会快点。

IE浏览器也有几兆,还有那些JSCRIPT,去掉一些组件,目前我的压缩到18M了 
如果用XIP会不会速度快点,或者调试注册表的信息。具体的我也不清楚,但是我想内核大和启动速度应该不是完全对应的吧!

调试信息,设备管理器加载驱动的多少等,也影响启动速度。所以注册表和BSP都要瘦身!

从NANDFLAG拷贝到SDRAM的时候很慢,要大概15S,运行的时候不慢。 
所以问大家如何把WINCE剪小。 
另外我重新编译的时候,发现NK.NB0并没有变小,字节长度一样,但NK.BIN却小很多了, 

补充下(未测试): 
================================================== 
下载NK.NB0的时候,先清空SDRAMD的内润NB0后面的NULL数据都不下了,然后直接运行。 
====================================================== 
如何在不删除必要组件的前提下减小内核文件长度? 
1是自定义组件 
2是压缩字库。 
首先,NK.BIN中的内容是被压缩过的,NK.NB0中的内容是没有压缩的。 
两者大小的区别是因为在生成过程中BIN会将你设定的后面的NULL自动去掉,而NB0就不会。 
NB0的大小就是第三个变量ROMSIZE所设置的大小。 
由于nk.nb0是非压缩的数据,里面的数据就是NK展开以后在内存里面的数据。 
而nk.bin是有压缩的数据,里面的数据是压缩以后类似于成块形的数据,被loader拷贝到内存以后没有区别。 
由于bin文件需要解压,因而其下载方式也不一样, 
通常,通过串口直接下载用nb0,pb下载用bin。


其次,nk.nb0是可以直接烧到FLASH/ROM中的,是代码镜像,可以直接跳转到其入口执行。 
而nk.bin是Microsoft binary image格式的文件,必须按其格式定义解开到其指定的地址空间的位置才能执行。
75、如何在不删除必要组件的前提下减小内核文件长度?   
   要减小内核文件长度首先要在使用PB的定制内核向导中选择自定义,也就是说对于每个组件都由自己来选择,而不是选择PB的标准配置。但减小内核文件长度最有效最直接的办法是缩小字体,尤其对于东亚字体,采用字体压缩技术并且选择合理的字库文件将明显缩小文件长度。   
1)、在定制内核时选择AGFA AC3 Font Compression组件。SYSGEN变量为SYSGEN_AGFA_FONT。   
2)、参考标题为“East Asian Font Versions”的帮助文档,从中选择你需要的字库文件加到内核中,从文档可以看出加AC3压缩比不加压缩在文件长度方面差距很大。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】ABP源码分析三十九:ABP.Hangfire

ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的。 HangfireBackgroundJobManager:实现了接口IBackgroundJobManager中的方法EnqueueAsync,通过HangfireBackgroundJob完成Enqueue。重写了BackgroundWorkerBase…

计算机无法显示硬盘盘符,电脑硬盘不显示盘符怎么办 移动硬盘不显示盘符的原因...

电脑上是目前我们经常会使用到电子设备,其中电脑硬盘是电脑重要的零部件,它可以为电脑存储和运行各种文件,是电脑不可或缺的组件,然后用户在使用电脑的时候突然发现电脑硬盘不显示盘符该怎么办,移动硬盘显不示盘符的有…

博客诞生过程与变革:十年来谁是写博客第一人?

北京时间3月21日,国外媒体有文章称,假如没有一亿人每天热衷于写Blog,那么Blog可能不会成为目前互联网上最主要的应用之一。于是,不止一个人声称自己是第一个写Blog的人。到底谁才是第一个真正写Blog的人呢?是备受争议的…

百度云cdn设置州五年制大专_图说云原生:让云原生转型变得像种白菜一样简单...

序有一天,女朋友突然问我:“能不能跟我讲讲,你每天在开发的这些“天合”云原生平台、容器引擎、微服务,都是做什么的呀?”我说:“可以啊。简单来讲,我们的产品就是帮助客户实现云原生应用的上云…

WinCE中命令行工具Viewbin简介

作者:ARM-WinCE Viewbin是微软提供的一个命令行工具,在WinCE6.0中,可以在"/WINCE600/PUBLIC/COMMON/OAK/BIN/I386"找到他。Viewbin工具可以用来查看NK.bin文件。它可以从NK.bin中获得这个NK image的大小,运行的起始地址…

【转】ABP源码分析四十:ZERO的Application和Tenant

ABP的Zero模块以数据库为数据源实现了ABP框架中的tenant management (multi-tenancy), role management, user management, session, authorization (permission management), setting management, language management, audit logging等核心功能。ABP中的这些功能具体实现都依…

生命、生活:同样重要

生命是一种责任,生命是一个过程,也是一种目的。在短暂的生命历程中,我们必须使生命具有更高的意义。在自己有限的生命中建立起一些永恒的东西。 生命中最好的景致有时并不是用浓墨重彩描绘而成的,它也许只是一个淡淡的足迹&#x…

allegro标注尺寸设置_标注新升级 | SOLIDWORKS 2020新功能揭秘

在实际设计过程中,尺寸链在工程图尺寸标注中使用率是非常高的。尺寸链是由互相联系的尺寸按一定顺序,首尾相接排列而成的封闭尺寸组。常规设置方法在SOLIDWORKS之前的版本中,我们可以使用:基准尺寸、尺寸链(水平&竖直尺寸链)完…

WinCE中命令行工具cvrtbin简介

作者:ARM-WinCE 关于cvrtbin的用途,最常用的就是将NK.bin转换出NK.nb0。用法如下: cvrtbin [options] [filename] -s 从bin文件中产生sre文件 -r 从bin文件中产生rom文件 -a rom文件的起始地址 -w 总线的宽度 -l rom文件的大小 这个工具可…

如何选购计算机主板电池,电脑主板电池耗电太快什么原因?如何判断问题并解决?...

一般来说,主板其实并不是非常容易损坏的,但用的时间长了也会出现些小问题,下面小编为大家介绍电脑主板电池耗电太快什么原因?如何判断问题并解决?电脑主板电池耗电太快什么原因CMOS电池耗电太快,有可能是主…

【转】ABP源码分析四十一:ZERO的Audit,Setting,Background Job

AuditLog: 继承自Entity<long>的实体类。封装AuditLog的信息。 AuditingStore: 实现了IAuditingStore接口&#xff0c;实现了将AuditLog的信息保存到数据库的功能。其通过IRepository<AuditLog, long>实例完成对数据库的操作。 BackgroundJobStore : 实现了IBack…

WinCE BSP中的DAT文件介绍

作者&#xff1a;ARM-WinCE DAT文件用于在WinCE启动的时候&#xff0c;定义文件系统的结构&#xff0c;也就是定义有哪些文件夹&#xff0c;哪些文件在什么位置等。每次冷启动的时候&#xff0c;Filesys模块会根据.dat文件中的内容来创建目录以及目录下的文件。 在BSP中我们可以…

翻译记忆软件:Trados 7/2006,兼容性和基本用法讨论

兼容性 我下载了Trados7&#xff0c;但是发现和Word2003和Word2007均没有加载出来&#xff0c;不能工作。 后来下载Trados2006&#xff08;7.5&#xff09;&#xff0c;安装之后&#xff0c;发现可以在Word2003下使用了&#xff0c;在Word2007下虽然加载项能够出来&#xff0c…

python canvas画移动物体_Python GUI编程入门(25)-移动Canvas对象

Canvas对象生成之后&#xff0c;有时会希望调整对象的位置。例如前面文章中提到的时钟小程序&#xff0c;我们稍加改造可以另外实现一个指针式时钟&#xff1a;在这个小程序中增加的功能就是根据具体时间计算每个指针的坐标信息&#xff0c;这部分功能在时钟类Clock中实现。这个…

【转】ABP源码分析四十二:ZERO的身份认证

ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展。同时重写了ABP核心模块中的permission功能&#xff0c;以实现授权。注意&#xff1a;ABP仅仅使用了Asp.Net Identity的身份认证功能&#xff0c;但没有使用Asp.Net Identi…

ASP.NET 安全认证(二)——灵活运用deny与allow 及保护.htm等文件

第二部分 Form 认证的实战运用 话说上回&#xff0c;简单地说了一下 Form 表单认证的用法。或许大家觉得太简单&#xff0c;对那些大内高手来说应该是“洒洒水啦”“小 Kiss 啦&#xff08;小意思&#xff09;”。今天咱们来点的花样吧&#xff1a;古有六扇门&#xff0c;拒收…

python nodemcu_python开发nodemcu(一)

nodemcu模块准备工作软件配置&#xff1a;1&#xff1a;查看python版本号&#xff0c;切换到Script目录下2&#xff1a;安装esptool使用命令pip install esptool安装成功标志曾经出现的错误错误提示不知道为什么&#xff1f;我2017/1/8号的时候安装一直提示这个错误&#xff0c…

搜索计算机硬盘的索引恢复,可以做到秒搜的神器everything,你可知对硬盘到底有多大伤害...

相比较Windows系统自带的搜索功能&#xff0c;everything堪称搜索界的神器&#xff0c;尤其在电脑里文件多达数万数十万的恐怖数量&#xff0c;但everything仍可做到秒搜&#xff0c;所以这款软件为大部分办公人员所喜爱。说到everything对硬盘的伤害程度&#xff0c;我们先看看…

【转】ABP源码分析四十四:ZERO的配置

ABP Zero模块中需要配置的地方主要集中在三块&#xff1a;1.配置静态的role&#xff1b;2.配置外部认证源&#xff1b;3.配置本地化语言和资源。 UserManagementConfig/IUserManagementConfig:定义了一个配置项&#xff0c;用于配置外部认证源。默认情况下&#xff0c;ABP Zero…

在.net 2.0 中执行分布式事务:隐式事务篇(SQL Server 与 Oracle)

项目涉及到多个数据库的查询更新操作&#xff0c;也就必然需要分布式事务的支持&#xff0c;查了MSDN知道 .net 2.0 中利用新增的 System.Transactions 命名空间可以简单的实现分布式事务&#xff1a; System.Transactions 基础结构通过支持在 SQL Server、ADO.NET、MSMQ 和 Mi…