SDK 2.7.0 LPC546xx fsl_sdif.c SDIF_SendCommand infinite loop

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

SDK 2.7.0 LPC546xx fsl_sdif.c SDIF_SendCommand infinite loop

1,465 次查看
tomasvavra
Contributor I

Hello, what is the reason that function

    status_t SDIF_SendCommand(SDIF_Type *base, sdif_command_t *cmd, uint32_t timeout)

ignores the timeout argument? My application fails on this and gets forever stuck on

    /* wait start_cmd bit auto clear within timeout */
    while ((base->CMD & SDIF_CMD_START_CMD_MASK) == SDIF_CMD_START_CMD_MASK)
    {
    }
标记 (2)
0 项奖励
回复
7 回复数

1,353 次查看
ZhangJennie
NXP TechSupport
NXP TechSupport

Tomas Vavra

SDK team is working on this issue. timeout is missing in SDK 2.7.0 LPC546xx fsl_sdif.c SDIF_SendCommand

The error information means that CMD13 transfer failed, can you confirm that the error is caused by the timeout?

Thanks,

Jun Zhang

0 项奖励
回复

1,353 次查看
ZhangJennie
NXP TechSupport
NXP TechSupport

HI

I checked SDK2.7.0, I find the same issue as you described.

 if timeout is necessary for you, please use below code instead. I will check it with SDK team. Will keep you informed.

    while ((base->CMD & SDIF_CMD_START_CMD_MASK) == SDIF_CMD_START_CMD_MASK)
    {
        if (!timeout)
        {
            break;
        }

        --timeout;
    }

Have a nice day,

Jun Zhang

0 项奖励
回复

1,353 次查看
tomasvavra
Contributor I

Thank you for trying to help. If I use your code, I get random runtime errors.

    Error: send CMD13 failed with host error 1, response 0

0 项奖励
回复

1,353 次查看
ZhangJennie
NXP TechSupport
NXP TechSupport

Tomas,

I am checking this issue with SDK development team, will keep you informed.

BR
Jun Zhang

0 项奖励
回复

1,353 次查看
tomasvavra
Contributor I

Thank you. Some more information.. if I use original code which works with one card, I run into the infinite loop with a different card. When this happens SDIF registers have

CMD.START-CMD: 1

RINTSTS.RXDR: 1

RINTSTS.HTO: 1 (data starvation by host timeout)

RINTSTS.HLE: 1 (hardware locked write error)

I don't see anywhere that HTO or HLE interrupts are enabled, that may be on of the reason of infinite loop when waiting for START-CMD to clear. Errors are not expected in SDIF_SendCommand.

0 项奖励
回复

1,353 次查看
ZhangJennie
NXP TechSupport
NXP TechSupport

Hi Tomas,

 I guess your follow up question is a new issue. I prefer to track one issue with one thread. As I can't help you create a thread, Could you please create a new thread for it? 

For your original issue, I still wait for the feedback from SDK team. the team is affected by corronavirus in China, the response would be slow. Thanks for your understanding.

Best Regards

Jun Zhang

0 项奖励
回复

1,323 次查看
ZhangJennie
NXP TechSupport
NXP TechSupport

Hi Tomas,

I was informed this issue will be fixed in next SDK release v2.9.0.

We will Enabled the functinalify of the timeout parameter in SDIF_SendCommand.

Thanks for bringing the problem to our attention.

 

Best Regards

Jennie

 

0 项奖励
回复