This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:不可纠正的位翻转错误

Guru**** 2614265 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/655171/linux-am3352-uncorrectable-bit-flips-error

器件型号:AM3352

工具/软件:Linux

我使用新的 SDK:am335x-evm-linux-sdk-arago-src-04.00.00.04.tar

starting from nand 的函数现在还可以、但在内核启动期间  、OMAP2-nand OMAP2-nand.0存在错误:找到不可纠正的位翻转、我已经检查了内核代码、它发现了一个 ERROR_UNcorrectable:

在文件驱动程序\MTD\n 和\OMAP2.c 中:

对于(i = 0;i < eccsteps;i++){

if (ERR_VEC[I].ERROR_UNcorrectable){

DEV_ERR(&INFO->PDEV-DEV,

"发现不可纠正的位翻转\n");

ERR =-EBADMSG;

在文件 drivers/MTD/nand/omap_elm.c 中、 当在 elm_error_correction 函数中读取 ELM_LOCATE_STATUS 错误时、ERR_VEC[i].ERROR_UNcorrectable 将设置为 true:

静态空 elm_error_correction (struct elm_info *信息、
struct elm_errorvec * err_vec)

int i、j、errors = 0;
INT 偏移;
u32 reg_val;

对于(i = 0;i < info->ecc_steps;i++){

/*报告的检查错误*/
if (err_vec[i].error_reported){
偏移= ELM_LOCATE_STATUS + ERROR_LOCATE_SIZE * i;
REG_val = elm_read_reg (info、offset);

/*检查可纠正的错误或不是*/
if (reg_val & ecc_corrected_mask) {
偏移= ELM_ERROR_LOCATE_0 +
error_location_size * i;

/*可纠正错误的读取计数*/
ERR_VEC[I].ERROR_COUNT = REG_Val &
ecc_NB_errors_mask;

/*更新错误矢量中的错误位置*/
对于(j = 0;j < err_vec[i].error_count;j++){

REG_val = elm_read_reg (info、offset);
ERR_VEC[i]。error_loc[j]= reg_val &
ecc_error_location_mask;

/*更新错误位置寄存器*/
偏移+=4;

错误+= ERR_VEC[i]。error_count;
}否则{
ERR_VEC[I].ERROR_UNcorrectable = true;

/*清除已处理错误矢量的中断*/
Elm_write_reg (info、ELM_IRQSTATUS、bit (i));

/*禁用页面模式*/
Elm_configure_page_mode (info、i、false);


为什么我 的 ELM_LOCATE_STATUS 寄存器出错?  如何解决此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、LONGFEI、

    在刷写映像之前、您是否在 U-Boot 控制台中运行了 nand erase.chip 命令?

    此致、
    Kemal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kemal。

    当我将所有固件刷写到闪存中时、我就完成了这一操作。 是否有任何 方法可以检查我的闪存是否被擦除? 什么是用于检查此情况的 abort nand dump 命令?

    ELM_LOCATE_STATUS_I 寄存器是一个状态寄存器、它是只读的、 该寄存器错误是否必须意味着我的 bitflips 闪存错误?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否在刷写 NAND 时发布 u-boot 命令和响应?

    Steve K.