硬件ecc和软件ecc

本文探讨了硬件ECC和软件ECC在NAND Flash中的应用。硬件ECC通过控制器支持不同校验能力,如Hisi3518A支持1bit/512bytes等。软件ECC在u-boot中实现,如S3C2440通过nand_read_page_hwecc和nand_write_page_hwecc函数进行读写操作。硬件ECC在读写过程中自动完成校验和校正,提供数据可靠性。
摘要由CSDN通过智能技术生成

        从各种资料上看,不管是硬件ECC还是软件ECC,他们都或者是通过flash controler上的ecc模块或程序中的软件ecc模块来对每一页中data area中的数据进行ecc校验,校验值都来自于或存放到spare area中去。

不管是硬件还是软件,ecc的校验都是伴随着pgae read或page wirte来的,也就是在读写一页的过程中必须要实现的一个动作。在读写一页时,对于ecc的能力我们一般可以这样描述:该ecc模块一次可以校验aaa个字节,一个大小为bbb字节的页,则一共需要校验ccc=bbb/aaa次,每次产生的ecc校验字节数为ddd,则每页校验后在spare area区的第xxx字节位置开始,共存放ccc*ddd个字节的ecc校验值。

现在列一下我所看到的soc上nandflash控制器中所支持的硬件ecc特性:

1、hisi3518a:

 (1)支持ecc校验使能和关闭,支持ecc纠错使能和关闭;

 (2)支持1bit/512bytes,4bit/512bytes,24bit/1024bytes的校验能力;

(3)支持ecc校验错误完成等中断上报;

 

举例:1bit/512bytes

 

上面比如所说的预留区,我想应该是文件系统比如jffs2,ubifs等在文件系统管理上所要用到的地方。

2、dm365:

 

 

再列一下我所看到的软件ecc所支持的特性:

1、uboot-2010.6:

 

2、

 

 

 

 

 

 

 

 

 

==============================

(底下部分为转载)

在上一篇关于“支持NandFlash读写”的文章中,我们很好地完成了u-boot对NandFlash的读写,但这个读写进行的是软件ECC,即用软件编程的方法实现ECC。我们知道S3C2440的NandFlash控制器是支持硬件ECC的,因此在这里我们就来讲解如何实现硬件ECC。

 

NandFlash的每一页分为main区和spare区,S3C2440的NandFlash控制器支持这两个区的硬件ECC,但为了兼容u-boot-2011.06,我们只实现main区的硬件ECC。

 

为了实现硬件ECC,首先需要在include/configs/zhaocj2440.h文件内定义宏CONFIG_S3C2440_NAND_HWECC,这样在drivers/mtd/nand/s3c2440_nand.c文件内就定义了硬件ECC所需要的三个函数:s3c2440_nand_enable_hwecc函数、s3c2440_nand_calculate_ecc函数和s3c2440_nand_correct_data函数,而且在board_nand_init函数内,又把这三个函数分别赋给了相对应的结构体的三个成员,这样在进行NandFlash读写时,就会调用这三个函数,从而实现了硬件ECC。s3c2440_nand_enable_hwecc函数负责使能硬件ECC,s3c2440_nand_calculate_ecc函数负责计算ECC(当然这种计算是由硬件来完成的),s3c2440_nand_correct_data函数负责进行ECC的校验(同样地,这种校验也是由硬件自动完成的)。

 

为了理解u-boot是如何进行硬件ECC的,我们先来简要地分析一下相关的函数。NandFlash是以页为最小单位进行读写操作的,支持硬件ECC的读操作最终是由nand_read_page_hwecc函数(在drivers/mtd/nand目录下)来完成的,支持硬件ECC的写操作最终是由nand_write_page_hwecc函数(在drivers/mtd/nand目录下)来完成的。nand_read_page_hwecc函数的流程为先读取main区数据&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值