当前位置: 代码迷 >> WinCE >> WINCE6.0+S3C2451+SLC(K9K8G08U0D)烧录器烧录的有关问题
  详细解决方案

WINCE6.0+S3C2451+SLC(K9K8G08U0D)烧录器烧录的有关问题

热度:94   发布时间:2016-04-28 12:34:10.0
WINCE6.0+S3C2451+SLC(K9K8G08U0D)烧录器烧录的问题
我用西尔特电子公司的烧录器SUPERPRO5004GP烧录flash,但烧录之后正常启动NK,详情如下:
1.先通过TF卡把STEPLDR.nb0、eboot.bin和nk.bin烧录到板子的flash中(在此成为母片)
2.烧录之后正常启动,并且重启从flash启动可以正常起来并进入WINCE界面。
3.取下母片在5004GP烧录器上通过hard copy的方式读取母片的所有数据并保存为K9K8.bin文件。
4.用西尔特电子公司提供的母片分析工具对K9K8.bin文件分析,并自动生成对应的分区文件K9K8_PartitionTable.BIN。
5.用烧录软件把一些设置设置好,用partition的方式对子片进行烧录,烧录之后焊接到板子上,但是没能正常启动,eboot可以跑起来,但是在判断TOC所在的块的坏块标识时不一致而导致eboot无法加载nk,主要的串口输出信息如下:
wNUM_BLOCKS : 8192(0x2000) 
TOC_Read ERROR: SectorInfo verify failed: 0 3 FF 0
TOC_Init: dwEntry:1, dwImageType: 0x2, dwImageStart: 0x0, dwImageLength: 0x0, dwLaunchAddr: 0x0
kandi +BootConfigInit
-BootConfigInit g_pBootCfg->ConfigFlags=0x830
TOC {
dwSignature: 0x434F544E
BootCfg { 
  ConfigFlags: 0x830
  BootDelay: 0x2
  ImageIndex: 1 
  IP: 0.0.0.0
  MAC Address: 00:00:00:00:00:00
  Port: 0.0.0.0
  SubnetMask: 255.255.255.0
}
ID[0] {
  dwVersion: 0x20004
  dwSignature: 0x45424F54
  String: 'eboot.nb0'
  dwImageType: 0x2
  dwTtlSectors: 0x100
  dwLoadAddress: 0x80038000
  dwJumpAddress: 0x80038000
  dwStoreOffset: 0x0
  sgList[0].dwSector: 0x80
  sgList[0].dwLength: 0x100
}
ID[1] {
  dwVersion: 0x1
  dwSignature: 0x43465348
  String: ''
  dwImageType: 0x2
  dwTtlSectors: 0x0
  dwLoadAddress: 0x0
  dwJumpAddress: 0x0
  dwStoreOffset: 0x0
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}
OEMPlatformInit()--->TOC_Init() 
Press [ENTER] to launch image stored on boot media, or [SPACE] to enter boot monitor.

Initiating image launch in 0 seconds. 
KeySelect=0xff, key_value=0x0
OEMPlatformInit()--->g_pBootCfg->ConfigFlags=0x830 

Launching image from boot media ... 
OEMPlatformInit() *g_bCleanBootFlag=0
OEMPlatformInit ERROR: unknown image type: 0x0 
问题主要在TOC_Read ERROR: SectorInfo verify failed: 0 3 FF 0
这里,其中0xFF是si.bBadBlock的值,但是我的eboot对flash坏块标识为0x00,也就是说母片中TOC这一块的坏块标识为0x00,但为什么烧录器烧录之后放在板子上读取的却是0xFF(),我怀疑是烧录软件对flash坏块的标识和我们的不一致引起的,请问大家有没有遇到类似这样的问题,麻烦大家分享一下,先谢谢了。

------解决方案--------------------
可能希尔特对坏块的算法处理和wince eboot下的不一样。我搞uboot时就发现它识别出很多坏块,可是在wince下并没有识别出来。你烧写TF卡前先格式化整个TF卡,再看看。或者用uboot来烧写你的wince镜像。看看这样是否可以。
------解决方案--------------------
母片和其他的 FLASH 
每个 FLASH 的坏块肯定不一样

在坏块管理这部分会有问题!
------解决方案--------------------
CE和烧录器对坏块的识别应该是有点不一样
你这种烧写FLASH的方法是:将母片的内容完全拷贝到另一个片子上,但有一个弱点就是母片不能坏块,子片也不能有坏块。
Ce认为母块有坏块的话,所有子片都会把同一个地方标识为坏块,这种情况一般没有影响。如果烧录器觉得某处有坏块跳过去了,但是CE不认为有坏块的话,结果就会出现楼主的情况了。

我们以前是这样弄的:母片和子片都是新的,测试一两个子片后,这样基本没有问题
------解决方案--------------------
我不记得了,个人觉得应该会是hard copy

另外你做的母片出来后,有没有做过坏块检测,确定没有坏块

还有一点,你用SD卡升级是读文件升级的方式还是也是块拷贝的过程,如果是块拷贝要注意SD卡是否也存在坏块
  相关解决方案