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.

  • TI Thinks Resolved

DM365 NAND Support

Intellectual 525 points

Replies: 20

Views: 26709

Hi all,

I am looking at replacing the DM365 DVEVM's obsolete Micron NAND MT29F16G08FAA with an 8Gbit 8 bit MT29F8G08ABABA . I have queried Sprufg5A Rev Aug 2009 Sect 11.2.1.2 which says the RBL supports the following (first column) of Device ID's:

Device ID block extra data) (For address) No. of 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

Looking next at the MT29F8G08ABABA's parameter tables, the JEDEC Manufacturer ID is 0x2C which is not listed in the above (Is this Jedec Manu ID the correct "ID" I should be referencing?). I have browsed a number of related NAND links on this forum but unfortunately none have been too helpful in telling either a definite yay or nay regarding support.

I do know that I have Rev 1.2 Silicon (Rev E DVEVM) and would ultimately like to know whether the RBL will be able to boot off a MT29F8G08ABABA NAND & then secondly (& secondary as it should theoretically be posted on the Linux forum), whether this NAND is supported by the Arago DVEVM v3.1 and its packaged kernel (or at least where I can look to see whether it is supported).

It was mentioned in a previouspost that the 4th ID byte information on the NAND might have some relevance? According to my NAND datasheet,the 90h "Read ID" command returns: 0x2C; 0x38; 0x00; 0x26; 0x85 @ address 20h. Further to this, the 90h "Read ID" command returns 0x4F;0x4E;0x46;0x49 @ address 20h. Am I able to use this data somehow to determine support?

I would appreciate any input on the above as to where to turn next.

Many thanks,
NicKA

  • NicKA,

     

    Some information is missing from Sprufg5A Section 11.2.1.1 (http://focus.ti.com/lit/ug/sprufg5a/sprufg5a.pdf). After the 4th bullet (Read the device Id of NAND and get the parameters for NAND from a table in ROM), the following information needs to be added.

     

    If the NAND device is not found in this table, then the RBL will read the fourth byte of the NAND ID (stored on the actual device) and attempt to decode this to obtain the necessary parameters.

    For the purpose of determining NAND block size and page size the information from the fourth byte is considered as follows:

    • 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

     

    We are in the process of updating the document.

     

    For any NAND device on DM365, the following steps are followed by RBL to determine the NAND geometry:

    1. Look up for device ID (and manufacturing ID) in the look up table. This information is read from the NAND device using 0x90 “Read ID” command at address 0x0. As per your post, for MT29F8G08ABABA is 0x2C (manufacture ID); 0x38 (Device ID); 0x00; 0x26 (4th byte ID, 1 based).

    As 0x38 (or 0x2C38) is not in the first column, the device is not supported by table look up.

    2. The next option is 4th byte ID. Based on the explanation above, the value of 0x26 represents the following:

    Block size:  128 KB

    Page size: 2KB

    If this matches with the actual NAND geometry, then the NAND is supported.

     

    If the actual page size is a multiple of the page size determined, there is a possibility that the NAND will be supported by RBL (it will read the UBL successfully). However the only way to check that is to try the NAND.

     

    Please post the question for Linux (Arago) support in the Linux forum. Hope this helps.

     

    Regards,

    Gaurav

    ----------------------------------------------------------------------------------------------------------
    Please click the Verify Answer button on this post if it answers your question.
    ----------------------------------------------------------------------------------------------------------

     

  • In reply to Gaurav Agarwal:

    As Gaurav pointed out, this NAND is likely supported. Just a couple of more points -

     

    a) DM365 EVM has NAND socket where you should be able to quickly try loading UBL, uboot and see if you can get to uboot prompt. Instructions to do this can be found at - 

    http://processors.wiki.ti.com/index.php/GSG:_DM365_DVEVM_Additional_Procedures#Restoring_the_NAND_Flash

     

    b) In addition, please look at the HW ECC requirements for NAND. DM365 EMIF HW can only support upto 4-bit HW ECC. If the NAND ECC requirement is more than 4-bit ECC, you would need to add support of ECC in software. 

     

    Regards,

    Prateek

     

     

    PS: Please mark this post as verified if you think it answers your question

  • In reply to Gaurav Agarwal:

    Hi Gaurav,

    Thank you for the response! I unfortunately do not quite understand.

    First Query:

    According to your table:

    • 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

     

    the value 0x26 (or 0b0010 0110) should represent:

     

    – Bits 5,4 = xx10: 256KB

    – Bits 1,0 = xx10: 4KB          (I am truncating the upper half of the lower nibble?)

     

    My second attempt: You mentioned Base 1. If 26 is base 1 and converted into base 8 =>  0b00011010 then:

     

    – Bits 5,4 = xx01: 128KB

    – Bits 1,0 = xx10: 4KB          (I am truncating the upper half of the lower nibble?)

     

    Neither of these give me the outcomes you got (128Kb, 2Kb). What am I doing wrong?

    Second Query:

    "If this matches with the actual NAND geometry, then the NAND is supported. If the actual page size is a multiple of the page size determined, there is a possibility that the NAND will be supported by RBL (it will read the UBL successfully)." Do you mind elaborating? I am a lost here.Where can I find these 'actual' values (which I assume refer to what is DM365 supported) for NAND geometry & page size?

     

    Sincerely,

    NickA

  • In reply to Prateek Bansal:

    Hi Prateek,

    Thanks for the response.

    a) Yes I have seen this socket thank you! I have actually gone ahead and ordered some samples of the MT29F8G08ABABA to give them a shot as suggested. I am not a fan of guesswork though (it tends to bite me in the ass) and would like to understand what is going on here.  Thanks for the link!

    b) This Micron part uses 4bit ECC so we should be good! Thanks again.

    Sincerely,
    NickA

  • In reply to NickAllen:

    NickA,

    You are right. The correct values are:

     "

    the value 0x26 (or 0b0010 0110, 0 based here) should represent:

     

    – Bits 5,4 = xx10: 256KB

    – Bits 1,0 = xx10: 4KB          (I am truncating the upper half of the lower nibble?)

    "

    The correct/actual value can be found in the NAND datasheet. If the datasheet says that the Block size is 256KB and Page size is 4KB then it matches what RBL interprets and the NAND is supported.
    Second Query: Suppose the NAND datasheet says that the Block size is 512KB. In this case the NAND might be supported (as the RBL reads multiple blocks). RBL will find UBL descriptor in the 2nd block as per RBL which is actually block 1 in NAND. The same applies for Page size also. In these cases, UBL might have to be modified to identify the correct NAND geometry.

    But to make sure that the NAND is indeed supported in these cases, please make sure that a complete boot (UBL, u-boot, Kernel) is successful. 

    Thanks,

    Gaurav

    ----------------------------------------------------------------------------------------------------------
    Please click the Verify Answer button on this post if it answers your question.
    ----------------------------------------------------------------------------------------------------------

     

  • In reply to Gaurav Agarwal:

    Hi Gaurav,

    Ok its making sense! So based on the 4th byte, the DM365 RBL will configure itself for 4K pages & 256K Blocks (ie 64 pages / block) but from the datasheet my actual NAND configuration is 4K pages & 512K blocks (ie 128pages / block which is exactly as per your subsequent example). Its not identical but it is a multiple so there is that possibility of the DM365 successuflly reading it. Awesome! I have one small concern  - this NAND datasheet stipulates page size of 4096 + 224bytes (4320bytes). Is this still in fact a 4K page size? Are the extra 224bytes allocated to highlghting bad cells?

    I am also not quite understanding  "RBL will find UBL descriptor in the 2nd block as per RBL which is actually block 1 in NAND"?

    Sincerely,
    NickA

  • In reply to NickAllen:

    NickA,

    224 bytes is for ECC. The data page size is 4096 bytes.

    Using 256 K block size, RBL will find UBL at location what it thinks is block 2 (after 512 K bytes, assuming block 0 is the first block). But this in NAND would be block 1.

    Hope this helps.

    Thanks,
    Gaurav

    ----------------------------------------------------------------------------------------------------------
    Please click the Verify Answer button on this post if it answers your question.
    ----------------------------------------------------------------------------------------------------------

     

  • In reply to Gaurav Agarwal:

    Hi Gaurav,

    Ok, those both make sense! Thanks a mill for your input. I have no doubt I will be harassing this forum again very soon. Apologies in advance :)

    Sincerely,
    NickA

  • In reply to NickAllen:

    NickA,

    I am glad we could help. Please feel free to contact us through forums if you have any questions.

    Thanks,
    Gaurav

    ----------------------------------------------------------------------------------------------------------
    Please click the Verify Answer button on this post if it answers your question.
    ----------------------------------------------------------------------------------------------------------

     

  • In reply to Gaurav Agarwal:

    Update: We have received today the NAND samples (MT29F8G08ABABA) which we have used to replace the existing NAND in the DM365 EVM. So far everything has gone ok in that we have been able to successfully erase and flash the NAND with UBL & uBoot using the UART bootmode ie for the benefit of people reading this in future:


    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


    We were ecstatic to see the board come to life (once DIP switches were returned to NAND boot mode) and pass control from RBL to UBL to uBoot. We now however have have an issue in which uBoot seems to fail to identify the NAND device and returns "No NAND device found" with our MT29F8G08ABABA instead of the previous "Manufacturer ID: 0x2c Chip ID: 0xd3 (Micron NAND 1GiB 3.3V 8-bit)" which was output when using the the original DVEVM packaged (but obsolete) MT29F16G08FAA.

    We are using uBoot 2009.03 as available from http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_3_10/latest/index_FDS.html . Any ideas? There is a newer 2009.08 uBoot available from the u-boot-ti GIT. Is this our best bet? Is it just that this NAND is not supported yet in this uBoot release?


    I also received some advice re editting a " nand_ids.c" which I am rather vague about & will look into but I wanted to put my feelers out in the meantime regardless.


    Many thanks!

    NickA

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.