有些应用中,为了提高wince系统的启动速度,应用程序不和wince内核打包在一起,而是独立存在于Flash上的FAT32文件系统分区内,如果通过烧录器将此应用程序的分区的数据一起烧写,可能会带来以下问题:
1. 由于该分区在第一次wince系统启动过程中,会做一次格式化的动作,相应的坏块信息会记录起来,并会将各块的地址转化为文件系统的逻辑地址,也就是说该分区的坏块信息是在文件系统格式化的时候一次性建好的,后续使用过程中新出现的坏块,在通过文件系统写时会更新该坏块信息表,或者人为对该分区做再格式化;
2. 如果在烧写过程中,新的片子出现和母片不一样的坏块分布(这其实是无可避免的),作为烧录器来讲,如果采用坏块跳过方式,即将该坏块的数据写入到下一个不是坏块的地址,这就带来了两个问题:
2.1 如果新片的该坏块位置是存储有实际的文件数据,wince启动后,加载该文件系统分区时,并不知道该地址为坏块,如果应用程序运行过程需要读到该文件数据,文件系统还是按母片的逻辑地址去读该坏块的对应的地址,首先,可能ecc校验就不能通过了,其次坏块的全部为0x00的数据作为该文件的数据去加载,肯定会出现问题,这在有的应用上表现为可能图片残缺,或者文件系统出错等等。
2.2 从该坏块开始的数据因为此坏块的存在而偏移写到下一个地址,如果是连续的数据分布,那么将会造成后面的每个块数据都会偏移一个地址,而文件系统来讲,它还是按照母片的方式去读,也就是说,可能A文件在母片里是读第500块的数据,如果新片的490块是坏块,则相应的对应用于A文件的数据是存在于501块了,而文件系统加载读取A文件的时候,还是去读第500块的数据,而此时第500块可能是保存的是D文件的数据了,所以这可能就会出现无法预知的问题。
3.对有的厂家的烧录来讲,通常默认的是硬拷贝的方式(对应于我司NPRO6683烧录器->主界面->系统辅助工具->烧录设置->坏块处理方式->坏块忽略),即遇到坏块则丢弃该坏块对应的数据,这样烧写能让坏块地址后面的数据保持和母片或者烧写文件的地址一一对齐,这在很多时候的简单测试中并不能测试到此坏块带来的问题,但却潜伏着更隐藏的问题,就是如果该坏块对应着的文件数据在一般的出厂测试运行过程并没有读到此文件,但在用户手里难免不能保证用户的各种操作不会引用到此坏块对应的文件数据,这将是更大的问题。因此,我司的烧录默认是遇到坏块跳过的方式,即使此中方式对某些应用也会有问题,但能在最开始就被发现。
更多详尽资料,请联系我们........