求助 WinCE arm 2410平台 wince系统突然掉电后,系统起不来???

zhaonaiqiang   2009-12-7 21:54 楼主
我的开发平台是ARM 2410,做一个项目,有一批产品。在工厂调试时,系统都正常,包括突然掉电测试,也不会发生系统重启后,看不到桌面系统。
   但是,在现场安装后,5台产品,在系统运行状态下,在突然掉电后,有两台系统,其bootloader和eboot都能起来,但是,wince内核,有些驱动没有被加载,导致不能进入wince桌面。
下面是启动打印的信息,第一份是内核正常启动的打印信息,第二份是不能进入wince桌面系统的打印信息,请牛人指点一下。

1. WinCE NAND Boot v1.00
Sep 12 2007 15:07:46

Picture Boot

WinCE NAND Boot v1.00
Apr 15 2007 22:38:25

dwEntry is 0x00000001
Total Sectors:0x0000e800

NAND Copy to SDRAM Finish
Windows CE Kernel for ARM   Built on Mar 13 2003 at 22:54:19
ProcessorType=0920  Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8c201280

Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
DISPLAY MODE 640*480
SDMMC config current rGPGCON: 10a
SDMMC config set rGPGCON: 20010a
SDMMC config Init Done.
OEMInit Done...
Sp=ffffc7cc
FMD::FMD_Init
ADC:DLL_PROCESS_ATTACH       
Prescaler:2
384 clock
SL_Open 0x32010 (0 opens)
USB:OhcdPdd_Init
++InitializeOHCI
USB:*pIrq=11, *pioPortBase=0x310000
OHCD: MapIrq2SysIntr(11): 27
OHCD: Memory Object
--InitializeOHCI
+CS8900:DriverEntry
::: PBT_InitializeAddresses - Success
        charlie::SDIO::SDHOST::SDCSDCardDllEntry::DLL_PROCESS_ATTACH
::: SYSINTR_SDMMC    OEMInterruptDisable
::: SYSINTR_DMA0    OEMInterruptDisable
::: SYSINTR_SDMMC_CARD_DETECT    OEMInterruptEnable
::: SYSINTR_SDMMC_SDIO_INTERRUPT    OEMInterruptEnable
--S3C2410DISP::InitializeHardware
RasEntry '`USB Socket Default' Created
Data Abort: Thread=8fdff400 Proc=8e026958 'filesys.exe'
AKY=00000007 PC=0001e2e4 RA=0001f714 BVA=0447a918 FSR=00000005


2. WinCE NAND Boot v1.00
Sep 12 2007 15:07:46

Picture Boot

WinCE NAND Boot v1.00
Apr 15 2007 22:38:25

dwEntry is 0x00000001
Total Sectors:0x0000e800

NAND Copy to SDRAM Finish
RWindows CE Kernel for ARM   Built on Mar 13 2003 at 22:54:19
ProcessorType=0920  Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8c201280

Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
DISPLAY MODE 640*480
SDMMC config current rGPGCON: 10a
SDMMC config set rGPGCON: 20010a
SDMMC config Init Done.
OEMInit Done...
Sp=ffffc7cc
FMD::FMD_Init
Data Abort: Thread=8feed5d0 Proc=8e026958 'filesys.exe'
AKY=00000003 PC=03f952cc RA=03f95208 BVA=0451e63b FSR=00000003
Data Abort: Thread=8feed5d0 Proc=8e026958 'filesys.exe'
AKY=00000003 PC=03f952cc RA=03f95208 BVA=0451e63b FSR=00000003
Data Abort: Thread=8feed5d0 Proc=8e026958 'filesys.exe'
AKY=00000003 PC=03f952cc RA=03f95208 BVA=0451e63b FSR=00000003
OEMSetRealTime: Year: 1999, Month: 6, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h
OEMSetRealTime(register): Year: 99, Month: 6, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h
Data Abort: Thread=8feed5d0 Proc=8e026958 'filesys.exe'
AKY=00000003 PC=03f952cc RA=03f95208 BVA=0451e63b FSR=00000003
本人认为是电源不好,导致掉电产生电场,使得nandflash的部分内容被改写。或者把注册表的一部分信息给改啦,导致驱动不能正常加载。
这种问题,是不可重见的,有时出现,有时不出现,很麻烦?也不知道是硬件保护没做好,还是应用程序有问题?
arm控制板式安装在一个铁柜子里面,柜子的地和大地连在一起,但是,当时,控制器电路板的地没有和铁柜子地连接在一起,不知道是这个原因引起的不?柜子里面除了有控制器电路板,还有继电器,空开等器件。
请牛人指点,本人非常感谢.

回复评论 (18)

还有这种问题.
点赞  2009-12-7 22:24
建议:
修改eboot,在将os load到内存的时候,计算一下image的checksum值,确定一下os是否受到破坏
点赞  2009-12-8 08:33
你用的是HIVE-BASE的注册表吗?
点赞  2009-12-8 10:15
是的,用的是HIVE-BASE注册表
点赞  2009-12-8 10:38
在工厂多做几次断电重启都没问题么?
先测试工厂与现场是否存在同样问题
点赞  2009-12-8 10:48
建议:
修改eboot,在将os load到内存的时候,计算一下image的checksum值,确定一下os是否受到破坏


谢谢啦,
这个估计难度比较大,本人买的开发板,厂家没有提供eboot的源码,只提供eboot.nb0,找他们技术支持,他们说,这个不是硬件上的问题,说是我软件里面有东西擦除了nandflash的某些sector。我觉得不可能啦,软件里面我就只有通过文件系统来读写文件操作,没有操作保存kernel的扇区。目前的做法,就是将板子上的地和铁柜上的地接一起,在在电源端口加了一个25v 4700uF的大电容,不知道能不能解决这个问题,呵呵。
点赞  2009-12-8 14:03
在工厂多做几次断电重启都没问题么?
先测试工厂与现场是否存在同样问题


谢谢。
目前来说,工厂是没出现这种问题。原来,在实验室,偶尔也出现过,掉电后,系统起不来的情况,但是概率非常小。不过我这是用的厂家开发板的原来旧的一批板子。现在测试的是,厂家生产的一批新板子,是不是这批板子质量有问题??或许是软件的问题??
我觉得是硬件抗干扰能力不行,或者是nandflash这批次质量不好?这样的问题,实在是太难调啦。
点赞  2009-12-8 14:13
应该是硬件问题,NAND Flash的一致性不会这么差的。
点赞  2009-12-8 14:41
首先要说你碰到的这种问题在量产的过程中很常见
偶然的波形抖动也会造成data lose,在使用的过程中这个问题也会存在,不过你的可能性不太大
建议二:
没有eboot的source也不影响你验证这个问题呀,你可以在oal初始化函数oem_init里面计算一下checksum值,就可以了
方法是通过bib来判别nb0文件的内存layout,然后直接读取操作虚拟内存计算就行
点赞  2009-12-9 08:38
我遇到过,但是我的不是楼主启动的位置,我的没有异常,楼主的有异常产生。估计是NK受损,硬件等原因。我的是内存没有清理的问题。我的下次开机就能启动了。
点赞  2009-12-9 09:04
hive-base注册表,会有写flash的动作,如果在写的过程中发生突然掉电的情况,就有可能损坏flash的文件,导致这种情况出现;而且这种情况mlc比slc出现的概率要大很多。

要解决这种问题,简单的方法,就是要求客户不要做这样的操作;彻底的解决方法,是考虑给flash提供一定的供电缓冲。。。。
点赞  2009-12-9 10:30
OEMSetRealTime: Year: 1999, Month: 6, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h
OEMSetRealTime(register): Year: 99, Month: 6, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h


从这个信息看,内核是启动了,不过,启动显示的画面一直停留在bootloader的LOGO上。可能是wince桌面没有加载成功。
我也觉得nk.nb0被破坏,但是什么原因破坏的呢??
点赞  2009-12-9 11:27
引用: 引用 12 楼 lisheng831010 的回复:
OEMSetRealTime: Year: 1999, Month: 6, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h
OEMSetRealTime(register): Year: 99, Month: 6, Day: 1, Hour: 12, Minute: 0, second: 0 rcnr=1h

从这个信息看,内核是启动了,不过,启动显示的画面一直停留在bootloader的LOGO上。可能是wince桌面没有加载成功。
我也觉得nk.nb0被破坏,但是什么原因破坏的呢??

那就简单的在你fmd的write函数里输出log info,观察断电之前有没有这些东西
点赞  2009-12-9 12:24
hive-base注册表,会有写flash的动作,如果在写的过程中发生突然掉电的情况,就有可能损坏flash的文件,导致这种情况出现;而且这种情况mlc比slc出现的概率要大很多。

要解决这种问题,简单的方法,就是要求客户不要做这样的操作;彻底的解决方法,是考虑给flash提供一定的供电缓冲。。。。

感谢,呵呵。
我看了注册表,貌似很多驱动都没加载起来,
包括本驱动和流驱动,如[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\ADC],还有LCD驱动等。
而file.exe进程是启动了,说明hive-base注册表的引导注册表式成功加载了,同时,RTC时钟被系统重新设置,说明中断机制也被成功加载。从这些内容分析,注册表好像没有损坏。

点赞  2009-12-9 16:10
引用: 引用 13 楼 guopeixin 的回复:

那就简单的在你fmd的write函数里输出log info,观察断电之前有没有这些东西

恩,有道理,先谢啦。
估计会有这些信息,主要是我应用程序里面有对flash读写文件操作。不过是flash的剩余的空间,应该不会影响bootloader和nk.nb0的flash空间。因为这两个空间,由文件系统分开了。
点赞  2009-12-9 16:20
第一个问题应该是你的platform.reg表中的HIVE注册表少东东了。第二个估计是进入eboot菜单后,你把lauching设成了downloadimage了 .
点赞  2009-12-9 18:46
引用: 引用 16 楼 jinhuah3624 的回复:
第一个问题应该是你的platform.reg表中的HIVE注册表少东东了。第二个估计是进入eboot菜单后,你把lauching设成了downloadimage了 .

最近出差了,没有看消息啦,上面的系统是一直运行的,平常断电时可以启动的,知识偶尔会出现掉电不能启动。第二个估计是进入eboot菜单后,你把lauching设成了downloadimage了 . 这种情况不可能。
点赞  2010-1-5 23:45
註冊表崩了..沒有其他可能
点赞  2010-1-6 08:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复