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:找到 NAND 不可纠正的位翻转

Guru**** 2562120 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/615788/linux-am3352-nand-uncorrectable-bit-flips-found

器件型号:AM3352

工具/软件:Linux

您好!

我有  一个带有 NAND 芯片的 BeagleBone Black 开发板:MT29F8G08ABACAH4 (4K 页、SLC、8位总线宽度)
uBoot 与 bch16 nand ECC(uboot:am335x_evm.h #define CONFIG_NAND_OMAP-ECCSCHEME   OMA_ECC_BCH16_CODE_HW)搭配使用
Linux 可以安装 ubifs、但会显示以下 nand 错误消息、

获取错误 dmesg:
--------
OMAP-GPMC 50000000。GPMC:找不到节点/ocp/l4_wkup@44c00000/CSCM@210000/ pinmux@800/nandflash_pins_default 的 pctldev、推迟探针
(笑声)
[7.882490]   OMAP2-nand 8000000.nand:找到不可纠正的位翻转
[7.895575]   OMAP2-nand 8000000.nand:找到不可纠正的位翻转

请帮助我找到问题。 谢谢

在 Linux 4-4 AM335x-boneblack.dts 中、我添加了以下内容,
----------------------------------

 am33xx_pinmux{(am33xx_pinmux)}
 (笑声)
/*I add nand support,以下文件来自 AM335x-evm.dts */
 nandflash_pins_default:nandflash_pins_default{
                 pinctrl-single、pins =<
                         0x0 (PIN_INPUT_PULLUP | MUX_MODE0)     /* GPMC_AD0.GPMC_AD0 */
                         0x4 (PIN_INPUT_PULLUP | MUX_MODE0)     /* GPMC_AD1.GPMC_AD1 */
                         0x8 (PIN_INPUT_PULLUP | MUX_MODE0)     /* GPMC_AD2.GPMC_AD2 *
                         0xc (PIN_INPUT_PULLUP | MUX_MODE0)     /* GPMC_AD3.GPMC_AD3 *
                         0x10 (PIN_INPUT_PULLUP | MUX_MODE0)    /* GPMC_AD4.GPMC_AD4 */
                         0x14 (PIN_INPUT_PULLUP | MUX_MODE0)    /* GPMC_AD5.GPMC_AD5 *
                         0x18 (PIN_INPUT_PULLUP | MUX_MODE0)    /* GPMC_AD6.GPMC_AD6 *
                         0x1c (PIN_INPUT_PULLUP | MUX_MODE0)    /* GPMC_AD7.GPMC_AD7 *
                         0x70 (PIN_INPUT_PULLUP | MUX_MODE0)    /* GPMC_wait0.GPMC_wait0 */
                         0x74 (PIN_INPUT_PULLUP | MUX_MODE7)    /* GPMC_WPN.GPIO0_30 */
                         0x7c (PIN_OUTPUT | MUX_MODE0)          /* GPMC_csn0.GPMC_csn0 */
                         0x90 (PIN_OUTPUT | MUX_MODE0)          /* GPMC_advn_ALe.GPMC_advn_ALE */
                         0x94 (PIN_OUTPUT | MUX_MODE0)          /* GPMC_oen_ren。GPMC_oen_ren *
                         0x98 (PIN_OUTPUT | MUX_MODE0)          /* GPMC_WN.GPMC_Wen */
                         0x9C (PIN_OUTPUT | MUX_MODE0)          /* GPMC_be0n_cle。GPMC_be0n_cle *
                 >;
         };
      nandflash_pines_sleep:nandflash_pines_sleep{
                 pinctrl-single、pins =<
                         0x0 (PIN_INPUT_PULLUGD | MUX_MODE7)
                         0x4 (PIN_INPUT 下拉| MUX_MODE7)
                         0x8 (PIN_INPUT 下拉| MUX_MODE7)
                         0xc (PIN_INPUT_PULLUGD | MUX_MODE7)
                         0x10 (PIN_INPUT 下拉| MUX_MODE7)
                         0x14 (PIN_INPUT_PULLUX | MUX_MODE7)
                         0x18 (PIN_INPUT 下拉| MUX_MODE7)
                         0x1c (PIN_INPUT_PULLUX | MUX_MODE7)
                         0x70 (PIN_INPUT 下拉| MUX_MODE7)
                         0x74 (PIN_INPUT 下拉| MUX_MODE7)
                         0x7c (PIN_INPUT_PULLUP | MUX_MODE7)
                         0x90 (PIN_INPUT 下拉| MUX_MODE7)
                         0x94 (PIN_INPUT 下拉| MUX_MODE7)
                         0x98 (PIN_INPUT 下拉| MUX_MODE7)
                         0x9C (PIN_INPUT_PULLUX | MUX_MODE7)
                 >;
         };

 };

 GPMC{
         状态="正常";
         pinctrl-names ="default"、"sleep";
         pinctrl-0 =<和 flash_pins_default>;
         pinctrl-1 =<和 flash_pins_sleep>;
         范围=<0 0x08000000 0x1000000>;   // CS0:16MB (用于 NAND)*/
         NAND@0、0{
                 兼容="ti、OMAP2-nand";
                 reg =<0 0 4>;/* CS0、偏移量0、IO 大小4 */
                 interrupt-parent =<&GPMC>;
                 中断=<0 IRQ_TYPE_NONE>、/* FIFO 事件*/
                              <1 IRQ_TYPE_None>;// termCOUNT */
                 RB-GPIO =<&GPMC 0 GPIO_ACTIVE_HIGH>;/* GPMC_wait0 */

                 TI、nand-ecc-opt ="bch16";
                 TI、elm-id =<和 elm>;
                 NAND-BUS 宽度=<8>;
                 GPMC、器件宽度=<1>;
                 GPMC、SYNC-clk-ps =<0>;
                 GPMC、cs-on-ns =<0>;
                 GPMC、cs-rd-Off-ns =<40>;
                 GPMC、cs-wr-off-ns =<40>;
                 GPMC、Adv-on-ns =<0>;
                 GPMC、Ad-rd -关闭-ns =<25>;
                 GPMC、Adv-wr-off-ns =<25>;
                 GPMC、WE-ON-ns =<0>;
                 GPMC、WE-OFF-ns =<20>;
                 GPMC、OE-ON-ns =<3>;
                 GPMC、OE-OFF-ns =<30>;
                 GPMC、ACCESS ns =<30>;
                 GPMC、第周期-ns =<40>;
                 GPMC、功率周期-ns =<40>;
                 GPMC、总线翻转-ns =<0>;
                 GPMC、cycle2cycle-delay-ns =<0>;
                 GPMC、clk-activation-ns =<0>;
                 GPMC、wr 访问-ns =<40>;
                 GPMC、wr-data-mux-bus-ns =<0>;
                 /* MTD 分区表*/
                 /*所有 SPL-*分区的大小均为最小长度
                  可独立编程。 原因
                  * NAND 闪存这等于擦除块的大小*/
                 #address-cells =<1>;
                 大小单元格=<1>;
                 分区@0{
                         标签="NAND.SPL";
                         REG =<0x00000000 0x000020000>;
                 };
                 分区@1{
                         标签="NAND.SPL.Backup1";
                         REG =<0x00020000 0x00020000>;
                 };
                 分区@2{
                         标签="NAND.SPL.Backup2";
                         REG =<0x00040000 0x00020000>;
                 };
                 分区@3{
                         标签="NAND.SPL.backup3";
                         REG =<0x00060000 0x00020000>;
                 };
                 分区@4{
                         标签="NAND.u-boot-spl-os";
                         REG =<0x00080000 0x00040000>;
                 };
                 分区@5{
                         标签="NAND.u-BOOT";
                         REG =<0x000C0000 0x00100000>;
                 };
                 分区@6{
                         标签="NAND.u-boot-env";
                         REG =<0x001C0000 0x00020000>;
                 };
          分区@7{
                         标签="NAND.u-boot-env.Backup1";
                         REG =<0x001E0000 0x00020000>;
                 };
                 分区@8{
                         标签="NAND.kernel";
                         REG =<0x00200000 0x00800000>;
                 };
                 分区@9{
                         标签="NAND.file-system";
                         REG =<0x00A00000 0x0F600000>;
                 };
         };
 };
等距{(&E)
         状态="正常";
};
谢谢、
James