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.

AM4372: QSPI read failure

Part Number: AM4372

Dear Champs,

My customer failed to read qspi flash at SK and IDK board as below log at some time.

They faced this qspi read fail after running some time, and there is no issue at initial.

~~~~~~~~~

BOARDInit status [0x0]

Flash Manufacturer ID = 0

Device ID = 0

SUCCESS!!!Block erase successful

FAILURE!!!Read Write test failed

~~~~~~~~~~~~

They implemented qpsi flash read as below. Could you please guide me where they should check?

~~~~~~~~

static const qspiAppObj_t QSPIAPPOBJ_DEFAULT =

{

    0U,  /* chipSelect */

    0U,  /* instNum */

    0U,  /* instAddr */

    DEVICE_ID_FLASH_MX66L51235F,  /* devId */

    0U,  /* length*/

    {

        {

            0U, /* chipSelect */

            0U, /* memMapBaseAddr */

            0U, /* cfgBaseAddr */

            QSPI_LIB_READ_TYPE_QUAD, /* qspiLibReadType */

            QSPI_LIB_TX_MODE_MEMORY_MAPPED, /* qspiLibTxMode */ //QSPI_LIB_TX_MODE_CONFIG_MODE, //

        },

        {

            (64U * MEM_SIZE_MB),/* deviceSize */

            0x19U,/* flashDevId */

            0xC2,/* flashMfgId */

            (4U * MEM_SIZE_KB),/* sectorSize */

            (64U * MEM_SIZE_KB),/* blockSize */

        }

    }

};

~~~~~~~

                    gQspiAppReadWriteObj = QSPIAPPOBJ_DEFAULT;

                    qspiLibInfo = gQspiAppReadWriteObj.qspiLibInfo;

 

                    /* The length of data in bytes to be transferred to QSPI Flash */

                    gQspiAppReadWriteObj.length = 4U * MEM_SIZE_KB;

                    CONSOLEUtilsPrintf("BOARDInit status [0x%x]\n", status);

 

                    qspiLibInfo.qspiLibCtrlInfo.cfgBaseAddr = QSPI_CONFIG_BASE_ADDR;

                    /* Set the QSPI memory mapped base Address from chibdb*/

                    qspiLibInfo.qspiLibCtrlInfo.memMapBaseAddr = 0x30000000;//0;

                    qspiLibInfo.qspiLibCtrlInfo.chipSelect = 0;

 

                    /* Initialise the QPSI controller */

                    QSPILibInit(&qspiLibInfo);

                    /* Display manufacturer and device ID of QSPI flash */

                    QSPILibPrintId(&qspiLibInfo);

~~~~~~~~~~

My customer is using TI-RTOS Processor SDK v6.1 and this issue was occurred at SK and IDK AM437x EVM boards both.

Please guide me where they should check.

Thanks and Best Regards,

SI.

  • Hi SI,

    Is the customer test application a modified version of <PDK>/packages/ti/starterware/examples/qspi/read_write/read_write_app_main.c? I see this application prompts the user repeatedly in a loop for read/write test settings.

    How long before the failure occurs? Does it occur after a specific number of write/read cycles?

    Regards,
    Frank

  • Hi Frank,

    Thanks for your response.

    I found they modified qspi.c file of \\pdk_am437x_1_0_16\packages\ti\starterware\dal and requested to test it again using <PDK>/packages/ti/starterware/examples/qspi/read_write as you recommended.

    BTW, what is the purpose of the sources in the '\\pdk_am437x_1_0_16\packages\ti\starterware\dal'?

    Thanks and Best Regards,

    SI.

  • Hi SI,

    "dal" stands for "Device Abstraction Layer". I think the intent is to provide a software abstraction layer for hardware IP on different devices.

    Regards,
    Frank