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

相关推荐
春风解人意12 分钟前
从零开始学习嵌入式P32----网络基础之TCP
c语言·网络·学习·tcp/ip
传奇开心果编程2 小时前
【Rust入门知识点学与练】第21课:Trait 进阶 Advanced Traits
开发语言·学习·rust
水巷石子2 小时前
备考系统架构设计师第一天
学习·架构·软考·设计·考试
是隼人3 小时前
buuctf-pwn inndy_echo(32位fmt)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
xian_wwq4 小时前
【学习笔记】深度认知系列-第16讲-提示词工程
人工智能·笔记·学习
洛阳纸贵4 小时前
MATLAB-matlab基础知识
学习·算法·matlab
Vcaker4 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
刃神太酷啦4 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
留白_4 小时前
【tableau入门学习】5、筛选器、参考线和集
学习·tableau
youm20034 小时前
认识Redis
redis·笔记·学习