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

相关推荐
龚礼鹏18 分钟前
图像显示框架八——BufferQueue与BLASTBufferQueue(基于android 15源码分析)
android·c语言
WK100%31 分钟前
二叉树经典OJ题
c语言·数据结构·经验分享·笔记·链表
沉默-_-33 分钟前
力扣hot100-子串(C++)
c++·学习·算法·leetcode·子串
●VON1 小时前
从系统亮度监听到 UI 重绘:Flutter for OpenHarmony TodoList 深色模式的端到端响应式实现
学习·flutter·ui·openharmony·布局·von
新-code1 小时前
ros学习
学习·机器人
yi.Ist2 小时前
关于若干基础的几何问题
c++·学习·算法·计算几何
曦月逸霜2 小时前
深入理解计算机系统——学习笔记(持续更新~)
笔记·学习·计算机系统
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 43--添加allure测试报告显示信息和其他封装方法
python·学习·测试工具·allure
curry____3032 小时前
数据结构学习笔记
数据结构·笔记·学习
宫瑾3 小时前
【C语言】嵌入式C加强学习
java·c语言·学习