完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
你好,
我如何启用自定义IP的中断。 我使用vivado HLS生成了IP。 中断线连接到ZYNQ的中断端口。 以下是设备树 { amba_pl:amba_pl { #address-cells =; #size-cells =; compatible =“simple-bus”; 范围; simpleAlu_0:simpleAlu @ 43c00000 { compatible =“xlnx,simpleAlu-1.0”; interrupt-parent =; 中断=; reg =; xlnx,s-axi-axilites-addr-width =; xlnx,s-axi-axilites-data-width =; }; }; }; Hw.h文件告诉中断寄存器为 // 0x08:IP中断使能寄存器(读/写)//位0 - 通道0(ap_done)//位1 - 通道1(ap_ready) #define XSIMPLEALU_AXILITES_ADDR_IER 0x08 #define XSIMPLEALU_AXILITES_ADDR_ISR 0x0c 生成的C文件具有以下中断启用,禁用,清除功能 void XSimplealu_InterruptEnable(XSimplealu * InstancePtr,u32 Mask){ u32注册; Xil_AssertVoid(InstancePtr!= NULL); Xil_AssertVoid(InstancePtr-> IsReady == XIL_COMPONENT_IS_READY); Register = XSimplealu_ReadReg(InstancePtr-> Axilites_BaseAddress,XSIMPLEALU_AXILITES_ADDR_IER); XSimplealu_WriteReg(InstancePtr-> Axilites_BaseAddress,XSIMPLEALU_AXILITES_ADDR_IER,Register | Mask); } void XSimplealu_InterruptDisable(XSimplealu * InstancePtr,u32 Mask){ u32注册; Xil_AssertVoid(InstancePtr!= NULL); Xil_AssertVoid(InstancePtr-> IsReady == XIL_COMPONENT_IS_READY); Register = XSimplealu_ReadReg(InstancePtr-> Axilites_BaseAddress,XSIMPLEALU_AXILITES_ADDR_IER); XSimplealu_WriteReg(InstancePtr-> Axilites_BaseAddress,XSIMPLEALU_AXILITES_ADDR_IER,Register&(〜Mask)); } void XSimplealu_InterruptClear(XSimplealu * InstancePtr,u32 Mask){ Xil_AssertVoid(InstancePtr!= NULL); Xil_AssertVoid(InstancePtr-> IsReady == XIL_COMPONENT_IS_READY); XSimplealu_WriteReg(InstancePtr-> Axilites_BaseAddress,XSIMPLEALU_AXILITES_ADDR_ISR,Mask); } 那么如何使用这些功能启用中断? 什么应该是启用中断位的掩码。 等待回复。 非常感谢。 |
|
相关推荐
7个回答
|
|
如果要处理ap_done中断,则中断屏蔽为1;如果要处理ap_ready中断,则中断屏蔽为2.请勿忘记启用全局中断使能,通常在寄存器0x04,您必须将1写入以启用0和0
禁用。 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 在原帖中查看解决方案 |
|
|
|
如果要处理ap_done中断,则中断屏蔽为1;如果要处理ap_ready中断,则中断屏蔽为2.请勿忘记启用全局中断使能,通常在寄存器0x04,您必须将1写入以启用0和0
禁用。 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 |
|
|
|
您好@muzafferCan我可以在发生中断后确认它吗?我试过XSimplealu_InterruptClear()但是它没有工作。谢谢
|
|
|
|
你好@muzaffer我怎么能在它发生后确认它?我试过XSimplealu_InterruptClear()但是它没有工作。谢谢
|
|
|
|
你好@ muzaffer,当我第一次运行程序时,它会捕获中断。
它显示中断已启用且已发生。 但是当我停止程序时,然后在那里运行它停止并继续等待中断发生。我正在使用uio进行中断捕获。 所以当我读取设备的文件描述符时。 它一直等待中断。然后我必须重新启动电路板。 它正常工作并发生中断。 但是在第二次运行程序后它就会停止运行。你能帮我解决一下这个问题吗? 我会非常感谢你。谢谢你。很多 |
|
|
|
您需要写入设备以再次启用中断:https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt/
- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 |
|
|
|
您好@ muzaffer,谢谢您的回复。
我正在写设备。 我在循环中运行programm。 因此每次循环都会发生中断。 但是当我停止程序并第二次运行它时。 它在读取设备文件时停止。 |
|
|
|
只有小组成员才能发言,加入小组>>
2439 浏览 7 评论
2834 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2306 浏览 9 评论
3387 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2482 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1665浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
613浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
477浏览 1评论
2027浏览 0评论
754浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-8 22:11 , Processed in 1.783499 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号