0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ECC技术应用于大容量SM卡中使其实现功能稳定

电子设计 来源:郭婷 作者:电子设计 2019-07-12 08:06 次阅读

1 引言

SM卡是一种nash Memory存储卡,轻薄短小是其未来产品的发展趋势。SM卡具有体积小(45 mm×37 mm x0.76mm),质量轻(仅1.8克),结构简单,携带方便,且具有较高的擦写性能,功耗低,易于升级,带有便于数据传输的PCMCIA界面等优点,但存在兼容性差和容量小的缺点。

采用大容量的SM卡作为存储介质用于存储采集的数据具有突破性发展。但其最关键技术问题是要保证各种大量的数据能够在计算机中正确地回放和分析,保证计算机正确无误地识别出SM卡中的数据,因此要求SM卡的存储数据格式应与DOS文件系统相兼容。错误检查与纠正编码简称ECC,是一种实现计算机错误检查和纠正的技术,可使整个计算机系统工作时安全稳定。而ECC技术应用于大容量SM卡,使其数据采集、储存更安全稳定,并给出了ECC编码算法,程序设计及查错校正的实现。

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编码区和逻辑、物理转换区是最为重要部分。

ECC技术应用于大容量SM卡中使其实现功能稳定

由表1可以看出:逻辑地址区1和逻辑地址区2完全一致,ECC编码区2是指256“512字节的ECC编码,ECC编码区l是指0”255字节的ECC编码,数据状态标志和块状态标志为FFH时正常,否则异常。逻辑地址区是针对DOS文件系统的逻辑地址和物理地址的转换表,格式如表2所示,其中BA9~BA0为逻辑地址,P为奇偶区标志。

ECC技术应用于大容量SM卡中使其实现功能稳定

所谓逻辑地址是相对于DOS文件系统而言,DOS文件系统在存储文件时,并不是完全按照物理地址的顺序存储的,而是将物理地址按一定的算法分配成逻辑地址,文件存储是按照FAT表中标注的逻辑地址,再根据冗余区中的逻辑地址的内容找到相应的物理地址区实现的。整个SM卡的逻辑地址分布如表3所示。

ECC技术应用于大容量SM卡中使其实现功能稳定

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位。

首先将512位分成前256位和后256位。计算前256位中“1”的个数k,如果k为奇数,令P(256)=l;若k为偶数,则令P(256)=O。然后计算后面256位中“1”的个数为j,如果j为奇数,则令Q(256)=1;若j为偶数,则Q(256)=0。

然后,再把512位等分4块,每一块均为128位。把第一块、第三块合在一起,计算其中“1”的个数l,如果l为奇数,令P(128)=l;若f为偶数,令P(128)=0;把第二块和第四块合在一起,计算其中“1”的个数m,如果m为奇数,则令Q(128)=1,若m为偶数,令Q(128)=0。

第三步,把512位等分为8块,每块为64位,把奇数次块合并在一起,计算“l”的个数,决定P(64)是“1”还是“0”,再把偶数次块合并在一起,计算“1”的个数,决定Q(64)是“1‘,还是“0”。

依次类推,每次块数增加一倍,其块的位数减少一半,直到每块中只有1位为止。将奇数次块合并在一起,然后决定P(16)、P(8)、P(4)、P(2)、P(1)分别是“1”还是“0”;把偶数次块合在一起,决定Q(16)、Q(8)、Q(4)、Q(2)、Q(1)分别是“1”,还是“0”。

最后,把上述P(i)、Q(i)排成一列得P(256)Q(256)P(128)Q(128)P(64)Q(64)…P(1)Q(1)总共18位就构成ECC码,ECC码为3字节,多余位全为零。

4.2 简化ECC码算法

计算ECC码是一个子程序,要求程序要短,ECC子程序的长度为120字节,F015的程序空间可以容纳;执行要快,ECC子程序的执行时间约为2 ms。由于F015的程序空间不大,而子程序是在记录过程中经数据采集,运算再加上ECC码,然后存入Flash。运算时间过长会干扰下一点数据采集,破坏数据完整性。数据采集周期为1/8 s(125 ms),ECC运行时间应小于12.5 ms。

程序采用数据平行处理,巧妙重复利用F015指令,从而达到系统要求。

5 查错和校正

5.1 错误类型

常见内存错误为:单位、多位、列、行等错误。其中单位错误大多在读取一个完整比特时有一位出错;而多位错误是读相同比特时总是同一位数据出错;如果单位错误发生在很多词中,则视为列或行错误。

5.2 查错和校正算法

无错误时,ECC码全为0;当主区有1位错误,每一个相似组(eg:P8&P8’)有l&0或0&1,可以纠错;如果Flash有多于2位以上的错误,则没办法修正。

在数据存入前产生的ECC码为PQ先,在读出数据后计算得的ECC码为PQ后,具体算法如下:

(1)若PQ先^PQ后(^为异或),

(2)若异或后000 000 000 000 000 000,则表示数据无错。PQ先^PQ后,R=RF(256)RQ(256)RP(128)RQ(128)…RP(1)RQ(1),其中RP(256)=P(256)先^P(256)后,RQ(256)=Q(256)先^Q(256)后。

若RP(i)^RQ(i)为l,对所有i(i=1,2,4…256)都成立,则

存在1位错码,其出错的位置:由RP(256)RP(128)RP(64)RP(32)RP(16)RP(8)地址决定的这一字节中地址(范围0—63)在RP(4)RP(2)RP(1)的位上(O“7位)。将上述参数决定的该字节的位数据取非,就可校正数据中的错误。

(3)RP(i)^RQ(i)=1,只对一个i(i=1,2,4…256)成立。则ECC码PO先出错,数据正确。

(4)若出现其他情况,则无法校正数据错误。

6 ECC编码的实现

256字节数据的ECC码是3个字节,其中22个字节是有用的。ECC编码的产生、计算方法及错码检测方法框图分别如表4、图1和图2所示。

ECC技术应用于大容量SM卡中使其实现功能稳定

由图1和图2可看出,写入DOS文件系统所需的各功能区的内容,在实际编程中要严格按照其结构编写,否则计算机将无法识别。

7 结语

通过讨论和分析可见,SM卡的存储结构、DOS存储格式以及ECC代码的编写所构成SM卡数据存储系统的软件部分,说明了将ECC技术应用于大容量的SM卡是可行的。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    12

    文章

    3885

    浏览量

    84777
  • 计算机
    +关注

    关注

    19

    文章

    6691

    浏览量

    85016
  • 数据采集
    +关注

    关注

    38

    文章

    4658

    浏览量

    112427
收藏 人收藏

    评论

    相关推荐

    Micrium全家桶之uC-CRC: 0x01 ECC

    我们这一篇来讲讲Micrium全家桶的uC-CRC。该代码库提供了CRC算法进行错误检测EDC,使用HAMMING算法实现ECC错误纠正。ECC算法在NAND的TFL中使用。
    的头像 发表于 06-08 11:04 928次阅读
    Micrium全家桶之uC-CRC: 0x01 <b class='flag-5'>ECC</b>

    CS 创世SD NAND FLASH 存储芯片,比TF更小巧轻便易用的大容量存储,TF替代方案

    存储:与其他 NAND 闪存技术相比,SD NAND FLASH 具有更高的存储密度,使其用于需要大容量存储的应用。   可移植性:SD NAND FLASH 卡通常以标准的 Sec
    发表于 01-24 18:30

    mos的功能及其实现

    开关电源(高压大电流),现在把MOS和双极型(普通三极管)复合在一起(IGBT,绝缘栅双极型晶体管),广泛应用于大功率领域。MOS集成电路:采用场效应管的集成电路,可有和TTL相同的逻辑功能,代表的有
    发表于 07-05 10:53

    mos的功能及其实现

    开关电源(高压大电流),现在把MOS和双极型(普通三极管)复合在一起(IGBT,绝缘栅双极型晶体管),广泛应用于大功率领域。MOS集成电路:采用场效应管的集成电路,可有和TTL相同的逻辑功能,代表的有
    发表于 07-06 17:27

    SM7513离线式小功率 AC/DC 开关电源驱动芯片

    `钲铭科新品SM7513与SM7523B一样,都是应用于离线式小功率 AC/DC 开关电源的高性能的原边反馈控制功率开关芯片。在全电压输入范围内,可以实现高精度恒流输出,并且不需要环路
    发表于 11-09 15:37

    钲铭科电子SM7055电压力锅电源IC方案

    、BUCK-BOOST 系统方案,支持12V和18V输出电压,很方便的应用于小家电产品领域,SM7055电源芯片方案稳定、低成本,深受客户的欢迎。方案并提供了过温、过流、过压、欠压等完善的保护
    发表于 02-19 14:59

    MultiMediacard大容量串行Flash存储

    SMDB和SDMJ两种构成技术。SMDB即二进制NAND技术(BinaryNAND),16MB和32MB容量的MMC采用此技术。目前常用的
    发表于 06-20 05:00

    嵌入式CF存储技术的缺点怎么解决?

    随着应用需求的不断提高,许多嵌入式系统在应用时都要求带有扩展的大容量存储器来存储数据。CF (Compact Flsah Card)由于价格便宜、存储容量大、体积小、兼容性好等优点被广泛应用
    发表于 08-20 08:23

    比E2PROM和NOR Flash容量稳定性高的SD NAND Flash

    不同,都需要重新调试驱动;  4、即使理论上的功能实现了,但大家都知道MCU为了低功耗,性能上做了妥协的。针对这么复杂的驱动程序,MCU也有心无力,让人感觉是小马拉大车。  那么针对MCU需要使用大容量
    发表于 10-10 16:55

    关于CS品牌小容量SD接口存储芯片NANDFlash参数介绍

    `  大家都在想,是否有一种可焊接的SD产品。是否有一种品质稳定可靠,尺寸又小,简单易用,还不用写驱动的NAND Flash产品呢?  什么是SD NAND呢?最近非常多的朋友一直想知道这个
    发表于 10-16 15:46

    ECC技术的工作原理

    是一种能够实现“错误检查和纠正”的技术。1、奇偶校验技术要了解 ECC 技术,就不能不提到 Parity(奇偶校验)。在
    发表于 11-03 08:26

    请问如何模拟RAM ECC功能

    我正在使用 STM32H745。STM32H745的功能中,用到了RAM ECC功能。我开发的产品应该在RAM出现异常时停止工作。因此,如果 RAM 出现问题,我想检查我实现
    发表于 02-01 07:06

    什么是ECC内存

    什么是ECC内存 ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现“错误检查和纠正”的
    发表于 01-12 15:42 793次阅读

    基于FPGA的NAND Flash ECC校验

    本文将ECC校验算法通过硬件编程语言VHDL在AheraQuanusⅡ7.0开发环境下进行了后仿真测试,实现了NANDFlash的ECC校验功能。本程序可
    发表于 07-17 10:55 5856次阅读
    基于FPGA的NAND Flash <b class='flag-5'>ECC</b>校验

    nonecc内存和ecc内存的区别

     ecc内存就是能够实现错误检查和纠正技术的内存条,多应用于服务器和图形工作站上。
    的头像 发表于 09-19 16:18 1.3w次阅读