2 ECC与SM的地址转换
按照DOS文件操作系统存储数据的方法,SM卡除存储数据功能外,还具有以下5个区域:卡信息结构(Card Information Structure,简称CIS)、主引导记录(Master Boot Record简称,MBR)、分区引导记录(Partition Boot Record,简称PBR)、分件分配表(File A11ocation Table,简称FAT)、根目录(Root Directory,简称DIR)。CPU采用逻辑地址操作存储介质,由于逻辑地址与物理地址不同,物理地址是存储介质的实际地址,如果按照物理地址顺序存储数据,则不便于文件增加或删减的操作,因此,其DOS逻辑地址与物理地址必须按照转换表进行转换。而SM卡的转换表处于每页存储区的冗余区内。
SM卡每页包括528字节,分为512字节数据区和16字节的冗余区。冗余区的格式如表l所示,其中ECC编码区和逻辑、物理转换区是最为重要部分。
由表1可以看出:逻辑地址区1和逻辑地址区2完全一致,ECC编码区2是指256~512字节的ECC编码,ECC编码区l是指0~255字节的ECC编码,数据状态标志和块状态标志为FFH时正常,否则异常。逻辑地址区是针对DOS文件系统的逻辑地址和物理地址的转换表,格式如表2所示,其中BA9~BA0为逻辑地址,P为奇偶区标志。
所谓逻辑地址是相对于DOS文件系统而言,DOS文件系统在存储文件时,并不是完全按照物理地址的顺序存储的,而是将物理地址按一定的算法分配成逻辑地址,文件存储是按照FAT表中标注的逻辑地址,再根据冗余区中的逻辑地址的内容找到相应的物理地址区实现的。整个SM卡的逻辑地址分布如表3所示。
3 ECC编码
ECC与奇偶校验(Parity)相类似,然而Parity只能检测错误,而ECC则可纠正每页的l位错误。经过内存纠错,计算机的操作指令才能继续。
由于SM卡存在“写入干扰”,易引起数据错误,而且该错误不能利用写入Flash状态进行检查。根据SM卡实验结果推断,写入干扰引发的错误在l页中(512字节)只有1位出现错误。因此认为这类错误可利用ECC码检查并纠正,而不视为坏块。这样将大大提高SM卡的可靠性和寿命。在设计中以512字节为一组数据,加上ECC码(3字节),这样可以使ECC码的比例达到最低。
4 ECC编码算法和程序设计
4.1 ECC码的普通算法
以64字节一组数据为例说明ECC码的普通算法,前52字节为输入数据,后面12字节补零或64字节参加运算。先将64字节数据排成一列,即最高地址数据bit7,bit 6…bit O,然后为次高地址数据bit 7,bit 6…bit O,依次根据地址由高到低,直至最低地址数据bit 7,bit 6…bit 0,总共512位。