linux kernel 如何设置nand 的ECC校验方式(TI AM335X硬件)

一、软硬件说明

硬件平台:TI  AM335X系类

Linux kernel 版本:linux-3.2.0-psp04.06.00.11


二、修改kernel 的nand ECC校验方式

(1)源文件:
linux-3.2.0-psp04.06.00.11\arch\arm\mach-omap2\board-am335xevm.c


(2)nand 设置ECC校验方式的函数

static void evm_nand_init(int evm_id, int profile) 
 // 函数功能:nand初始化(含有ECC校验设置)

TI原版代码设置nand 的ECC校验方式(默认采用BCH8的ECC校验方式):

pdata->ecc_opt = OMAP_ECC_BCH8_CODE_HW;

(3)修改方法:

修改 pdata->ecc_opt 的数值(根据用户的实际需要,修改不同的数值),如下

pdata->ecc_opt = OMAP_ECC_HAMMING_CODE_HW; 

(4)ECC校验方式说明:

具体 的ECC校验方式,请参考文件:  \linux-3.2.0-psp04.06.00.11\arch\arm\plat-omap\include\plat\gpmc.h
以下是ECC校验方式的源码:

enum omap_ecc 
{
	/* 1-bit ecc: stored at end of spare area */
	OMAP_ECC_HAMMING_CODE_DEFAULT = 0, /* Default, s/w method */
	OMAP_ECC_HAMMING_CODE_HW, /* gpmc to detect the error */
	/* 1-bit ecc: stored at beginning of spare area as romcode */
	OMAP_ECC_HAMMING_CODE_HW_ROMCODE, /* gpmc method & romcode layout */
	OMAP_ECC_BCH4_CODE_HW, /* gpmc bch detection & s/w method correction */
	OMAP_ECC_BCH8_CODE_HW, /* gpmc bch detection & s/w method correction */
};


你可能感兴趣的:(Linux,linux,kernel,nand,ecc,TI,AM335X)