freertos openamp 使用vitis创建的工程,任务无法调度。
freertos openamp 使用vitis创建的工程,任务中使用 vTaskDelay( 1000 )直接卡住了,无法调度。
vTaskDelay不能用在临界区或者中断函数中
猜测openamp中使用了这两种函数中的一种
解决方法
FreeRTOS_ClearTickInterrupt();
platform_init()
FreeRTOS_SetupTickInterrupt();
static void processing(void *unused_arg)
{
void *platform;
struct rpmsg_device *rpdev;
LPRINTF("Starting application...\n");
/* Initialize platform */
FreeRTOS_ClearTickInterrupt();
if (platform_init(NULL, NULL, &platform)) {
LPERROR("Failed to initialize platform.\n");
} else {
FreeRTOS_SetupTickInterrupt();
rpdev = platform_create_rpmsg_vdev(platform, 0,
VIRTIO_DEV_SLAVE,//
NULL, NULL);
if (!rpdev){
LPERROR("Failed to create rpmsg virtio device.\n");
} else {
app(rpdev, platform);
platform_release_rpmsg_vdev(rpdev);
}
}
LPRINTF("Stopping application...\n");
platform_cleanup(platform);
/* Terminate this task */
vTaskDelete(NULL);
}