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.

DM365 Supported NAND Flash

Hi TI e2e community,

 

I am using the DM365EVM which uses the following device (MT29F16G08FAA) for flash which according to literature (SPRUFG5), table 113 is a D3h Device ID.  The table says it only accepts these values:

 

         Number of   Bytes per         Block shift       No. of

Device   pages per   page (including   value             address

ID       block       extra data)       (For address)     cycles

0x43     32          512+16            13                3

0x45     32          512+16            13                3

0x53     32          512+16            13                3

0x55     32          512+16            13                3

0x73     32          512+16            13                3

0x33     32          512+16            13                3

0x75     32          512+16            13                3

0x35     32          512+16            13                3

0x76     32          512+16            13                4

0x36     32          512+16            13                4

0x79     32          512+16            13                4

0x71     32          512+16            13                4

0x46     32          512+16            13                4

0x56     32          512+16            13                4

0x74     32          512+16            13                4

0xF1     64          2048+64           22                4

0xA1     64          2048+64           22                4

0x78     32          512+16            13                4

0x98DA   64          512+16            14                4

0x98DC   64          512+16            14                4

 

The Micron Data sheet below has the ID as D3h. Also this part is obsolete and is not longer on the website.

 

Table 8: Device ID and Configuration Codes

Options I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0 Value1 Notes

Byte 0 Manufacturer ID

Micron 0 0 1 0 1 1 0 0 2Ch

Byte 1 Device ID

MT29F4G08AAA   4Gb, x8, 3V 1 1 0 1 1 1 0 0 DCh

MT29F8G08BAA   8Gb, x8, 3V 1 1 0 1 0 0 1 1 D3h

MT29F8G08DAA   8Gb, x8, 3V 1 1 0 1 1 1 0 0 DCh 2

MT29F16G08FAA 16Gb, x8, 3V 1 1 0 1 0 0 1 1 D3h 3

 

So it looks like the part being used is not only obsolete but it is not in the table.  Then the newer parts are not in the table either.  So is there a newer table or am I reading this wrong.  What I am trying to figure out is what currently available flash chip is there that I can use.

Thanks for all your help.

  • The table in SPRUFG5 is not complete, and the Micron device you mention is supported.  In fact, most devices listed in device_nand.c are supported.  (The devices under 16MB were not supported in some earlier revisions of the silicon.  Namely, E3, E5, E6, 39 and 6B.)  I will work to get this updated in the user's guide.

    For reference, here is the relevant section of device_nand.c:

    //FOR DM365,referred DM365 ROM code
    const NAND_CHIP_InfoObj DEVICE_NAND_CHIP_infoTable[] =
    {
    { 0xE3,   512,        16,             512+16}, // 4 MB
      { 0xE5,   512,        16,             512+16}, // 4 MB
      { 0xE6,   1024,       16,             512+16}, // 8 MB
      { 0x39,   1024,       16,             512+16}, // 8 MB
      { 0x6B,   1024,       16,             512+16}, // 8 MB
      { 0x73,   1024,       32,             512+16}, // 16 MB
      { 0x33,   1024,       32,             512+16}, // 16 MB
      { 0x75,   2048,       32,             512+16}, // 32 MB
      { 0x35,   2048,       32,             512+16}, // 32 MB
      { 0x76,   4096,       32,             512+16}, // 64 MB
      { 0x36,   4096,       32,             512+16}, // 64 MB
      { 0x79,   8192,       32,             512+16}, // 128 MB
      { 0x71,   16384,      32,             512+16}, // 256 MB
      { 0x46,   4096,       32,             512+16},  // 64 MB
      { 0x56,   4096,       32,             512+16},  // 64 MB
      { 0x74,   8192,       32,             512+16},  // 128 MB
      { 0xF1,   1024,       64,             2048+64}, // 128 MB
      { 0xA1,   1024,       64,             2048+64}, // 128 MB
      { 0xAA,   2048,       64,             2048+64}, // 256 MB (4th ID byte will be checked)
      { 0xDA,   2048,       64,             2048+64}, // 256 MB (4th ID byte will be checked)
      { 0xAC,   4096,       64,             2048+64}, // 512 MB (4th ID byte will be checked)
      { 0xDC,   4096,       64,             2048+64}, // 512 MB (4th ID byte will be checked)
      { 0xB1,   1024,       64,             2048+64}, // 128 MB
      { 0xC1,   1024,       64,             2048+64}, // 128 MB
      { 0xD3,   4096,       64,             2048+64}, // 512 MB (4th ID byte will be checked)
    //  { 0xD3,   8192,       128,             2048+64},
      { 0x00,   0,          0,              0}       // Dummy null entry to indicate end of table

    };

  • While waiting for your response I purchased a MT29F8G08DAA to test in the eval board.  Since it is a DCh part it should work according to your table above.

    I have an SD card loaded with the flash recovery program.  I have used it several times to recover the flash on my DM365EVM.  So I swapped the eval board flash part to the MT29F8G08DAA.  Then I tried using the SD card to program the MT29F8G08DAA and it appeared to work.  It would erase the flash, report the bad blocks and program it.  But when I tried to boot from the flash chip it would not boot.  So I repeated the process with the original MT29F16G08FAA that came with the DM365EVM  and it worked.  

    It looks like the software supports the MT29F8G08DAA but it will not boot.  Is this true or is the silicon rev of the DM365EVM too old to support the part or am I still missing something?

    We are suppose to start delivering boards to a customer late next month so I am desperate to find a flash part that will work and is available with a short lead time.

     

     

     

  • I have been doing some investigation, and it looks like silicon rev 1.2 supports DAA parts whereas silicon 1.1 rev did not.  Typically, DM365 Rev C EVMs or newer should have silicon 1.2.

    Also, I am not familiar with SD flash recovery software, but just to be clear, is this a matter of RBL not recognizing DAA part or DAA part not having the necessary UBL and U-boot software flashed onto it by this SD utility?  RBL on silicon 1.2 will support DAA, but if the SD Utility cannot properly flash UBL and U-boot, then it may be the utility that needs an update.  Unfortunately, I do not believe this SD Utility is a TI product.

  • I am running Rev D of the DM365EVM so it sounds like mine should work.

    It appears that the RomBootLoader does not recognize the DAA part.  The dump appears reasonable but I have not stepped through it to see what is actually happening or if it is 100% correct.  I will investigate it more.  Thanks for the response

     

  • I am running a rev D  DM365EVM but the chip appears to be rev 1.1 silicon not 1.2.

    I am not able to get it to boot.  The flash contents looks correct.

  • Hi Juan,

    We have just started testing our production boards based on the DM365 and have so far been unable to boot from the NAND. The device we're using is the Micron 29F16G08DAA WP which reports as a 0xD3 device, and has a page size of 4096 bytes (64 pages per block x 4096 blocks). I have checked the flash contents and everything is as I would expect (boot header looks good etc).

    You mentioned that silicon rev 1.2 supports DAA parts, can you confirm that it is case for a device with this geometry.

    I confess I am a little confused as to the different NAND device layouts, particularly 0xD3. As the original NAND on the DVEVM also reports a device ID of 0xD3 but is a 2048 byte per page device.

    Any help or suggestions would be greatly appreciated.

    regards,

    Keith Nicholson

  • Keith,

    I went through the same issue you are having with the DAA part last year, I spent several weeks trying to get it working.  My suggestion is to find another NAND part quickly.  My findings are that the DAA part will not work with RBL 1.1 or 1.2, which is the hardware bootloader in the DM365 silicon that is supposed to load UBL, the first stage low level bootloader.  TI's position on this forum has been that it should work, but I contacted my local rep who tried it on their EVM and it did not work for them either on top of the many forum post w.r.t. this parts incompatibility.  You can use the DAA NAND for a filesystem assuming you can boot from a SD card or something like that if you need the 2GB of space.  I had to go to a 512MB 29F4G08AAC NAND part and I can confirm that they are fully supported. 

    Here is a post w.r.t. this issue I posted last year.

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/dm3x/f/100/p/7689/30540.aspx#30540

    TI I would love to be proven wrong about the DAA part, so if there is someone who has successfully gotten the DM365 to boot from it I think many people could benefit from a post that describes what they did to get it working.

    Kevin

  • Kevin,

    Really appreciate the fast response. It's a pity you had to spend so much effort on it, but it's saved me quite a headache. Also, thanks for the pointer to the part you used, we do need a boot from NAND solution and actually 512MB should be plenty. The order is going through as I type!

    Keith

     

  •  

    I have two EVMs.  One with each rev of the DM365.  my newer one will boot with a MT29F16G08DAA part but the older one will not.  I had trouble setting up the Flash chip using the SD card recovery tool but the JTAG tools set it up properly.  Here is a portion of the Linux boot log

     

    nand_davinci nand_davinci.0: Using 4-bit hardware ECC

    NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3 (Micron NAND 1GiB 3,3V 8-bit)

    2 NAND chips detected

    Creating 5 MTD partitions on "nand_davinci.0":

    0x00000000-0x003c0000 : "bootloader"

    0x003c0000-0x00400000 : "params"

    0x00400000-0x00800000 : "kernel"

    0x00800000-0x20800000 : "filesystem1"

    0x20800000-0x80000000 : "filesystem2"

    nand_davinci nand_davinci.0: hardware revision: 2.3

     

     

    I am now also using a MT29F2G08AAD to boot Linux and a RamDisk from Flash.  This works on both version of the silicon.  I am getting warnings that the size is truncated and filesystem2 is disabled but the part is considerably cheaper and is big enough for my application.

     

    nand_davinci nand_davinci.0: Using 4-bit hardware ECC

    NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)

    Creating 5 MTD partitions on "nand_davinci.0":

    0x00000000-0x003c0000 : "bootloader"

    0x003c0000-0x00400000 : "params"

    0x00400000-0x00800000 : "kernel"

    0x00800000-0x20800000 : "filesystem1"

    mtd: partition "filesystem1" extends beyond the end of device "nand_davinci.0" -- size truncated to 0xf800000

    0x20800000-0x10000000 : "filesystem2"

    mtd: partition "filesystem2" is out of reach -- disabled

    nand_davinci nand_davinci.0: hardware revision: 2.3

     

     

     

     

     

  • Keith,

    You will need to rework your nand resources in the {kernel root}/arch/arm/mach-davinci/board-dm365-evm.c file.  I have a 512 MB NAND so mine looks like this...  

    static struct mtd_partition nand_partitions[] = {
            /* bootloader (UBL, U-Boot, BBT) in sectors: 0 - 14 */
            {
                    .name = "bootloader",
                    .offset = 0,
                    .size = 30 * NAND_BLOCK_SIZE,
                    .mask_flags = MTD_WRITEABLE,    /* force read-only */
            },
            /* bootloader params in the next sector 15 */
            {
                    .name = "params",
                    .offset = MTDPART_OFS_APPEND,
                    .size = 2 * NAND_BLOCK_SIZE,
                    .mask_flags = MTD_WRITEABLE,    /* force read-only */
            },
            /* kernel in sectors: 16 */
            {
                    .name = "kernel",
                    .offset = MTDPART_OFS_APPEND,
                    .size = SZ_4M,
                    .mask_flags = 0
            },
            {
                    .name = "filesystem1",
                    .offset = MTDPART_OFS_APPEND,
                    .size = MTDPART_SIZ_FULL, 
                    .mask_flags = 0
            }
            //Modified by Kevin Claycomb so there is just one  filesystem large partition on NAND --KDC
            /*

             {
                    .name = "filesystem2",
                    .offset = MTDPART_OFS_APPEND,
                    .size = MTDPART_SIZ_FULL,
                    .mask_flags = 0
            }
            */
    };

    You can see that each of the filesystems it is complaining about are above.  I just wanted one partition so I commented out filesystem2 and defined the size of filesystem1 to be MTDPART_SIZ_FULL which make the MTD driver do the math for you and use whatever is left after the bootloader partitions to create your filesystem.  Hope this helps...

    Kevin

  • Hello,

    I have a dm365 evm rev.E, MT29F16G08FAAWC:A nand flash mounted.  All works fine and I can boot from nand flash.

    Now I have to buy another nand flash, but the MT29F16G08FAAWC is not available.

    MT29F16G08DAAWP-ET:A : is it compatible ? someone have experience with dm365evm and this nand flash?

    Is there a list of tested nand flash (16Gb) for dm365evm rev E ?

    Thanks

    Claudio