码迷,mamicode.com
首页 > 其他好文 > 详细

Zynq-7000 FreeRTOS(二)中断:解决RTOS中中断无反应问题

时间:2019-05-03 11:15:53      阅读:463      评论:0      收藏:0      [点我收藏+]

标签:移植   原因   初始   封装   time   变量   back   code   调度   

  前面做的两个实验,在裸机下跑PS的timer计时器中断,PL到PS的按键中断均工作正常,但是将代码移植到freertos工程时,中断不执行,跟中断无关联的task可以运行。产生这个问题的主要原因,在于PS部分只有一个中断控制器,因此我们只能申请一个中断控制器设备,如果申请了两个,那么不工作是必然的。我们在裸机下申请了一个:XScuGic INST ,另外一个被FreeRTOS申请了,在如下图,这样就“冲突”了,所以:我们将原先自己申请的中断控制器改用FreeRTOS申请的XScuGic xInterruptController,这就需要在我们自己写的函数中,去全局的声明一下FreeRTOS定义的那个XScuGic xInterruptController变量,方法就是在main()前面加上extern XScuGic xInterruptController;。

 技术图片

 

   下图是Xilinx的一位员工给出的意见,也就是,在开启调度器时会初始化中断控制器,因此我们初始化中断控制器只能在线程中执行,也就是在vTaskStartScheduler()开启任务调度之前。反正我看到有中断控制器传参的函数都放到一个task中去了,另外在FreeRTOS中,什么Task,线程等等,貌似不区分,概念一样,如果看到FreeRTOS有线程相关的函数,多半是被别人封装过吧。

技术图片

 

Zynq-7000 FreeRTOS(二)中断:解决RTOS中中断无反应问题

标签:移植   原因   初始   封装   time   变量   back   code   调度   

原文地址:https://www.cnblogs.com/yiwenbo/p/10804532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!