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

Posted 为了维护世界和平_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);


以上是关于freertos openamp 使用vitis创建的工程,任务无法调度的主要内容,如果未能解决你的问题,请参考以下文章

openamp 实现项目的功能需求

openamp RPU-APU双核间通信 建立多个通道

FreeRTOSFreeRTOS学习笔记(13)— FreeRTOS创建任务和任务管理(原生API)

核间通信openamp 在linux内核空间

FreeRTOS移植

FreeRTOS移植