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…

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

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

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

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

【转】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中的这些功能具体实现都依…

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

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

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

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

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

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

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

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

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

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

搜索计算机硬盘的索引恢复,可以做到秒搜的神器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…

【转】OData的初步认识

What – OData是什么&#xff1f; OData - Open Data Protocol&#xff0c;是一个设计和使用RESTful API的标准。REST本身只是一个构建web服务的思想和理念&#xff0c;其没有规定一个统一的标准来限制开发人员该如何设计RESTful API。其实我们实际开发中的确也没有遵循某个统…

选择Windows CE wince嵌入式操作系统 的十大理由

Windows CE是什么&#xff1f; Windows CE是一个具有战略意义的操作系统。它拥有windows操作系统的特点&#xff0c;支持32位虚拟内存机制、按需分配内存和内存映射文件&#xff1b;他也是抢先式多任务并具有强大通信能力的Win32嵌入式操作系统&#xff0c;是微软专门为信息设…

三元运算符 在数据绑定中的使用

在使用 datalist 等控件绑定前台数据的时候&#xff0c;有时希望一行只显示定长字符&#xff0c;多出来的部分以省略号代替&#xff0c;我使用三元运算符来做&#xff1a;<asp:DataList id"DataList1"runat"server"RepeatColumns"5"Width&quo…

【转】ABP源码分析四十三:ZERO的本地化

ABP Zero模块扩展了ABP基础框架中的本地化功能&#xff0c;实现了通过数据库对本地化功能进行管理。其通过数据库保存本地化语言及其资源。 ApplicationLanguage&#xff1a;代表本地化语言的实体类。一种语言就是一个ApplicationLanguage实例。 ApplicationLanguageProvider&a…

WinCE流设备驱动简介及GPIO驱动的实现

作者&#xff1a;ARM-WinCE 流设备驱动实际上就是导出标准的流接口函数的驱动&#xff0c;这是文档上面的定义。在WinCE中&#xff0c;所有的流设备都导出流设备接口&#xff0c;这样WinCE中的Device Manager可以加载和管理这些流设备驱动。 流设备驱动的架构如图&#xff1a;…

计算机出现蓝屏怎么解决,电脑出现蓝屏故障0x00000019怎么办?

原标题&#xff1a;电脑出现蓝屏故障0x00000019怎么办&#xff1f;电脑开机出现蓝屏故障0x00000019怎么处理&#xff1f;电脑出现蓝屏&#xff0c;一般都会有提示错误代码或者出错的文件名等&#xff0c;最近就有用户跟小编反映&#xff0c;开机出现了蓝屏故障&#xff0c;提示…

【转】ABP源码分析四十五:ABP ZERO中的EntityFramework模块

AbpZeroDbContext&#xff1a;配置ABP.Zero中定义的entity的Dbset EntityFrameworkModelBuilderExtensions:给PrimitivePropertyConfiguration添加了扩展方法用于创建Index。 AbpZeroDbModelBuilderExtensions&#xff1a;给DbModelBuilder添加了扩展方法用于表的重命名。 AbpZ…

WinCE中串口驱动及接口函数介绍

作者&#xff1a;ARM-WinCE 在WinCE中&#xff0c;串口驱动实际上就是一个流设备驱动,具体架构如图&#xff1a; 串口驱动本身分为MDD层和PDD层。MDD层对上层的Device Manager提供了标准的流设备驱动接口(COM_xxx)&#xff0c;PDD层实现了HWOBJ结构及结构中若干针对于串口硬件操…