zynq:pl-ps硬中断设置

对于硬中而言,需要设置将中断映射到哪个cpu上,其函数为

XScuGic_InterruptMaptoCpu(&ScuGic,1,F2P_INTR1_ID);

同时需要设置硬中断的触发类型及其触发优先级,同样优先级会先执行中断号小的,其函数为:

XScuGic_SetPriTrigTypeByDistAddr(DIS_ADDR,F2P_INTR1_ID,0x20,0x03);

zynq:pl-ps硬中断设置_第1张图片

int initSwIntr(){
	int status;
	Xil_ExceptionInit();
	GicPtr=XScuGic_LookupConfig(GIC_VEC_ID);

	status=XScuGic_CfgInitialize(&ScuGic,GicPtr,GicPtr->CpuBaseAddress);
	if(status!=XST_SUCCESS){
		return XST_FAILURE;
	}

	Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,(void *)&ScuGic);

	status=XScuGic_Connect(&ScuGic,F2P_INTR1_ID,(Xil_ExceptionHandler)f2pintrhandler1,(void *)&ScuGic);
	if(status!=XST_SUCCESS){
		return XST_FAILURE;
	}
	XScuGic_InterruptMaptoCpu(&ScuGic,1,F2P_INTR1_ID);
	XScuGic_SetPriTrigTypeByDistAddr(DIS_ADDR,F2P_INTR1_ID,0x20,0x03);
	XScuGic_Enable(&ScuGic,F2P_INTR1_ID);

	Xil_ExceptionEnable();

	return XST_SUCCESS;

}

注:对于GIC而言,需要有顺序,不能同时初始化两个cpu。

你可能感兴趣的:(fpga开发,学习,c语言,arm,arm开发)