一种适用于Xilinx软核处理器的中断通用处理方法技术

技术编号:20362695 阅读:32 留言:0更新日期:2019-02-16 16:27
本发明专利技术公开了一种适用于Xilinx软核处理器的中断通用处理方法,具体为按照中断源的优先级顺序排列生成中断向量数组,然后设置中断掩码数组和中断确认数组,在收到中断请求信号后,根据发出请求中断的序号,确定对应的中断掩码数组元素、中断确认数组元素和中断向量数组元素;从而将确定的数组元素写入IER中断使能寄存器和IAR中断确认寄存器,屏蔽低优先级中断,开放高优先级中断,确认唯一中断触发。本发明专利技术方法易操作,适用于固定优先级系统,通过简单指令代码对数组操作即可捕捉中断请求信号,并确定中断优先级,纵向定位三个数组的对应元素,实现中断抢占与嵌套以及中断服务。

【技术实现步骤摘要】
一种适用于Xilinx软核处理器的中断通用处理方法
本专利技术涉及一种适用于Xilinx软核处理器的中断通用处理方法,属于网络通信

技术介绍
XilinxMicroBlaze软核处理器具备的AXIINTC中断控制器资源支持中断的抢占与嵌套,但其自带的驱动没有实现抢占和嵌套功能,并且植入的操作系统需做很多代码改写才能适配。现有技术没有提供直接的方法使操作系统移植后支持中断抢占与嵌套。嵌入式处理器芯片结合移植的嵌入式操作系统,对中断请求处理的一般方法见图1。在嵌入式领域应用广泛的32位芯片多是ARM架构,移植嵌入式操作系统的中断处理方法已经比较成熟。另一类使用较多的是DSP芯片,其中TI公司的TMS320系列DSP极具代表性,其中断处理方法如图2所示。可见中断请求处理的一般方法是,根据芯片硬件特征,结合中断处理相关寄存器组特性,等待中断源的中断请求信号,一旦处理器捕获信号后,利用相关控制字确定、使能中断;并保护现场,等到处理完成中断服务程序后,恢复现场。保护现场与恢复现场多在汇编代码中完成,直接操作寄存器;而中断向量表生成、中断使能、确认等工作也会有专用寄存器通过特定控制字完成,一般在嵌入式操作系统(多数是C语言)中完成,而这些工作是实现中断处理、抢占、嵌套等处理的关键,也是不同处理器芯片处理中断处理的区分点。XilinxFPGAs芯片提供的MicroBlaze软处理器内核配置了中断控制器核LogiCOREIP(AXIINTC,即AXIInterruptController)接收来自外围设备的多个中断信号输入(可扩展数量),并提供一个选项来提供优先级编码方案将它们合并到系统处理器的一个总中断输出,该输出是为了连接到一个能够产生中断条件的设备。用于存储中断向量地址、检查、启用和确认中断的寄存器组通过一个用于AMBA(AdvancedMicrocontrollerBusArchitecture,高级微控制器总线结构)规范的从接口来访问,根据目标系统进行调整中断的数量和其他参数。AXIINTC中断控制器根据AXI4-Lite协议进行接口。AXIINTC中断控制器捕获到中断源的中断请求,并保留,直到确认。中断可以在全局或单独地启用或禁用。当所有中断都在全局启用时,处理器会发出中断条件,并且至少有一个捕获的中断是单独启用的。AXIINTC中断处理器还支持可配置的软件中断数量,这些中断主要用于多处理器系统中的跨处理器中断,是由软件写入中断状态寄存器触发的。在官网下载的资料AN-1013描述了嵌入式操作系统μC/OS-Ⅱ移植到XilinxMicroBlaze软核处理器上的操作。详尽的文档及源码提供了一些初始化芯片外设和中断服务程序,用于底层面向硬件实现的系统自带文件os_cpu_a.s汇编代码必须根据硬件修改,所以只适于μC/OS-Ⅱ操作系统。而且该文档没有提供清晰而简洁的技术方法。os_cpu_a.s中汇编代码实现中断处理前的现场保存与中断处理后的现场回复,直接对专用寄存器操作。但在嵌入式C代码实现中断向量地址、检查、启用和确认中断方面,虽然可以对多个中断设置不同优先级,却没有代码实例实现中断的抢占与嵌套处理。论文《Spartan6芯片μC/OSII的可抢占式嵌套中断控制方法》是针对MicroBlaze软核处理器提出的技术方案,但流程图中“实现中断抢占逻辑”和“实现中断嵌套逻辑”是如何实现的,论文并没有详述,并且论文中对中断向量表的生成、中断控制器获得中断信号后对其优先级的比较判定、以至于判定优先级后是否会发生抢占或嵌套操作等都没有论述,这就使得该技术方案与已有的或传统的方法没有明显区分,对于XilinxFPGAs芯片没有针对性。而只在Spartan6芯片上试验也不具备MicroBlaze软核处理器的通用性。论文《基于FPGA中断管理的研究及硬件化设计》给出中断管理模块结构模型,采用VHDL将中断管理模块由硬件实现,设计中断源、中断嵌套等管理中断的电路,没有发挥MicroBlaze软核的作用,且局限于μC/OS-Ⅱ系统实现。可见,对于XilinxMicroBlaze软核处理器的AXIINTC中断控制器并没有实用、通用的中断请求处理方法。
技术实现思路
本专利技术所要解决的技术问题是克服现有技术的缺陷,提供一种适用于Xilinx软核处理器的中断通用处理方法,可以实现抢占或嵌套调度,并针对具备MicroBlaze软核处理器的多种XilinxFPGAs芯片都可移植通用,而且使用标准C代码可以实现在多种嵌入式操作系统中移植使用。为解决上述技术问题,本专利技术提供一种适用于Xilinx软核处理器的中断通用处理方法,包括以下步骤:1)确定中断源个数INTC_NUM及优先级顺序,按照优先级从高到低的顺序排列生成中断向量数组INTC_Vector,所述中断向量数组INTC_Vector中的元素按照优先级顺序排列的中断处理程序函数,元素序号是优先级序号;2)根据中断向量数组INTC_Vector设置中断掩码数组INTC_MSK和中断确认数组INTC_ACK,三个数组的长度都是INTC_NUM;3)一旦有中断源发出请求信号,INTC中断控制器响应,进入中断处理;4)MicroBlaze软核处理器系统自动关闭总中断;5)保存所有寄存器内容,禁止中断;6)中断嵌套计数器INTC_Counter加1;7)判断中断嵌套计数器是否大于阈值,如果是,则跳转到步骤13);如果否,则进行步骤8);8)读取IAR中断确认寄存器,获取当前最高优先级序号;9)根据步骤8)确定的最高优先级序号,确定对应的中断掩码数组INTC_MSK元素、中断确认数组INTC_ACK元素和中断向量数组INTC_Vector元素;10)将确定的中断掩码数组INTC_MSK元素写入IER中断使能寄存器,对应的中断确认数组INTC_ACK数组元素写入IAR中断确认寄存器;11)开放INTC中断控制器总中断;12)如果又有中断请求信号到来,则跳转到步骤4);如果没有中断请求信号到来,则进行步骤13);13)找到并执行当前最高优先级序号对应的中断处理程序函数;14)中断嵌套计数器INTC_Counter减1;15)恢复寄存器内容;16)中断处理退出。前述的中断向量数组INTC_Vector中的元素序号按照十进制表示,从0开始;所述中断掩码数组INTC_MSK和中断确认数组INTC_ACK中的元素按照二进制表示;所述中断向量数组INTC_Vector中的元素是按照优先级顺序排列的中断处理程序函数,所述中断掩码数组INTC_MSK的第n个元素是二进制表示的2n-1,所述中断确认数组INTC_ACK的第n个元素是二进制表示的2n,其中,n=0,1,2,……表示元素序号。前述的步骤3)中,支持多个中断源同时发出请求信号。前述的步骤7)中的阈值为一个小于INTC_NUM的整数值。前述的中断处理过程采用具有可移植性的标准C代码实现,能够在MicroBlaze环境中应用到多种使用标准C代码完成的嵌入式操作系统中。前述的移植C代码时,只需要确定中断源个数,中断嵌套计数器阈值,将各个中断源对应的中断处理程序函数作为中断向量数组元素并按优先级排列即可。本专利技术所达到的有益效果为:(1)本专利技术方法易操作本文档来自技高网
...

【技术保护点】
1.一种适用于Xilinx软核处理器的中断通用处理方法,其特征在于,包括以下步骤:1)确定中断源个数INTC_NUM及优先级顺序,按照优先级从高到低的顺序排列生成中断向量数组INTC_Vector,所述中断向量数组INTC_Vector中的元素按照优先级顺序排列的中断处理程序函数,元素序号是优先级序号;2)根据中断向量数组INTC_Vector设置中断掩码数组INTC_MSK和中断确认数组INTC_ACK,三个数组的长度都是INTC_NUM;3)一旦有中断源发出请求信号,INTC中断控制器响应,进入中断处理;4)MicroBlaze软核处理器系统自动关闭总中断;5)保存所有寄存器内容,禁止中断;6)中断嵌套计数器INTC_Counter加1;7)判断中断嵌套计数器是否大于阈值,如果是,则跳转到步骤13);如果否,则进行步骤8);8)读取IAR中断确认寄存器,获取当前最高优先级序号;9)根据步骤8)确定的最高优先级序号,确定对应的中断掩码数组INTC_MSK元素、中断确认数组INTC_ACK元素和中断向量数组INTC_Vector元素;10)将确定的中断掩码数组INTC_MSK元素写入IER中断使能寄存器,对应的中断确认数组INTC_ACK数组元素写入IAR中断确认寄存器;11)开放INTC中断控制器总中断;12)如果又有中断请求信号到来,则跳转到步骤4);如果没有中断请求信号到来,则进行步骤13);13)找到并执行当前最高优先级序号对应的中断处理程序函数;14)中断嵌套计数器INTC_Counter减1;15)恢复寄存器内容;16)中断处理退出。...

【技术特征摘要】
1.一种适用于Xilinx软核处理器的中断通用处理方法,其特征在于,包括以下步骤:1)确定中断源个数INTC_NUM及优先级顺序,按照优先级从高到低的顺序排列生成中断向量数组INTC_Vector,所述中断向量数组INTC_Vector中的元素按照优先级顺序排列的中断处理程序函数,元素序号是优先级序号;2)根据中断向量数组INTC_Vector设置中断掩码数组INTC_MSK和中断确认数组INTC_ACK,三个数组的长度都是INTC_NUM;3)一旦有中断源发出请求信号,INTC中断控制器响应,进入中断处理;4)MicroBlaze软核处理器系统自动关闭总中断;5)保存所有寄存器内容,禁止中断;6)中断嵌套计数器INTC_Counter加1;7)判断中断嵌套计数器是否大于阈值,如果是,则跳转到步骤13);如果否,则进行步骤8);8)读取IAR中断确认寄存器,获取当前最高优先级序号;9)根据步骤8)确定的最高优先级序号,确定对应的中断掩码数组INTC_MSK元素、中断确认数组INTC_ACK元素和中断向量数组INTC_Vector元素;10)将确定的中断掩码数组INTC_MSK元素写入IER中断使能寄存器,对应的中断确认数组INTC_ACK数组元素写入IAR中断确认寄存器;11)开放INTC中断控制器总中断;12)如果又有中断请求信号到来,则跳转到步骤4);如果没有中断请求信号到来,则进行步骤13);13)找到并执行当前最高优先级序号对应的中断处理程序函数;14)中断嵌套计数器...

【专利技术属性】
技术研发人员:罗铭许学芳丁俊建
申请(专利权)人:南京国电南自维美德自动化有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1