UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Xilinx Employee
Xilinx Employee
56 次查看

【分享】在FreeRTOS的main()函数里初始化设备,不能收到中断。

 

FreeRTOS在 void vTaskStartScheduler( void )里调用 configSETUP_TICK_INTERRUPT(), 也就是void FreeRTOS_SetupTickInterrupt( void )。void FreeRTOS_SetupTickInterrupt( void )在文件portZynqUltrascale.c里实现,会初始化MPSoC的中断控制器。

所以在vTaskStartScheduler()之前,FreeRTOS的中断没有使能,不能响应中断。
如果在vTaskStartScheduler()之前初始化中断,检测不到中断是正常的。
把xilinx的standalone的例子加入FreeRTOS时,应该去掉XScuGic_CfgInitialize(), Xil_ExceptionRegisterHandler(),Xil_ExceptionEnable()等GIC层次的操作函数,只保留 XScuGic_Connect()和XScuGic_EnableIntr()等设备层次的操作函数。否则GIC被重复初始化,可能导致FreeRTOS工作异常。设备的初始化,也最好加在一个线程里,而不是FreeRTOS的main()函数里。

0 项奖励
1 条回复
Moderator
Moderator
39 次查看

回复: 【分享】在FreeRTOS的main()函数里初始化设备,不能收到中断。

感谢Hank的分享!

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励