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卡是否也存在坏块
[解决办法]
坏块机率很少的
这升级方式,telechips早就是USB升级了
其它的我也没见过更好的升级方式了,用SD卡升级好像也慢不了多少吧
还好没进你们公司,感觉事情又多又杂啊,不过效益好啊,你们那女领导有没有欺负你们啊
[解决办法]
如前面几个楼说的
1、坏块不同的原因
2、你的eboot 根本就是不支持直接读取这个bin 文件的。因为eboot要自己专门去解析 bin 文件来实现存储的,而你现在是直接把你那种flash 的raw bin 文件来读取启动,这个本身就有问题,TOC啥的都不对了。
3、接上面,如果你想这么做,建议你的eboot 支持NK.nb0 烧写并启动先,这样你才能引导成功。
good luck ,楼主的工资也不是那么好拿啊,小心这么拼命,三年后还剩下半条命啊。
不过我也是啊,现在还在调试 S5pv210 。
[解决办法]
检查下MBR 有没有被改
[解决办法]
换一个吧....
[解决办法]
看来是和坏块管理这部分有关.