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

相关推荐
承渊政道2 小时前
动态内存管理
c语言·c++·经验分享·c#·visual studio
Main. 242 小时前
从0到1学习Qt -- 创建第一个Hello World项目
学习
壹号用户2 小时前
python学习之生成器&三者关系
学习
new coder2 小时前
[c++语法学习]Day10:c++引用
开发语言·c++·学习
Narcissiffo3 小时前
【C语言】str系列函数
c语言·开发语言
星域智链3 小时前
宠物智能用品:当毛孩子遇上 AI,是便利还是过度?
人工智能·科技·学习·宠物
呱呱巨基3 小时前
vim编辑器
linux·笔记·学习·编辑器·vim
hqyjzsb3 小时前
2025年市场岗位能力重构与跨领域转型路径分析
c语言·人工智能·信息可视化·重构·媒体·改行学it·caie
"菠萝"3 小时前
C#知识学习-017(修饰符_6)
学习·c#
早睡冠军候选人4 小时前
Ansible学习----Ansible Playbook
运维·服务器·学习·云原生·容器·ansible