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.

AM4378: NAND Boot Failure and ECC Errors on AM4378x-based System

Guru 12165 points
Part Number: AM4378

Tool/software:

Hi,

We are currently encountering a recurring issue with our product using the TI SITARA AM4378x processor.
Specifically, during Linux boot-up, the system fails to start, and error messages similar to those in the attached logs are observed.

U-Boot 2021.01-g44a87e3ab8 (Aug 20 2024 - 21:54:41 +0000)

CPU  : AM437X-GP rev 1.2
Model: TI AM437x GP EVM
DRAM:  1 GiB
PMIC:  TPS65218
NAND:  1024 MiB
MMC:   OMAP SD/MMC: 0
Loading Environment from FAT... MMC: no card present
Net:   Could not get PHY for ethernet@4a100000: addr 0
eth2: ethernet@4a100000
Hit any key to stop autoboot:  0
MMC: no card present
MMC: no card present
MMC: no card present
MMC: no card present
starting USB...
Bus usb@483d0000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus usb@483d0000 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

Device 0: unknown device
Booting from nand ...

NAND read: device 0 offset 0x100000, size 0x80000
524288 bytes read: OK

NAND read: device 0 offset 0x300000, size 0x700000
omap-elm: uncorrectable ECC errors
omap-elm: uncorrectable ECC errors
NAND read from offset 300000 failed -74
0 bytes read: ERROR
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 8ffe2000, end 8ffffbaf ... OK

Starting kernel ...

It will freeze at this point. Sometimes it will start without any errors.

U-Boot 2021.01-g44a87e3ab8 (Aug 20 2024 - 21:54:41 +0000)

CPU  : AM437X-GP rev 1.2
Model: TI AM437x GP EVM
DRAM:  1 GiB
PMIC:  TPS65218
NAND:  1024 MiB
MMC:   OMAP SD/MMC: 0
Loading Environment from FAT... MMC: no card present
Net:   Could not get PHY for ethernet@4a100000: addr 0
eth2: ethernet@4a100000
Hit any key to stop autoboot:  0
MMC: no card present
MMC: no card present
MMC: no card present
MMC: no card present
starting USB...
Bus usb@483d0000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus usb@483d0000 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

Device 0: unknown device
Booting from nand ...

NAND read: device 0 offset 0x100000, size 0x80000
 524288 bytes read: OK

NAND read: device 0 offset 0x300000, size 0x700000
omap-elm: uncorrectable ECC errors
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
omap-elm: uncorrectable ECC errors
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
nand: error: invalid bit-flip location
NAND read from offset 300000 failed -74
 0 bytes read: ERROR
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 8ffe2000, end 8ffffb75 ... OK

Starting kernel ...

Q1:
The logs from both units show NAND-related errors with error code -74.
Additionally, the log from Unit 2 contains multiple instances of the following message:

   nand: error: invalid bit-flip location

Could you please advise on the potential root causes for these errors?

Q2:
According to Advisory 15 in the AM437x Sitara Processors Silicon Revisions 1.1, 1.2 documentation, the following is noted:

Advisory 15: ROM: NAND Boot Mode is Unsupported
Revisions Affected: 1.1
Details: The ROM does not send the proper commands to determine if the boot blocks are valid, thus NAND boot (NAND, NAND_I2C) is unreliable.
Workaround: None

In our case, the logs show that the CPU is rev 1.2. Based on this, we understand that our units should not be affected by this advisory. Could you please confirm if this understanding is correct?

Thanks,

Conor

  • Hi,

    This is urgently needed, so it would be very helpful if you could answer by the end of today.
    I would also like to check from a hardware perspective whether there is a problem with the way the AM4378 and NAND FLASH are connected. I will share the circuit diagram with you, so could you please check it?

    3482.Circuit Diagram.pdf

    Thanks,

    Conor

  • Hi,

    A customer has contacted us saying that they would like a quick response regarding this issue. I'm sorry, but could you let us know by the end of today? We would also like to confirm the following points in addition.
    1. The lot number of the AM4378 where the issue is occurring is "631B ZDN." Has there been any reported defect information for this lot?
    2. Has there been any reported defect information regarding NAND in TI's Linux SDK?

    Thanks,

    Conor

  • It sounds like this system already has been in production for a while? And the errors are only seen recently, on some units? And you have other units (how many?) that operate without issues? Is this understanding correct?

    Also, when you re-flash the failing units, do they then operate correctly?

    Regards, Andreas

  • Hi Andreas,

    We are currently investigating a NAND read failure occurring on 3 boards from lot number "631B ZDN". On approximately 5 other boards, no issues have been observed so far.

    *This product is in the prototype stage before mass production.


    Although reprogramming might resolve the issue, we have not yet tried this because we want to understand the root cause first.

    During our analysis, we found that ECC correction might not be functioning properly within U-Boot when executing the nand read command. To verify this, we compared the original zImage with the data retrieved from NAND using U-Boot.

    Hi Andreas,

    We observed bit errors in the zImage area. The following commands were used in U-Boot:

    ーーー
    ruby
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    ... (repeated)
    NAND read from offset 300000 failed -74
    => save usb 0:1 0x82000000 /zImage_TD2 0x4c4200
    After comparing the retrieved zImage_TD2 with the original image, we confirmed that bit corruption occurred.
    ーーー

    We also tried using the nand read.raw command to include the OOB (ECC) data and expected to retrieve the uncorrected data for further analysis. However, the result was exactly the same as the data from the regular nand read command, and still showed only a single-bit error — which should be correctable. Despite this, an "uncorrectable ECC error" was reported.

    Based on these results, we suspect that ECC correction might not be functioning as expected in the U-Boot read operation.

    Q1. Do you have any known issues or insights into this kind of behavior, where ECC correction fails in U-Boot even when the bit error is correctable?

    Q2. Could you also review the schematic we shared earlier to confirm if there is any potential issue in the hardware design?

    We appreciate any support you can provide to help resolve this issue.

    Thanks,

    Conor

  • Hi Conor,

    I noticed in your earlier log the following comment....

    It will freeze at this point. Sometimes it will start without any errors.

    ...which sounds like perhaps this is not a Flash data corruption issue, but perhaps something hardware related to the communication/connections between AM437x and the NAND flash.

    A quick test for this would be to slow down the GPMC controller by setting bit 0 in the GPMC_CONFIG1 register. This can be done using three methods...

    1. Change the U-Boot code as follows (but this will require re-programming which looks like you don't want)

      diff --git a/arch/arm/include/asm/arch-am33xx/mem.h b/arch/arm/include/asm/arch-am33xx/mem.h
      index 0fd52f82f59..f9d7581ceee 100644
      --- a/arch/arm/include/asm/arch-am33xx/mem.h
      +++ b/arch/arm/include/asm/arch-am33xx/mem.h
      @@ -37,7 +37,7 @@
       #define GPMC_SIZE_32M          0xE
       #define GPMC_SIZE_16M          0xF
      
      -#define M_NAND_GPMC_CONFIG1    0x00000800
      +#define M_NAND_GPMC_CONFIG1    0x00000801      /* GPMC_CLK frequency = GPMC_FCLK frequency/2 */
       #define M_NAND_GPMC_CONFIG2    0x001e1e00
       #define M_NAND_GPMC_CONFIG3    0x001e1e00
       #define M_NAND_GPMC_CONFIG4    0x16051807\



    2. Change that register using the U-Boot command line tools (using `md` and `mw` commands)

    3. Using JTAG
    Q1. Do you have any known issues or insights into this kind of behavior, where ECC correction fails in U-Boot even when the bit error is correctable?

    I don't have any hands-on experience with NAND/ECC on AM335x/AM437x class devices, and our expert on this is out of the office until next week. But in the meantime we can try to find related information by searching the E2E database.

    Q2. Could you also review the schematic we shared earlier to confirm if there is any potential issue in the hardware design?

    I'll see if I can find somebody from the hardware team that can help review the schematic.

    1. The lot number of the AM4378 where the issue is occurring is "631B ZDN." Has there been any reported defect information for this lot?
    2. Has there been any reported defect information regarding NAND in TI's Linux SDK?

    I'm not aware of any lot or SDK-version related issues when it comes to NAND operation.

    Also one last thing, I noticed you are using U-Boot 2021.01 which means AM437x SDK v8.x. We have since released SDK v9.x which uses a newer U-Boot version of 2023.04. You should try to see if moving to the latest U-Boot has any impact on the NAND behavior. But even if not I would highly recommend using our latest/current U-Boot. See https://www.ti.com/tool/PROCESSOR-SDK-AM437X

    Regards, Andreas

  • Hi All, 

    I reviewed the schematics and checked internally and have the below suggestions:

    Reduce the series resistor value to 0R for the data signals.

    Add a external pullup for the data signals

    disable the internal pulls for the data signals

    Regards,

    Sreenivasa

  • Hi Andreas and Sreenivasa,

    We have a couple of follow-up questions based on your recent feedback:

    Q1.
    Regarding the procedure for modifying the GPMC_CONFIG1 register:
    Is the following method correct?

    At the U-Boot prompt, we execute:

    md.l 0x50000060
    Then, we take the read value and modify only the lower two bits (bit[1:0]) to 11b, keeping all other bits unchanged, and write back with:

    mw.l 0x50000060 0xXXXXXXX 1
    (where XXXXXXX is the value with bit[1:0] set to 11b)

    After that, we run nand read to evaluate if there is any improvement in the frequency of data corruption. Could you please confirm whether this procedure is appropriate?

    Q2.
    We understand that changing the series resistors on the data lines to 0Ω is feasible. However, adding external pull-up resistors is physically difficult on our current board.

    Could you clarify the reason for recommending external pull-ups for the NAND data lines?
    Also, if external pull-ups are indeed necessary, could you please provide guidance on the recommended resistor value?

    We would appreciate your advice on the above points.

    Best regards,

    Conor

  • Hello Conor,

    Thank you for the inputs.

    Q2.
    We understand that changing the series resistors on the data lines to 0Ω is feasible. However, adding external pull-up resistors is physically difficult on our current board.

    Since we are trying to root cause the issue, this is one of the suggestion to check.

    Could you clarify the reason for recommending external pull-ups for the NAND data lines?
    Also, if external pull-ups are indeed necessary, could you please provide guidance on the recommended resistor value?

    The internal pulls have wide variation in the pull values.

    You could consider using a 10K external pullup resistor for testing and increase if power is a concern.

    Regards,

    Sreenivasa

  • Hi Andreas and Sreenivasa,

    Even when the operating speed of the GPMC was temporarily slowed down, the frequency of the phenomenon did not change. I have attached the log information of the test results, so I would appreciate it if you could check it.

    ★NANDread test log
    U-Boot 2021.01-g44a87e3ab8 (Aug 20 2024 - 21:54:41 +0000)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x GP EVM
    DRAM:  1 GiB
    PMIC:  TPS65218
    NAND:  1024 MiB
    MMC:   OMAP SD/MMC: 0
    Loading Environment from FAT... MMC: no card present
    Net:   Could not get PHY for ethernet@4a100000: addr 0
    eth2: ethernet@4a100000
    Hit any key to stop autoboot:  0
    => usb start
    starting USB...
    Bus usb@483d0000: Register 2000440 NbrPorts 2
    Starting the controller
    USB XHCI 1.00
    scanning bus usb@483d0000 for devices... 2 USB Device(s) found
           scanning usb for storage devices... 1 Storage Device(s) found
    => ls usb 0
                System Volume Information/
                files/
       109430   am437x-gp-evm-hdmi.dtb
       171889   MLO
     280231936   tisdk-base-image-am437x-evm.ubi
       767000   u-boot.img
      4997632   zImage
      4997632   zImage_Dummy
            0   zImage_DummyR1
            0   zImage_DummyR6
            0   zImage_DummyR7
            0   zImage_DummyR2
            0   zImage_DummyR3
            0   zImage_DummyR4
            0   zImage_DummyR5
            0   zImage_DummyR8
            0   zImage_DummyR9
            0   zImage_DummyR10
    
    16 file(s), 2 dir(s)
    
    ★Reduces GPMC operation speed by 1/4
    => md.l 0x50000060 1
    50000060: 00000800                               ....
    => mw.l 0x50000060 0x00000803
    => md.l 0x50000060 1
    50000060: 00000803                               ....
    
    ★10 tests
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR1 0x4c4200
    4997632 bytes written in 424 ms (11.2 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR2 0x4c4200
    4997632 bytes written in 265 ms (18 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR3 0x4c4200
    4997632 bytes written in 279 ms (17.1 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR4 0x4c4200
    4997632 bytes written in 258 ms (18.5 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR5 0x4c4200
    4997632 bytes written in 390 ms (12.2 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR6 0x4c4200
    4997632 bytes written in 251 ms (19 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR7 0x4c4200
    4997632 bytes written in 251 ms (19 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR8 0x4c4200
    4997632 bytes written in 276 ms (17.3 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR9 0x4c4200
    4997632 bytes written in 258 ms (18.5 MiB/s)
    => mw.b 0x82000000 0x55 0x700000
    => nand read 0x82000000 NAND.kernel 0x700000
    
    NAND read: device 0 offset 0x300000, size 0x700000
    omap-elm: uncorrectable ECC errors
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    nand: error: invalid bit-flip location
    NAND read from offset 300000 failed -74
     0 bytes read: ERROR
    => save usb 0:1 0x82000000 /zImage_DummyR10 0x4c4200
    4997632 bytes written in 1277 ms (3.7 MiB/s)
    =>
    
    

    I don't have any hands-on experience with NAND/ECC on AM335x/AM437x class devices, and our expert on this is out of the office until next week. But in the meantime we can try to find related information by searching the E2E database.

    Also, as of last week, there were no experts on NAND/ECC-related matters for AM437x class devices, so a response is currently pending. You have commented that you plan to return to work within this week, so could you please look into this again?

    Thanks,

    Conor

  • I'm on PTO this week but I will need be picking up E2E support again next week. Thanks.

  • Hi Andreas and support member,

    I understand. Since this is a problem just before mass production, it would be very helpful if you could respond as soon as possible. I also have the following additional questions.

    We reviewed the TI-provided U-Boot documentation (doc/README.nand) and found a statement around line 260 indicating that
    "BCH16 is not supported for NAND devices with 2KB page size."

    In our current design, we are using the Micron MT29F8G08ABACAWP, which has a 2KB page size,
    and would like to confirm whether BCH8 is the correct ECC mode to use in this case.

    Additionally, our understanding is that the ROM bootloader in the AM4378 uses BCH8 ECC by default when reading the SPL (MLO) from NAND during boot.
    Could you please confirm if this is correct?

    If there are any constraints or implementation notes we should be aware of regarding this behavior, we would greatly appreciate your guidance.

    Thanks,

    Conor

  • Hi Conor,
    Let's merge this e2e into the following one, and close this one as the two e2e looks like on the same issue.
    https://e2e.ti.com/support/processors-group/processors/f/791/t/1519366
    Best,
    -Hong