ZYNQ-设置中断系统函数的理解

背景

        最近笔者学习到ZYNQ的中断机制时,发现中断的配置过程与以往接触到的传统FPGA处理的思维方式有所不同,特此记录个人的理解和拙见。

函数

void SetupInterruptSystem(XScuGic *GicInstancePtr, XGpioPs *Gpio,u16 GpioIntrId)
{

	//查找GIC中断配置信息并初始化
	IntcConfig = XScuGic_LookupConfig(INTC_DEVICE_ID);
	XScuGic_CfgInitialize(GicInstancePtr, IntcConfig,IntcConfig->CpuBaseAddress);

	//初始化ARM处理器异常句柄
	Xil_ExceptionInit();
	//给IRQ异常注册处理程序
	Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,GicInstancePtr);
	//使能处理器中断
	Xil_ExceptionEnableMask(XIL_EXCEPTION_IRQ);

	//关联中断处理函数
	XScuGic_Connect(GicInstancePtr, GpioIntrId,(Xil_ExceptionHandler)IntrHandler,(void *)Gpio);

	//为GPIO器件使能中断
	XScuGic_Enable(GicInstancePtr, GpioIntrId);

	//设置中断触发类型为下降沿
	XGpioPs_SetIntrTypePin(Gpio, MIO_KEY, XGPIOPS_IRQ_TYPE_EDGE_FALLING);

	//打开MIO引脚中断使能信号
	XGpioPs_IntrEnablePin(Gpio, MIO_KEY);

}

理解

//查找GIC中断配置信息并初始化
	IntcConfig = XScuGic_LookupConfig(INTC_DEVICE_ID);
	XScuGic_CfgInitialize(GicInstancePtr, IntcConfig,IntcConfig->CpuBaseAddress);

我们可以把这里理解为进入一家VIP的会所(PS),那么会所的厨房就是(APU),第一行的目的是,对主厨(GIC总中断控制器)的资历和身份信息(设备ID及地址)进行扫描并在花名册中找到对应的注册认证信息,给大厨一张员工ID卡。第二行代码的目的类似于,人员根据员工卡作为凭证领取入职基础套装礼包(初始同步化)。在会所内工作的设备都需要这样操作。

//初始化ARM处理器异常句柄
	Xil_ExceptionInit();
	//给IRQ异常注册处理程序
	Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,GicInstancePtr);
	//使能处理器中断
	Xil_ExceptionEnableMask(XIL_EXCEPTION_IRQ);

这里指的是,会所(APU)给予您(INT某个中断)私人定制菜谱(中断处理函数)的权利,并开启接受点餐(IRQ)的模式,您可以在菜谱上添加想吃的菜。

//关联中断处理函数
	XScuGic_Connect(GicInstancePtr, GpioIntrId,(Xil_ExceptionHandler)IntrHandler,(void *)Gpio);

这行代码的意思是添加喜欢的菜在菜谱上。

//为GPIO器件使能中断
	XScuGic_Enable(GicInstancePtr, GpioIntrId);

	//设置中断触发类型为下降沿
	XGpioPs_SetIntrTypePin(Gpio, MIO_KEY, XGPIOPS_IRQ_TYPE_EDGE_FALLING);

	//打开MIO引脚中断使能信号
	XGpioPs_IntrEnablePin(Gpio, MIO_KEY);

配合下图红色箭头可以理解,这里三行代码是使能GPIO和MIO的中断开关。相当于会员的饭菜的点完餐后的提交订单,会所打开点餐通道(IRQ)至会所中(APU)按照菜谱(hander)要求执行操作。值得注意的是主厨(GIC)可能同时接收到多个订单(IRQ),那么它会根据他的一套标准安排优先级来完成制作。

总结

ZYNQ软件设计部分的中断系统设置函数的配置过程,可以理解为会员到会所吃饭的过程:

  1. 会所:核验主厨身份;
  2. 会所:发放入职套装;
  3. 会所:注册私人菜谱;
  4. 会所:开启点菜模式;
  5. 会员:定制私人菜谱;
  6. 会员:点完提交订单;

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值