天嵌 ARM开发社区

 找回密码
 注册
查看: 2435|回复: 3

TQ335x 硬件ECC错误

[复制链接]
冷夜下DE冷刃 发表于 2017-3-31 08:30:32 | 显示全部楼层 |阅读模式
我在做TQ 335x 的u-boot 移植的时候,从Nand Falsh 中启动uboot,MLO在读取u-boot的代码时,要检测我们的硬件ECC,在读取OOB区域时检查ECC校验不能通过,我查看了数据手册,发现硬件的配置也没有错误,这个该怎么解决,C:\用户\u\桌面\捕获.PNG
 楼主| 冷夜下DE冷刃 发表于 2017-3-31 08:33:42 | 显示全部楼层
本帖最后由 冷夜下DE冷刃 于 2017-3-31 08:34 编辑

C:\Users\u\Desktop\捕获.PNG

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 冷夜下DE冷刃 发表于 2017-3-31 13:33:46 | 显示全部楼层
关于u-boot中硬件ECC校验失败的原因,花了几天的世间我将问题定位到了nand_read_page 这个函数里面
,然后通过串口调试,发现 pmc_cfg->bch_result_0_3[0].bch_result3,pmc_cfg->bch_result_0_3[0].bch_result2,pmc_cfg->bch_result_0_3[0].bch_result1中的数据都是正常的,pmc_cfg->bch_result_0_3[0].bch_result1中的数据都是错误的,只要是pmc_cfg->bch_result_0_3[0].bch_result1中的数据都是错误的,于是我就去查看手册中的 Nand Flash 控制器,看到这段话
The ECC accumulator must be reset before any ECC computation accumulation process. The
GPMC_ECC_CONTROL[8] ECCCLEAR bit must be set to 1 (nonpersistent bit) to clear the accumulator
and all ECC result registers.
于是就猜想和尝试以下修改       
drivers/mtd/nand/am335x_spl_bch.c 中的 nand_read_page 做了以下修改
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
                this->ecc.hwctl(&mtd, NAND_ECC_READ);
                for(j=1000;j>0;j--);    //pyh add
                nand_command(block, page, data_pos, NAND_CMD_RNDOUT);

                this->read_buf(&mtd, p, eccsize);

                this->ecc.hwctl(&mtd, NAND_ECC_READ);  //pyh  add
            nand_command(block, page, oob_pos, NAND_CMD_RNDOUT);

                this->ecc.hwctl(&mtd, NAND_ECC_READ);
                this->read_buf(&mtd, oob, eccbytes);
                this->ecc.calculate(&mtd, p, &ecc_calc[i]);

                data_pos += eccsize;
                oob_pos += eccbytes;
                oob += eccbytes;
        }
结果问题解决了,/pyh add 是我添加的代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-20 07:25 , Processed in 2.045227 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表