WinCE6启动越来越慢,求指教

tanghuihuayyc 2016-10-19 03:00:21
使用Tiny6410核心板开发的产品。WinCE6操作系统HIVE注册表,256M内存,1GFlash。
发现在此环境下,随着使用时间的增加,开机启动的时间越来越长。
最近有客户返修的板,使用了1年多的时间,开机完全无法进入WinCE的桌面。重新烧写内核恢复正常。

然后做如下测试:
1,新烧一个内核,上电,机器很快启动
2,在NandFlash中复制140M字节左右的文件(17个文件共140M),重启,启动时间增加了5秒
3,重复2步的复制过程,复制四次后再次重启,启动时间增加了15秒
4,然后删除复制的文件,再重新复制,再次重启,启动时间增加了25秒

下面附上WinCE启动的串口信息,发现增加的时间都停留在红色字符标记的地方:

Reading...Launch Windows CE...
Windows CE Kernel for ARM (Thumb Enabled) Built on Sep 25 2009 at 11:04:23
[OAL] ++OEMInit()
[OAL] S3C6410_APLL_CLK : 532000000
[OAL] ARMCLK : 532000000
[OAL] HCLK : 133000000
[OAL] PCLK : 66500000
[OAL] InitializeGPIO()
[OAL] InitializeCLKSource()
[OAL] InitializeCLKGating()
[OAL] InitializeBlockPower()
DCache: 128sets, 4 ways, 32 line size, 16384 size
ICache: 128 sets, 4 ways, 32 line size, 16384 size
+OALArgsInit()
SocID:0x36410101
Arguments area is initialized
-OALArgsInit()
+OALTimerInit( 1, 33249, 0 )
-OALIntrRequestSysIntr(irq = 38, sysIntr = 16)
[tang] pfnSaveVFPCtrlRegs = 0x8010961c
[OAL] --OEMInit()
-[FMD:INF] FMD_Init() : Read ID = 0x589551D3
[FMD] FMD_Init() : NUM_OF_BLOCKS = 8192
[FMD] FMD_Init() : PAGES_PER_BLOCK = 64
[FMD] FMD_Init() : SECTORS_PER_PAGE = 4
[FMD] FMD_Init() : type is SLC1
[FMD] FMD_OEMIoControl() : IOCTL_FMD_GET_INTERFACE
////////新烧的内核,此处最多停留2秒就继续往下,
////////然后在NandFlash中复制几次40M字节左右的文件后重启,就会再此处停留15秒以上才往下继续
////////随着在NandFlash中复制删除文件次数的增多,重启后此处停留的时间越来越长
////////最近有客户使用1年多的板,重启会一直停在此处,再也无法往后继续,重新烧写内核恢复

[OAL] Not Clear System Hive
[OAL] Not Clear User Hive
[OAL] Not Clear System Hive
WARN: OALIoCtlHalGetHWEntropy: Buffer too small
[PWRCON] PWC_Init***
-OALIntrRequestSysIntr(irq = 40, sysIntr = 18)
-OALIntrRequestSysIntr(irq = 19, sysIntr = 19)
-OALIntrRequestSysIntr(irq = 23, sysIntr = 20)
-OALIntrRequestSysIntr(irq = 20, sysIntr = 21)
-OALIntrRequestSysIntr(irq = 88, sysIntr = 22)
...全文
490 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2016-10-20
  • 打赏
  • 举报
回复
那是因为你的 FTL 层太差。 操作系统,是将存储空间看作像硬盘一样可随机读写的设备。但是,Nand Flash 写前需要擦,而且一次就要擦掉一页。所以,上层的访问接口,必须通过 FTL (Flash Translation Layer)进行转换。 它主要实现逻辑与物理地址的映射、读写的控制、坏块管理,以及损耗均衡等功能。 如果 FTL 太差,就会带来很多 Flash 效率或寿命问题。 现在可以使用 EMMC 作存储,它有内置的 FTL 层管理固件。
tanghuihuayyc 2016-10-20
  • 打赏
  • 举报
回复
今天打了2012年补丁后重新编译内核,发现启动变慢的问题已经解决。 可现在出现新问题。打了补丁后,发现原来的APP程序的对话框都变大了,所以按原来分辨率做的程序,现在都显示不全了。 求大神支招!!!
xqhrs232 2016-10-20
  • 打赏
  • 举报
回复
引用 4 楼 of123 的回复:
那是因为你的 FTL 层太差。 操作系统,是将存储空间看作像硬盘一样可随机读写的设备。但是,Nand Flash 写前需要擦,而且一次就要擦掉一页。所以,上层的访问接口,必须通过 FTL (Flash Translation Layer)进行转换。 它主要实现逻辑与物理地址的映射、读写的控制、坏块管理,以及损耗均衡等功能。 如果 FTL 太差,就会带来很多 Flash 效率或寿命问题。 现在可以使用 EMMC 作存储,它有内置的 FTL 层管理固件。
还有这样一 回事情?
tanghuihuayyc 2016-10-19
  • 打赏
  • 举报
回复
没有,HIVE注册表文件大小没有任何变化。 而且我测试的时候只是不停的复制删除文件而已。 看到一篇帖子说是在扫描NandFlash,要打2011年的补丁。正在下载补丁中,等下来补丁打上试试。 http://bbs.csdn.net/topics/360150625
xqhrs232 2016-10-19
  • 打赏
  • 举报
回复
系统的hive 注册表文件是不是越来越大?

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧