Zynq-7000 FreeRTOS中断:解决RTOS中中断无反应问题
Posted yiwenbo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zynq-7000 FreeRTOS中断:解决RTOS中中断无反应问题相关的知识,希望对你有一定的参考价值。
前面做的两个实验,在裸机下跑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中中断无反应问题的主要内容,如果未能解决你的问题,请参考以下文章
黑金ZYNQ7000系列原创视频教程06.ZYNQ来自FPGA的中断——按键中断实验
ZYNQ 7000平台UDP数据包(1字节或2字节)校验和Checksum错误0xFFFF解决方案(linux+vxworks6.9平台)
Xilinx Zynq-7000嵌入式系统设计与实现 学习教程