CN / EN
CN / EN

提问

设计支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

信号量获取异常问题 GR5526

283****com

2026-01-28 15:04

5526,sdk版本1.0.4 在休眠唤醒时运行os_sema_take_impl函数时延迟很大,每次都要耗尽timeout,造成等待亮屏时间过长,请问这是怎么造成的,怎么解决呢

int32_t os_sema_take_impl(osal_sema_handle_t sema_handle, osal_tick_type_t timeout)

{

int32_t ret;

BaseType_t status;

xSemaphoreHandle handle = (xSemaphoreHandle)sema_handle;

OSAL_CHECK_POINTER(handle);

if (OSAL_IS_IN_ISR())

{

BaseType_t xHigherPriorityTaskWoken = pdFALSE;

status = xSemaphoreTakeFromISR(handle, &xHigherPriorityTaskWoken);

if (pdFALSE != xHigherPriorityTaskWoken)

{

portYIELD_FROM_ISR(xHigherPriorityTaskWoken);

}

}

else

{

status = xSemaphoreTake(handle, OS_MS_TO_TICKS(timeout));

}

if (pdPASS == status)

{

ret = OSAL_SUCCESS;

}

else

{

ret = OSAL_ERROR;

}

return ret;

}

0收藏

0赞成

Seiyou

汇顶员工
2026-01-29 14:13

你好,请问你的信号量具体在哪里take以及在哪里give的呢?give的时候是否存在关中断或者关调度器的行为呢?

2条评论

1赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注