Nand flash发生位翻转问题定位(报错打印:sfc_nand_prog_page_raw ea80 cache bitflip)

文章描述了一次排查RK3568芯片在适配SPINANDFlash时出现位翻转错误的过程。问题由内核使用四线模式写入数据导致,因FSPI_D2引脚与eMMC复用,造成驱动能力不足。解决方案是确保在调试时断开eMMC的复位引脚,避免同时连接eMMC和nandflash。
摘要由CSDN通过智能技术生成

1、前言

(1)nand flash出现位翻转的可能原因有多种,比如:nand flash芯片本身工作不正常;参数配置不对,导致操作时序不对;硬件布线有问题,导致线路被干扰;
(2)我遇到的这次出错是rk3568芯片适配SPI nand flash,分析步骤是我排查该问题的过程;

2、报错打印

sfc_nand_prog_page_raw e8c1 cache bitflip
sfc_nand_prog_page_raw e8c2 cache bitflip
sfc_nand_prog_page_raw ea01 cache bitflip
sfc_nand_prog_page_raw ea02 cache bitflip
sfc_nand_prog_page_raw ea80 cache bitflip
sfc_nand_prog_page_raw e700 cache bitflip
sfc_nand_prog_page_raw e8c3 cache bitflip
sfc_nand_prog_page_raw ea03 cache bitflip

3、出现位翻转报错的原因

(1)写nand flash的步骤:擦除->写数据->回读校验;
(2)出现位翻转的报错,就是把写进去的数据再读出来,发现写进去的数据不正常,也就是写失败了;
(3)nand flash的操作时序参考博客:https://blog.csdn.net/weixin_42031299/article/details/115469032;

4、问题定位过程

4.1、问题现象

(1)用瑞芯微的官方下载工具是可以烧录程序到nand flash中,uboot下也可以烧录升级程序到nand flash中,但是内核运行起来后,通过内核的接口去写nand flash报位翻转的错误;
(2)初步定位:
<1>官方烧录工具和uboot能烧录升级程序,说明写nand flash是没有问题;
<2>uboot和内核都能运行起来,说明读nand flash也是没有问题的;
<3>uboot下读写nand flash都是正常的,内核写读flash正常,但是写flash不正常;
初步结论:nand flash硬件没有问题,内核和uboot对nand flash的配置可能不一样,导致内核只能读不能写nand flash;

4.2、引脚分析

在这里插入图片描述

(1)nand flash采用SPI接口,支持4线读写,同时也支持两线读写;
(2)两线读写时用数据线FSPI_D0、FSPI_D1;四线读写时用FSPI_D0、FSPI_D1、FSPI_D2、FSPI_D3;
(3)SPI接口可参考博客:https://blog.csdn.net/weixin_42031299/article/details/128990403;

4.3、排查原因

//内核四线制的nand flash打印
nand: sfc_nand id: c8 1 7f
sfc_nand: sfc_nand A0 = 0x0
sfc_nandmount nfs_share used time:0s
: sfc_nand B0 = 0x10
sfc_nand: read_lines = 2
sfc_nand: prog_lines = 2
sfc_nand: page_read_cmd = 6b
sfc_nand: page_prog_cmd = 32
rkflash[2] init success

//内核两线制的nand flash打印
nand: sfc_nand id: c8 1 7f
sfc_nand: sfc_nand A0 = 0x0
sfc_nandmount nfs_share used time:0s
: sfc_nand B0 = 0x10
sfc_nand: read_lines = 2
sfc_nand: prog_lines = 0
sfc_nand: page_read_cmd = 6b
sfc_nand: page_prog_cmd = 32
rkflash[2] init success

在这里插入图片描述

(1)经过与瑞芯微官方沟通,以及查看uboot下nand flash的配置,可以确认官方下载工具和uboot是使用2线读写来操作的nand flash;
(2)修改内核的nand flash配置参数,将四线制改为两线制,发现内核下读写nand flash正常;
(3)初步得到结论:两线制读写nand flash是正常的,内核在四线制下读nand flash正常,写namd flash不正常;写nand flash是用的FSPI_D2、FSPI_D3引脚,于是怀疑是这两个引脚工作不正常;
(4)用示波器测量FSPI_D2、FSPI_D3引脚的波形,发现FSPI_D2引脚波形不正常;
(5)分析FSPI_D2引脚,发现这个引脚是和eMMC的复位引脚共用的;
(6)因为rk3568要适配eMMC和nand flash,所以在板子上同时接了eMMC和nand flsah,调试nand flash时eMMC是上电的,只是没有给eMMC时钟信号;
(7)总结:怀疑是因为引脚同时接了eMMC和nand flash,导致引脚的驱动能力不足;

5、问题解决

(1)实际产品的rk3568板子不会同时接eMMC和nand flash,当前会出现同时接线,是因为想一块板把eMMC和nand flash都适配了;
(2)调试nand flash时,将CPU_EMMC_RSTn断开,不要同时接eMMC,nand flash工作正常;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值