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.

Delay during compact/Blankcheck/erase.

Other Parts Discussed in Thread: TMS320DM6446

Hello,

I had been using TMS570LS20USB board. These days i observe that there is an increase in delay during compact/Blankcheck/erase(drivers provided by TI) operation. Please let me know if this has any relation to the number of flash write/erase operations.

(It has been specified in  Page 77 of the TMS570LS20216 datasheet (SPNS141F) lists the number of write/erase cycles at 1000, assuming 15 year data retention requirement.)

Thanks & Best Regards,

Renjith George

  • Renjith,

    Your question has been forwarded to our Flash/Software team.

    You should hear from them shortly.

    Thanks and Regards,

    Jean-Marc

  • The time it takes to compact and erase the flash does increase with the number of times the flash is erased. During the erase, sometimes electrons moving through the oxide will create a trap (spot with extra electron) at the surface of the oxide. If enough of these traps occur, that cell becomes hard to erase. Since all of the cells of the sector are erased together, the other cells may over erase, and then have to be compacted. If you see a high number of compaction pulses and erase pulses this is likely the cause.

    The traps will anneal (release the electron) over time. The problem is worse if the program/erase cycles happen with little time between or at cold temperature. The anneal process can be sped up by baking the part. If after baking the part at 125C for 24 hours the erase time goes back down, this is what is happening. My explanation is simplified, but more or less accurate. I hope this helps.

  • Renjith,

    Did we answered your question?

    If so, can you mark the answer as verified?

    Thanks and Regards,

    Jean-Marc

  • Hi,
    I would like to be friends with you on the TI E2E Community . Thank you!

    Dear Sir,

    I request a help to access compact flash interfaced with TI davinci TMS320Dm6446.

    I am using Spectrum digital EVMDM6446 (DaVinci EVM) and Spectrum digital XDS560v2 LC Traveller Emulator and Code Composer Studio 5.5.0 and using SanDisk compact flash ultra II (4.0 GB). I am trying to run the spectrum sample code for compact flash "cf" which is given in spectrum digital Inc website support page (c6000.spectrumdigital.com/.../davincievm.zip ). when i run the code as it is, I am able to read only MSB 8 bit of device ID and not able to read the LSB data and always getting 0 as explained below. it is detecting the card( card is detecting in function Int16 cf_card_detect( )), but read access has error as said above.
    do I need to make any changes in the code?
    I am trying to read the device ID in code :

    /* ------------------------------------------------------------------------ *

    * *

    * cf_identify( ) *

    * *

    * ------------------------------------------------------------------------ */

    Int16 cf_identify( Uint8* buffer )

    {

    Int16 i;

    Uint8* id = buffer;

    Uint8 str[64];

    Uint32 size;


    ATA_readId( ( Uint32 )id );


    /* Check for valid identifier */

    printf( " CF Identifier: 0x%x\n", ( id[0] << 8 ) + id[1] );

    if ( ! ( ( id[0] == 0x8A ) && ( id[1] == 0x84 ) ) )

    {

    printf( " Invalid CF identifier found\n" );

    return 1;

    }


    /* Print model number */

    for ( i = 0 ; i < 40 ; i += 2 )

    {

    str[i] = id[i + 55];

    str[i + 1] = id[i + 54];

    }

    str[40] = 0;

    printf( " Model number: [%s]\n", str );


    /* Print serial number */

    for ( i = 0 ; i < 20 ; i += 2 )

    {

    str[i] = id[i + 21];

    str[i + 1] = id[i + 20];

    }

    str[20] = 0;

    printf( " Serial number: [%s]\n", str );


    /* Print capacity */

    size = id[123];

    size = ( size << 8 ) + id[122];

    size = ( size << 8 ) + id[121];

    size = ( size << 8 ) + id[120];

    size = size >> 1;

    printf( " Capacity: [%d] KBytes\n", size );

    printf( " Capacity: [%d] MBytes\n", size >> 10 );

    return 0;

    }

    Output:

    [ARM9_0] CF.CD1 Found

    CF.CD2 Found

    CF Identifier: 0x84

    Invalid CF identifier found

    Model number: [ ]

    Serial number: [AS 0 0"9$5]

    Capacity: [3962416] KBytes

    Capacity: [3869] MBytes

    InvAddr32 test [1-3] sector


    ***ALL Tests Passed***



    here only MSB 0x84 is getting read and I am reading 0x00 instead of LSB 0x8A . Not able to run ata_addr32() test too(same problem). I have not made any change in the sample code. whats wrong?

    Refer Code: Sample code attached, same code and supporting files are also given in davincievm.zip folder in below link

    download davincievm.zip folder from c6000.spectrumdigital.com/.../revf)

    file path :davincievm\examples\cf .

    ref datasheets: sandisk compact flash : media.digikey.com/.../SanDisk%20CompactFlash%20Memory.pdf


    TI datasheets: SPRUE21(ATA controllers datasheet)

    TI foram link: e2e.ti.com/.../401103



    Regards,


    --

    Venkatraman Bhat | AutoTEC Systems Pvt. Ltd