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.

About DM365 NAND Flash

Genius 3400 points

Hi all:

          Our project according DM365 EVM(E board with silicon 1.2) schematics to design our board. Because the nand of EVM MT29F4G08AAA  is stop production,we want to use MT29F16G08ABABA(16Gbit 8bit ) to replace it.

          Referring the issue http://e2e.ti.com/support/embedded/f/354/p/54251/197050.aspx#197050, we can boot from SD card and download kernel and filesystem, and the kernel also can detect the nand and show the nand partition table, but we can not boot from nand flash, and UBL have  display  nothing.

Features of MT29F16G08ABABA
• Open NAND Flash Interface (ONFI) 2.1-compliant1
• Single-level cell (SLC) technology
• Organization
– Page size x8: 4320 bytes (4096 + 224 bytes)
– Block size: 128 pages (512K +28K bytes)
– Plane size: 2 planes x 2048 blocks per plane
– Device size: 16Gb: 4096 blocks;
32Gb: 8192 blocks;
64Gb: 16,384 blocks;
128Gb: 32,768 blocks

         And the issue http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/42223/168910.aspx#168910, it said that DM365 ROM bootloader (RBL) doesn't support ONFI detection. And whether it's relate to cannot boot from MT29F16G08ABABA.

        Angbody can give me some advice?

   Thanks a lot.

       

          We can not know how to modify UBL to boot  from nand,  can anybody to help me?

  • Please see:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/48003/169881.aspx#169881

    A customer confirmed that MT29F16G08ABABA worked. However its recommended to try out the NAND to make sure it works.

    Also see the following links:

    http://processors.wiki.ti.com/index.php/RBL_UBL_and_host_program

    http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility

    http://processors.wiki.ti.com/index.php/UG:_DaVinci_PSP_Installation_on_DM365_EVM#Flashing_DM365_EVM_.28PG_1.2_Silicon_or_newer.29_using_Serial_flash_utilities

    Thanks,
    Gaurav

  • Yes, I have read the issue. It use nand of MT29F8G08ABABA, not same with our  MT29F16G08ABABA.

    Because the nand of EVM MT29F16G08FAA  is stop production, Ti, as a global big company, it have responsibility to support replace scheme, and help consumer to resolve the problem.

    Do you agree?

    I'm very urgent. Wish your reply!!

     

  • Gaurav said:

    Please see:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/48003/169881.aspx#169881

    A customer confirmed that MT29F16G08ABABA worked. However its recommended to try out the NAND to make sure it works.

    Looks to me like he comfirmed it *didn't* work.  The UBL fails to recognize the chip.  Support must be added and recompiled.  I'm working on that now as I have the same chip in house.

    John

  • John,

    As per  (http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/48003/169881.aspx#169881), MT29F8G08ABABA works fine for RBL and UBL.

    Gomo,

    We would like to help you as much as possible.

    NAND datasheets are given by the NAND manufacturer under NDA. Is it possible for you to explore the datasheet of the  NAND part in question (MT29F16G08ABABA) and use the same reasoning as for MT29F8G08ABABA to make sure MT29F16G08ABABA is supported.

    In summary, the 4th ID byte (in the datasheet) should correspond to the definition supported by the RBL.

    If you can provide the 4th byte info for the device (from the datasheet), I can help you determine the compatibility.

    Thanks,
    Gaurav

  • Sorry, I meant U-Boot (not UBL) needs to be modified and recompiled.  There is a line that must be added to nand_ids.c.

     

    John

  • John,

    Can you please post that information once you get it working. It will help the community.

    Thnaks for your help.

    Regards,
    Gaurav

  • I'll be happy to.  In the meantime this is the quickest way to get the info...

    The addition to nand_ids.c for the MT29F8G08ABABA

    {"NAND 1GiB 3,3V 8-bit",   0x38, 0, 1024, 0, LP_OPTIONS},

    See this link...

    http://e2e.ti.com/support/embedded/f/354/t/52297.aspx

    Unfortunately my quickest path to getting this done on my board is a dead end.  I have a revision 1.1 chip, which has problems with UART boot.  So I can't use the serial flash burner utilities.

  • Hi

             We have download datesheet of MT29F16G08ABABA and MT29F8G08ABABA.

    Features of MT29F16G08ABABA
    • Open NAND Flash Interface (ONFI) 2.1-compliant1
    • Single-level cell (SLC) technology
    • Organization
    – Page size x8: 4320 bytes (4096 + 224 bytes)
    – Block size: 128 pages (512K +28K bytes)
    – Plane size: 2 planes x 2048 blocks per plane
    – Device size: 16Gb: 4096 blocks;
    32Gb: 8192 blocks;
    64Gb: 16,384 blocks;
    128Gb: 32,768 blocks 

    and READ ID Parameter Tables
    Table 6: Read ID Parameters for Address 00h
    Device                       Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
    MT29F16G08ABABA 2Ch    48h    00h     26h      89h     00h    00h     00

    Features of MT29F8G08ABABA
    • Open NAND Flash Interface (ONFI) 2.1-compliant
    • Single-level cell (SLC) technology
    • Organization
    – Page size x8: 4320 bytes (4096 + 224 bytes)
    – Block size: 128 pages (512K +28 K bytes)
    – Plane size: 2 planes x 1024 blocks per plane
    – Device size: 8Gb: 2048 blocks

    and READ ID Parameter Tables
    Table 5: Read ID Parameters for Address 00h
    Device                    Byte 0  Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
    MT29F8G08ABABA 2Ch   38h      00h      26h    85h      00h      00h   00h

    And the 4th ID byte are all 0x26

    If  your need, I can send the datesheet to you, we don't subscribe any NDA.

    Thanks a lot.

  • Hi all:

         Using nand flash of MT29F16G08ABABA, boot from SD Card, and It's can download kernel and filesystem to nand flash, then read kernel from nand and can boot system. But it can not boot from Nand flash directly. The following is the information that I get it working. wish to help others.

    Using nand of MT29F16G08ABABA:

    1.modify u-boot(V2009-03)

       a. /drivers/mtd/nand/nand_ids.c, Line 109, add {"NAND 2GiB 3,3V 8-bit",      0x48, 0, 2048, 0, LP_OPTIONS},

      b./include/configs/davinci_dm365_evm.h

            remove #define CONFIG_SYS_NAND_PAGE_2K
            add #define CONFIG_SYS_NAND_PAGE_4K
            add #define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
            change #define CONFIG_SYS_MAX_NAND_DEVICE            1    //2

    2.modify kernel(ti-davince-2.6.18)

    build uboot and kernel, make SD boot card. It's can work.

    But it still cannot boot from NAND flash MT29F16G08ABABA  directly. 

    Thanks a lot!

  • Gomo,

    Glad to know that you are able to get the NAND working through SD card (could download kernel and filesystem etc).

    Coming back to the booting from this NAND:

    The information that you have provided from the datasheet indicate that the NAND geometry (from the ROM bootloader (RBL) perspective) is same for MT29F16G08ABABA and MT29F8G08ABABA. If RBL works for  MT29F8G08ABABA, it should work for MT29F16G08ABABA also. Here RBL uses 4th byte ID to get the NAND geometry.

    The problem could be in the flashing. Can you please make sure that multiple copies of UBL are flashed in the NAND (rather than 1 copy)?

    Also, is there any error while flashing the NAND (with UBL)? Are you using CCS/serial flasher? Can you please provide the version of the flasher used?

    Can you please go through the following wiki articles to make sure that the flashing is heppening as intended:

    http://processors.wiki.ti.com/index.php/UG:_DaVinci_PSP_Installation_on_DM365_EVM#Flashing_DM365_EVM_.28PG_1.2_Silicon_or_newer.2

    http://processors.wiki.ti.com/index.php/RBL_UBL_and_host_program

    http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility

     

    Thanks,

    Gaurav

  • Hi Gaurav:

        Thanks for your reply at first!

        1) I have no chip of nand MT29F8G08ABABA in my hand now,  I'm also not sure that  MT29F8G08ABABA can be booted  successully.

        2) I don't unstand what your mean about copy of UBL. Using CCS 3.3, I can download ubl,uboot and kernel without any error. But I it cannot boot from nand.

        3)Version of flasher?  Your means UBL_DM36x_NAND.bin? It have no version and include in dvsdk_2_10_01_18/PSP_02_10_00_14.

       and I don't unstand 4th bytes mean?

    • Bits 5 and 4 determine the block size

    – Bits 5,4 = 00: 64KB

    – Bits 5,4 = 01: 128KB

    – Bits 5,4 = 10: 256KB

    – Bits 5,4 = 11: 512 KB

    • Bits 1 and 0 determine the page size

    – Bits 1,0 = 00: 1KB

    – Bits 1,0 = 01: 2KB

    – Bits 1,0 = 10: 4KB

    – Bits 1,0 = 11: 8KB

    0x26h means 256KB, 4KB.

    But the nand I using is

      -  Page size x8: 4320 bytes (4096 + 224 bytes)


    – Block size: 128 pages (512K +28K bytes)


    Is it compatible?

     

     

    Thans a lot!

  • Hi Gaurav:

                Today I asked Micron's support ,  He told me that the 4th bytes means: 4KB/page, 28B spare area/512B and 128pages/block. And it agrees with the introduce in datasheet.

               • Organization
    – Page size x8: 4320 bytes (4096 + 224 bytes)
    – Block size: 128 pages (512K +28 K bytes)
    – Plane size: 2 planes x 1024 blocks per plane
    – Device size: 8Gb: 2048 blocks

         Thanks a lot!    

  • Gomo,

    Thanks for checking with Micron.

    Please understand that we cannot verify all the NANDs in the market. However we work with the customers to figure out if the NAND is compatible.

    For doing this please understand the boot process in detail, (Section 11.2.1  http://focus.ti.com/lit/ug/sprufg5a/sprufg5a.pdf) and feel free to ask questions if needed.

    Please go through the following link to see how 4th byte plays a role:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/48003/169881.aspx#169881

    From the description that you have provided earlier, MT29F16G08ABABA might be supported provided mutiple copies of UBL/UBL descriptor are flashed. Please see Section 11.2.1 of ARM subsystem user guide(http://focus.ti.com/lit/ug/sprufg5a/sprufg5a.pdf) to undertand multiple copies of UBL concept:

    "If a valid UBL is not found here, as determined by reading a valid UBL magic number, the next block is searched. Searching continues for up to 24 blocks. This provision for additional searching is made in case the first few consecutive blocks have been marked as bad (i.e., they have errors). Searching 24 blocks is sufficient to handle the errors found in virtually all NAND devices."  

    If the NANDwriter (flasher) is not flashing mutiple copies of the UBL/UBL descriptor, then it has to be modified to do so. Can you please provide the link from where the NANDWriter was downloaded? The CCS print log can also indicate if multiple copies are flashed. Can you also provide the same?

    Thanks,
    Gaurav
     

  • Hi all:

       Using nand flash of MT29F16G08ABABA, we can boot to ubl , but it still work on ubl, the following it the log on UART:

       Jumping to entDM36x initialization passed!
    TI UBL Version: 1.50
    Booting Catalog Boot Loader
    BootMode = NAND
    Starting NAND Copy...
    NAND Open start.
    Valid magicnum, 0xA1ACED00, found in block 0x0000001A.
    Valid magicnum, 0xA1ACED00, found in block 0x0000001C.
    DONE
    Jumping to entry point at 0x00000100.
    DM36x initialization passed!
    TI UBL Version: 1.50
    Booting Catalog Boot Loader
    BootMode = NAND
    Starting NAND Copy...
    NAND Open start.
    Valid magicnum, 0xA1ACED00, found in block 0x0000001A.
    Valid magicnum, 0xA1ACED00, found in block 0x0000001C.
    DONE
    Jumping to entry point at 0x00000100.
    DM36x initialization passed!
    TI UBL Version: 1.50
    Booting Catalog Boot Loader
    BootMode = NAND
    Starting NAND Copy...
    NAND Open start.
    Valid magicnum, 0xA1ACED00, found in block 0x0000001A.
    Valid magicnum, 0xA1ACED00, found in block 0x0000001C.
    DONE

     

    Anybody can help me?

    why always jump to  entry point at 0x00000100?

     

    Best Wishes!

    gomo 

  • Gomo,

    Its good to see that ROM bootloader (RBL) works with MT29F16G08ABABA NAND.

    Entry point 0x100 is fixed by:
    1. UBL entry point. You can change that while building UBL
    2. The entry point of UBL as specified in UBL descriptor. This should be changed in the NAND flash utility.

    The sequence of the boot is RBL --> UBL --> uboot --> Linux.
    UBL, uboot and Linux should be flashed appropriately in the NAND flash, for the boot to work. Please see the following link:

    http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility

    Thanks,
    Gaurav

  • Hi Gaurav:

          Thank your reply at frist.

          Now I down ubl,uboot and kernel from CCS or UART, we can down success and have no errors.  And boot from nand flash of  MT29F16G08ABABA, I meet a strage problem.

         1. It boot to copy kernel and filesystem, display ECC error and cannot fond kernel image. like following:


    DRAM: CONFIG_NR_DRAM_BANKS = 1, size=134217728DRAM: 128 MB
    NAND: NAND device: Manufacturer ID: 0x2c, Chip ID: 0x48 (Micron NAND 2GiB 3,3V 8-bit)
    Bad block table not found for chip 0
    Bad block table found at page 524160, version 0x01
    Bad block table written to 0x7ffc0000, version 0x01
    NAND device: Manufacturer ID: 0x2c, Chip ID: 0x48 (Micron NAND 2GiB 3,3V 8-bit)
    Bad block table found at page 524224, version 0x01
    Bad block table not found for chip 0
    Bad block table written to 0x7ff80000, version 0x01
    4096 MiB
    env_relocate[234] offset = 0x0
    env_relocate[252] malloced ENV at 80f03328
    *** Warning - bad CRC or NAND, using default environment

    In: serial
    Out: serial
    Err: serial
    ARM Clock :- 290MHz
    DDR Clock :- 240MHz
    Hit any key to stop autoboot: 0

    Loading from NAND 2GiB 3,3V 8-bit, offset 0x1000000
    ** Unknown image type
    Wrong Image Format for bootm command
    ERROR: can't get kernel image!
     
    NAND read: device 0 offset 0x400000, size 0xbf0000
    12517376 bytes read: OK

    Loading from NAND 2GiB 3,3V 8-bit, offset 0x200000
       Image Name: Linux-2.6.18_pro500-davinci_IPNC
       Image Type: ARM Linux Kernel Image (uncompressed)
       Data Size: 1858508 Bytes = 1.8 MB
       Load Address: 80008000
       Entry Point: 80008000
    ## Booting kernel from Legacy Image at 80700000 ...
       Image Name: Linux-2.6.18_pro500-davinci_IPNC
       Image Type: ARM Linux Kernel Image (uncompressed)
       Data Size: 1858508 Bytes = 1.8 MB
       Load Address: 80008000
       Entry Point: 80008000
       Verifying Checksum ... Bad Data CRC
     ERROR: can't get kernel image!  

    2.dowmload kernel from TFTP server, and then boot form memory directly. it can boot successfully. 

      DM365 EVM > tftpboot 0x80700000 uImage_ipnc_dm365
    TFTP from server 192.168.42.25; our IP address is 192.168.42.199
    Filename 'uImage_ipnc_dm365'.
    Load address: 0x80700000
    Loading: #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    #######################################
    done
    Bytes transferred = 1858572 (1c5c0c hex)
    DM365 EVM > bootm 0x80700000
    ## Booting kernel from Legacy Image at 80700000 ...
    Image Name: Linux-2.6.18_pro500-davinci_IPNC
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 1858508 Bytes = 1.8 MB
    Load Address: 80008000
    Entry Point: 80008000
    Verifying Checksum ... OK
    Loading Kernel Image ... OK
    OK

    Starting kernel ...

    Uncompressing Linux............

           have no idea why read kernel from nand, it verified  error.

          Have any advices?

    Thanks

    gomo

     

  • Hi all:

         Today I found if I don't save env, I can read kernel ,verify successfully and boot. and when I save env and boot, the error is showing following:

     NAND read: device 0 offset 0x400000, size 0xbf0000
    12517376 bytes read: OK

    Loading from NAND 2GiB 3,3V 8-bit, offset 0x200000
    Image Name: Linux-2.6.18_pro500-davinci_IPNC
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 1858508 Bytes = 1.8 MB
    Load Address: 80008000
    Entry Point: 80008000
    ## Booting kernel from Legacy Image at 80700000 ...
    Image Name: Linux-2.6.18_pro500-davinci_IPNC
    Image Type: ARM Linux Kernel Image (uncompressed)
    Data Size: 1858508 Bytes = 1.8 MB
    Load Address: 80008000
    Entry Point: 80008000
    Verifying Checksum ... Bad Data CRC
    ERROR: can't get kernel image!

       I check the uboot (it's from DVSDK-3.10, uboot-2009-03) source and found  that:

    #define CONFIG_ENV_SIZE        SZ_256K

    #define CONFIG_ENV_OFFSET            0x3C0000    /* environment starts here */

    If 0x3C0000 is the  absolute address of nand, the space of env params is 0x3C0000~0x400000; and the kernel space in Nand is 0x20000~0x400000, it conflict distinctly.

     Any body can tell me the detailed address of nand assigned and where is assigned?

     

    Thanks

    Gomo

     

     

  • Gomo,

    As you are already able to use RBL/UBL successfully, and having issues with linux kernel, please post this question on Linux/uboot forum. This forum is for hardware related issues.

    Thanks,
    Gaurav

  • Hi:

       I have reslove the conflict of nand address. It can work normally。

      Thank every  one for help me.

     

       BTW, Using uart sfh_xxx.exe or CCS tool, I can  download ubl, uboot, kernel and file system, but when I make sdboot card and flash  ubl, uboot, kernel and filesystem to nand    through sdboot, it can flash successfully, but can not boot from nand directly?

       Anybody can help to analyze the reason?

      Thanks again.

     Gomo

     

  • I have been unable to get the RBL to load the UBL on the MT29F8G08ABABA NAND.  I have used the SD flash utilities on the DM365 EVM with no luck, although I can boot the UBL and U-Boot from the flash utility.  And I have used the serial flash utilities on the DM368 (our board).  Neither will display any info on the serial port trying to boot using NAND.  The EVM will continue to try and boot the SD card after the NAND is flashed and the switch is in the NAND position.  This suggests to me that the UBL isn't being found.

     

    John

  • Hi,

    We are using 29F16G08ABACA nand Flash. This nand supports 8-bit ecc. We can not boot from dm365 using the mmc-boot utility.  We are not able to read the parameter table data that contains manufacure id, device id.

    Have you make changes related to either frequency or ecc?

    Regards,

    Amit

  • Hi Gomo,

    We are also planning to use MT29F16G08ABABA with DM368 which you have already managed to make work.

    Please share your experience with us as to how to flash the NAND? What to change in UBL? What to change in U-Boot? What to change in Linux Kernel?

    It would be a great service to the community if you could share your experience.

    Thanks in advance,

    Vipul

  • hi Vipul,

         This project had finished for two years.I cannot remember two much details.

      In uboot:

        1) Add nand flash ids: {"NAND 2GiB 3,3V 8-bit", 0x48, 0, 2048, 0, LP_OPTIONS},

        2)modify env size and offset(davinci_dm365_env.h) according your using env.

            #define CONFIG_ENV_SIZE               SZ_1M        //SZ_256K

            #define CONFIG_ENV_OFFSET         0x02000000 //   0x3C0000    /* environment starts here */

       3)modify nand_get_flash_type() in /drivers/mtd/nand/nand_base.c

     #if 1
      /* Calc pagesize */
      mtd->writesize = 1024 << (extid & 0x3);
      extid >>= 2;
      /* Calc oobsize */
      mtd->oobsize = (8 << (extid & 0x01)) * (mtd->writesize >> 9);
      extid >>= 2;
     #else //modify writesize and oobsize
      /* Calc pagesize */
      mtd->writesize = 1024 <<1;
      extid >>= 2;
      /* Calc oobsize */
      mtd->oobsize = 64;
      extid >>= 2;
     #endif

    4) modify ECC check way.

      nand->ecc.mode = NAND_ECC_NONE; //modify  NAND_ECC_SOFT;

    Kernel:

    1)Ecc check way.

       .ecc_mode = NAND_ECC_HW_SYNDROME, //NAND_ECC_NONE,NAND_ECC_SOFT,NAND_ECC_HW,

    And you can try, but I'm not sure it can work well absolutely.

  • hi gomo,

    thanks a lot for sharing your experience.