283****com
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;
}
Seiyou

你好,请问你的信号量具体在哪里take以及在哪里give的呢?give的时候是否存在关中断或者关调度器的行为呢?
打开微信,使用“扫一扫”即可关注