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/LINUXSDK-OMAPL138: Boot failure

Part Number: LINUXSDK-OMAPL138
Other Parts Discussed in Thread: OMAPL138

Tool/software: Linux

Hello

I have an application problem to consult. The chip I used is OMAPL138. I refer to the schematic diagram of peripheral circuit design provided on the official website of TI, and completed the production of two PCB samples. During the sample debugging, it was found that the system failed to start occasionally when it was powered on, with a probability of 10%. This problem was found in both boards. The power on sequence and power-on reset test are normal. Power failure occurs during NAND FLASH or DDR2 self-check.

The error message is as follows:

I2C: READY

DRAM: 128MiB

WARNING: Caches not enabled

NAND: nand_get_flash_type : second ID read did not match 9e, 9e against 01, dc NO NAND FALSH device found!!!

0 MiB

thanks

  • Hi,

    Your design is the same as OMAPL138 LCDK, right?
    Do you use Processor SDK Linux or some other linux release? Which version?

    Best Regards,
    Yordan
  • Thank you for your reply.

    The primary difference between OMAP L138 LCDK and my design is the part number of DDR chip and NAND FLASH chip.

    OMAPL138 LCDK:

    NAND FLASH ,Part Number:MT29F4G16ABADAH4:D, Density 4Gb,Device Width:16bit,MICRON

    DDR-2 ,Part Number:K4T1G164QF-BCE7,64M×16,84 FBGA,SAMSUNG

    MY DESIGN:

    NAND FALSH ,Part Number:S34ML04G100TFI00,Density(bits):512M×8,SPANSION

    DDR-2 ,Part Number:MT47H64M16HR-25EITH,64M×16,84 FBGA,MICRON

    Linux version 3.3.0+ (tl@dsp) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #8 geda027b5 PREEMPT Sat Jul 22 08:50:24 CST 2017

  • Hi,

    I cannot check against Linux 3.3.0, but according to Processor SDK Linux the problem of your board comes from nand_base.c driver. Specifically this code segment:
    /* Read manufacturer and device IDs */
    *maf_id = chip->read_byte(mtd);
    *dev_id = chip->read_byte(mtd);

    /*
    * Try again to make sure, as some systems the bus-hold or other
    * interface concerns can cause random data which looks like a
    * possibly credible NAND flash to appear. If the two results do
    * not match, ignore the device completely.
    */

    chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);

    /* Read entire ID string */
    for (i = 0; i < 8; i++)
    id_data[i] = chip->read_byte(mtd);

    if (id_data[0] != *maf_id || id_data[1] != *dev_id) {
    pr_info("second ID read did not match %02x,%02x against %02x,%02x\n",
    *maf_id, *dev_id, id_data[0], id_data[1]);
    return ERR_PTR(-ENODEV);
    }

    Can you recheck your schematics for possible hardware issues with interfacing to the NAND chip?

    Best Regards,
    Yordan
  • Thank you very much for your reply.

    1、On the hardware, I checked and found that the Nand Flash data pin was shared with the ADC data pin. I didn't know if it would cause a startup error.

    2、I 've had 100 power-on tests these days, five of which failed, and the error message is as follows:

    (1)NAND read from offset 120000 failed -74

    ** Read error

    ## Booting kernel from Legacy Image at c0700000 ...

       Image Name:   Linux-3.3.0+

       Image Type:   ARM Linux Kernel Image (uncompressed)

       Data Size:    2280272 Bytes = 2.2 MiB

       Load Address: c0008000

       Entry Point:  c0008000

       Verifying Checksum ... Bad Data CRC

    ERROR: can't get kernel image!

    (2)

    [    1.589147] nand_get_flash_type: second ID read did not match dc,90 against 54,01

    [    1.597132] No NAND device found

    [    1.605038] UBI error: ubi_init: UBI error: cannot initialize UBI, error -19

    [    1.615892] CAN device driver interface

    [    1.619975] smsc911x: Driver version 2008-10-21

    [    1.625091] _regulator_get: smsc911x supply vdd33a not found, using dummy regulator

    [    1.633254] _regulator_get: smsc911x supply vddvario not found, using dummy regulator

    [    1.740929] smsc911x: Device not READY in 100ms aborting

    [    1.792579] davinci_mdio davinci_mdio.0: davinci mdio revision 1.5

    [    1.798857] davinci_mdio davinci_mdio.0: detected phy mask fffffffe

    [    1.806932] davinci_mdio.0: probed

    [    1.810439] davinci_mdio davinci_mdio.0: phy[0]: device davinci_mdio-0:00, driver SMSC LAN8710/LAN8720

    [    1.820700] PPP generic driver version 2.4.2

    [    1.826765] PPP BSD Compression module registered

    [    1.831535] PPP Deflate Compression module registered

    [    1.851103] mousedev: PS/2 mouse device common for all mice

    [    1.859143] omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0

    [    1.866004] omap_rtc: RTC power up reset detected

    [    1.871743] watchdog watchdog: heartbeat 60 sec

    [    1.878376] cpuidle: using governor ladder

    [    1.883153] cpuidle: using governor menu

    [    1.890170] davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode

    [    1.921670] _regulator_get: ad7606-8.0 supply vcc not found, using dummy regulator

    [    1.935419] timer clk rate(156000000)

    [    1.940042] iio_davinci_tmr_trigger iio_davinci_tmr_trigger.0: iio trigger davinci TMR2, IRQ-68

    [    1.950131] TCP cubic registered

    [    1.953908] NET: Registered protocol family 17

    [    1.958492] can: controller area network core (rev 20090105 abi 8)

    [    1.965091] NET: Registered protocol family 29

    [    1.969616] can: raw protocol (rev 20090105)

    [    1.974031] can: broadcast manager protocol (rev 20090105 t)

    [    1.979780] can: netlink gateway (rev 20101209)

    [    1.985567] lib80211: common routines for IEEE802.11 drivers

    [    1.991596] _regulator_get: deviceless supply cvdd not found, using dummy regulator

    [    2.006775] console [netcon0] enabled

    [    2.010485] netconsole: network logging started

    [    2.019650] omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)

    [    2.029387] VFS: Cannot open root device "ubi0_0" or unknown-block(0,0)

    [    2.036234] Please append a correct "root=" boot option; here are the available partitions:

    [    2.044795] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

    (3)

    NAND device: Manufacturer ID: 0x01, Chip ID: 0xdc (AMD S34ML04G1)

    [    1.602432] Bad block table not found for chip 0

    [    1.610020] Bad block table not found for chip 0

    [    1.614783] Scanning device for bad blocks

    [    1.620898] Bad eraseblock 20 at 0x000000280000

    [    1.626311] Bad eraseblock 28 at 0x000000380000

    [    1.634469] Bad eraseblock 65 at 0x000000820000

    [    1.640426] Bad eraseblock 80 at 0x000000a00000

    [    1.646167] Bad eraseblock 92 at 0x000000b80000

    [    1.650970] Bad eraseblock 95 at 0x000000be0000

    [    1.656419] Bad eraseblock 104 at 0x000000d00000

    [    1.662404] Bad eraseblock 116 at 0x000000e80000

    [    1.668161] Bad eraseblock 128 at 0x000001000000

    [    1.675688] Bad eraseblock 157 at 0x0000013a0000

    [    1.680681] Bad eraseblock 161 at 0x000001420000

    [    1.687081] Bad eraseblock 179 at 0x000001660000

    [    1.692533] Bad eraseblock 187 at 0x000001760000

    [    1.698858] Bad eraseblock 205 at 0x0000019a0000

    [    1.703664] Bad eraseblock 206 at 0x0000019c0000

    [    1.708480] Bad eraseblock 207 at 0x0000019e0000

    [    1.713364] Bad eraseblock 208 at 0x000001a00000

    [    1.718109] Bad eraseblock 209 at 0x000001a20000

    [    1.983385] Bad block table written to 0x00001ffe0000, version 0x01

    [    1.991535] Bad block table written to 0x00001ffc0000, version 0x01

    ......

    ......

    [    5.595586] Kernel panic - not syncing: No init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.

     

     

  • Hi,

    On the hardware, I checked and found that the Nand Flash data pin was shared with the ADC data pin. I didn't know if it would cause a startup error.

    It shouldn't as long as you not mux those pins as ADC, but as EMIF16 in u-boot/kernel. See the LCDK pinmux in Processor SDK Linux.

    Best Regards,
    Yordan