freertos openamp 使用vitis创建的工程,任务无法调度

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);
}

猜你喜欢

转载自blog.csdn.net/WANGYONGZIXUE/article/details/121754764