首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

WINCE MLC flash丢固件(无法正常启动到桌面)怎么取出客户数据

2013-08-01 
WINCE MLC flash丢固件(无法正常启动到桌面)如何取出客户数据大家好,WINCE6.0+S3C2451的设备,采用ROM-only

WINCE MLC flash丢固件(无法正常启动到桌面)如何取出客户数据
大家好,WINCE6.0+S3C2451的设备,采用ROM-only文件系统和MLC FLASH,客户在使用过程中系统无法正常启动,但是客户的数据是保存在根目录下,现在客户要求把数据取出来。

尝试:
通过TF卡启动的方式更新系统(之前的处理是更新的时候会清除根目录,我做了修改,在更新的时候不清除根目录,以确保不清除客户的数据),但是在更新过程中发现ECC校验出错,但还是更新成功,更新之后但无法正常启动,停留在下面的信息处:
Windows CE Kernel for ARM (Thumb Enabled) Built on Oct 20 2009 at 18:39:19
INFO:OALLogSetZones: dpCurSettings.ulZoneMask: 0xb
+OEMInit()
DCache: 128 sets, 4 ways, 32 line size, 16384 size
ICache: 128 sets, 4 ways, 32 line size, 16384 size
FCLK:400000000, HCLK:133333333, PCLK:66666666
+OALArgsInit()
Arguments area has some values.
-OALArgsInit()
-OEMInit()
OEMGetExtensionDRAM
[OEMIO:INF]  + IOCTL_HAL_POSTINIT
[OEMIO:INF]  - IOCTL_HAL_POSTINIT
[OND:INF]  InitializeCriticalSection(&v_DiskCrit)
[HALWP:INF]  nCtrlCode = PM_HAL_FIL_INIT
[HALWP:INF]  nCtrlCode = PM_HAL_VFL_INIT
[HALWP:INF]  nCtrlCode = PM_HAL_VFL_OPEN
[OND:OUT] ++OpenDriverKey()
[OND:   ] OpenDriverKey RegOpenKeyEx(HLM\Drivers\Active\02) returned 0!!!
[OND:   ] OpenDriverKey - RegQueryValueEx(Key) returned 0
[OND:OUT] --OpenDriverKey()
[OND:MSG]  GetBmlId - BmlPartitionId = 8
[OND:MSG]  GetBmlId - StartSector = 0
[OND:MSG]  GetBmlId - NumOfSector = 524288
[OND:MSG]  GetBmlId - BmlVolumeId = 0
[FTL: IN] ++FTL_ReadReclaim()
 [FTL:INF] FTL_ReadReclaim(nVbn = 65535(0xffff))
/*************出错信息的起始处,正常情况下是不会有的***********/
[VFL:ERR]  VFL_Erase(nVbn:65535) input overflow!
[FTL:ERR]  there is error on VFL_Erase!
[FTL:ERR]  there is error on _MoveD2F!
[FTLP:ERR]  FTL_ReadReclaim() failure. ERR Code=80010000
[OND:ERR] FTL_ReadReclaim failed on DSK_Open
/*************出错信息的结束处,正常情况下是不会有的***********/

[OND:MSG] FTL_ReadReclaim        [OK]
[OND:OUT] ++GetDeviceInfo()
[OND:OUT] ++OpenDriverKey()
[OND:   ] OpenDriverKey RegOpenKeyEx(HLM\Drivers\Active\02) returned 0!!!
[OND:   ] OpenDriverKey - RegQueryValueEx(Key) returned 0
[OND:OUT] --OpenDriverKey()
[OND:   ] GetProfileName - Profile = FlashDisk, length = 20
[OND:   ] Order = 0, length = 4


[OND:OUT] --GetDeviceInfo()
[OND:MSG] ++GetStorageID 
[OND:MSG] --GetStorageID 
OEM: Not clearing storage
如果是正常启动,接下来应该输出:
OEM: Not cleaning system hive
OEM: Not cleaning user profiles
OEM: Not cleaning system hive
I2C_Init()
………………

如果要取出客户的数据,大家有什么想法,麻烦分享一下,先谢谢了。

[解决办法]
先想办法复制出整个FLASH的内容。然后用块同样系统的正常的FLASh和现在这个取出来的FLALSh数据进行对比,取出好的FLASH数据的OS部分和BOOT部分保存块。
[解决办法]
我的做法是:只更新OS镜像和BOOTLOADER区域。其他区域没有更新,因此我的系统若更新系统,是不会覆盖掉用户数据的。这个可以在bootloader里改的。我的是SLC的,你的MLC就不懂了,可能跟你驱动有关系吧?!
[解决办法]
要取出flash里的客户数据,就要把整片flash读出,然后进行文件系统分析(需要有专用的软件)。我们是做这块的强项,找我们帮你搞定吧。呵呵。
[解决办法]

引用:
要取出flash里的客户数据,就要把整片flash读出,然后进行文件系统分析(需要有专用的软件)。我们是做这块的强项,找我们帮你搞定吧。呵呵。


我们是用设备帮助拷贝flash的内容的。生存的时候都是这样,不然说有的都人工烧写麻烦。

[解决办法]
那个拷贝都不需要上电啊,直接把核心板放在设备对应位置上就行了。
你的MLC有没有做ECC校正?一般有做问题不是很严重都还能跑起来的。

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

要取出flash里的客户数据,就要把整片flash读出,然后进行文件系统分析(需要有专用的软件)。我们是做这块的强项,找我们帮你搞定吧。呵呵。


我们是用设备帮助拷贝flash的内容的。生存的时候都是这样,不然说有的都人工烧写麻烦。

目前系统都起不来,怎么用设备帮助来拷贝flash的内容啊?


有专门的Flash烧写仪器的,我们公司就有。
可以只读取数据区,也可以把对应的冗余区读取出来,整片读取出来也是OK滴
[解决办法]
建议你讲ECC纠正失败的打印出来。
[解决办法]
这个MLC 做产品就等着悲剧吧。
便宜?
到时候估计就因为这个事情害死人啊,他的特性决定了很容易发生数据翻转,导致错误的。
[解决办法]
我觉得把整个 FLASH COPY 出来作用不大~!
因为每个系统对坏块的管理不一样~!

这样跑起来估计有一些麻烦~!

[解决办法]
遇到过这种问题。
没辙,
因为nandflash 的fat 分区表已经损坏,重建分区表 就会导致数据不再了。
不像inand 和SD卡,重建分区表,数据依然在,只要不全盘格式化。
楼主想到办法贴出来欣赏一下。
[解决办法]
MLC跟驱动有关系的吧
MLC是有不稳定的表现,是不是原因在于工艺缺陷?

热点排行