s3c2440 K9F2G08 nandflash支持硬件ECC校验

本文详细介绍了S3C2440处理器如何支持K9F2G08 NandFlash的硬件ECC校验。通过分析S3C2440的NandFlash控制器,解释了main区和spare区的ECC校验过程,以及读写操作中ECC的计算与存储。主要涉及的函数包括s3c2410_nand_enable_hwecc、s3c2410_nand_calculate_ecc和s3c2410_nand_correct_data。通过对相关寄存器的设置和操作,实现了硬件ECC校验功能,确保了数据的正确读写。
摘要由CSDN通过智能技术生成

        S3c2440nandflash K9F2G08是支持硬件ECC的,NandFlash的每一页分为main区和spare区,S3C2440NandFlash控制器支持这两个区的硬件ECC,这里我们实现main区的硬件ECC。在include/configs/fl2440.h文件中,如果我们定义了nandflash的硬件ECC校验,那么我们就可以控制相应的nandflash寄存器,实现硬件ECC。     

nandflash的每一页有两区:main区和spare区,main区用于存储正常的数据,spare区用于存储其他附加信息,其中就包括ECC校验码。

当我们在写入数据的时候,我们就计算这一页数据的ECC校验码,然后把校验码存储到spare区的特定位置中,在下次读取这一页数据的时候,同样我们也计算ECC校验码,然后与spare区中的ECC校验码比较,如果一致则说明读取的数据正确,如果不一致则不正确。

s3c2440能够硬件产生ECC校验码main区的ECC校验码和spare区的ECC校验码。因为K9F2G08U0A8IO口,因此s3c2440共产生4个字节的mainECC2个字节的spareECC

在这里我们规定,在每一页的spare区的第0个地址到第3个地址存储mainECC4个地址和第5个地址存储spareECC。产生ECC校验码的过程为:在读取或写入哪个区的数据之前,先解锁该区的ECC,以便产生该区的ECC。在读取或写入完数据之后,再锁定该区的ECC,这样系统就会把产生的ECC码保存到相应的寄存器中

main区的ECC保存到NFMECC0/1(因为K9F2G08U0A8IO口,因此这里只用到了NFMECC0spare区的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值