zyqn-arm软中断设置

所有SGI都是边缘触发的,sgi的灵敏度类型是固定的,不能改变。

软中断初始化流程

1、初始化异常处理

2、初始化中断控制器

3、注册异常处理回调函数到CPU

4、连接软中断信号与注册软中断回调函数

5、使能中断控制器中的软中断中断

6、使能异常处理

复制代码
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,CPU0_SW_INTR,(Xil_ExceptionHandler)cpu0IntrHandler,(void *)&ScuGic);
	if(status!=XST_SUCCESS){
		return XST_FAILURE;
	}

	Xil_ExceptionEnable();

	return XST_SUCCESS;

}

使用时:

例,中断cpu1

复制代码
XScuGic_SoftwareIntr(&ScuGic,CPU1_SW_INTR,XSCUGIC_SPI_CPU1_MASK);

XScuGic_SoftwareIntr(XScuGic *InstancePtr, u32 Int_Id, u32 Cpu_Id)

u32 Int_Id:中断目标的cpu的中断ID。

u32 Cpu_Id:(目的cpu号)Cpu_Id is the list of CPUs to send the interrupt.例如cpu1 XSCUGIC_SPI_CPU1_MASK

cpu0 XSCUGIC_SPI_CPU0_MASK

相关推荐
路灯上の马陈4 小时前
Java 内部类 学习笔记
笔记·学习
前进的李工4 小时前
Agent 学习笔记 12:Agent 的工具应该怎么设计
人工智能·笔记·学习·agent·工具调用·skill·工具设计
li星野5 小时前
从 DICOM 到声学属性学习记录:HU 值怎么变成密度和声速
学习
自信150413057595 小时前
重生之从0开始学习c++之——vector-中篇
c++·学习·算法
架构师伯子明5 小时前
ffmpeg学习4:opencv在音视频领域常用指令
opencv·学习·ffmpeg
Zwawa17 小时前
用两个按键做一个OLED菜单:先把选择和执行分开
c语言·单片机·嵌入式
wangqiaowq17 小时前
Ontology 学习
学习
choumou_M19 小时前
算法_1:由浅入深学习快速排序QuickSort
学习·算法·排序算法
心仪久了会沦陷21 小时前
C语言数据结构入门——树与二叉树详解:概念、堆实现与链式遍历
c语言·数据结构·算法
蒸蒸yyyyzwd1 天前
后端学习笔记 day111
笔记·学习