当前位置: 首页 > news >正文

Vivado SDK 中 XScuGic(ARM Cortex-A9 SCU GIC 中断控制器)相关函数

1. XScuGic_CfgInitialize

  • 函数原型s32 XScuGic_CfgInitialize(XScuGic *InstancePtr, XScuGic_Config *ConfigPtr, u32 EffectiveAddr)
  • 功能:初始化中断控制器实例,将硬件配置与驱动程序关联。
  • 参数
    • InstancePtr:XScuGic 结构体指针(中断控制器实例)。
    • ConfigPtr:XScuGic_Config 结构体指针(包含硬件配置信息,如基地址)。
    • EffectiveAddr:中断控制器的有效基地址(通常从 ConfigPtr 中获取)。
  • 返回值XST_SUCCESS(初始化成功)或XST_FAILURE(失败)。
  • 说明:必须在使用其他中断控制器函数前调用,完成驱动与硬件的绑定。

2. XScuGic_Connect

  • 函数原型s32 XScuGic_Connect(XScuGic *InstancePtr, u32 Int_Id, Xil_InterruptHandler Handler, void *CallBackRef)
  • 功能:将中断 ID 与对应的中断处理函数绑定,建立中断源与处理逻辑的关联。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Int_Id:中断源 ID(由硬件定义,如 GPIO 中断 ID)。
    • Handler:中断处理函数指针(中断触发时执行的函数)。
    • CallBackRef:传递给中断处理函数的参数(通常为外设实例指针)。
  • 返回值XST_SUCCESS(绑定成功)或错误码(失败)。
  • 说明:每个中断源需单独绑定,多次调用可绑定不同中断。

3. XScuGic_Disconnect

  • 函数原型void XScuGic_Disconnect(XScuGic *InstancePtr, u32 Int_Id)
  • 功能:解除中断 ID 与处理函数的绑定,将该中断的处理函数设为默认空函数。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Int_Id:需解除绑定的中断 ID。
  • 说明:用于移除中断处理逻辑,避免中断触发时执行无效操作。

4. XScuGic_Enable

  • 函数原型void XScuGic_Enable(XScuGic *InstancePtr, u32 Int_Id)
  • 功能:使能指定的中断源,允许该中断触发 CPU 中断。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Int_Id:需使能的中断 ID。
  • 说明:中断默认是禁用的,需显式调用此函数开启。

5. XScuGic_Disable

  • 函数原型void XScuGic_Disable(XScuGic *InstancePtr, u32 Int_Id)
  • 功能:禁用指定的中断源,阻止该中断触发 CPU 中断(但不清除已产生的中断标志)。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Int_Id:需禁用的中断 ID。
  • 说明:常用于中断处理过程中临时关闭中断,避免嵌套或重复触发。

6. XScuGic_SoftwareIntr

  • 函数原型s32 XScuGic_SoftwareIntr(XScuGic *InstancePtr, u32 Int_Id, u32 Cpu_Id)
  • 功能:软件触发指定的中断,模拟硬件中断信号。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Int_Id:需软件触发的中断 ID。
    • Cpu_Id:目标 CPU 核心 ID(多核系统中指定触发哪个核心的中断)。
  • 返回值XST_SUCCESS(触发成功)或错误码(失败)。
  • 说明:用于软件调试或模拟硬件事件触发中断。

7. XScuGic_SetPriorityTriggerType

  • 函数原型void XScuGic_SetPriorityTriggerType(XScuGic *InstancePtr, u32 Int_Id, u8 Priority, u8 Trigger)
  • 功能:设置中断的优先级和触发类型(电平触发 / 边沿触发)。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Int_Id:目标中断 ID。
    • Priority:优先级(0~255,值越小优先级越高)。
    • Trigger:触发类型(如XGPIOPS_IRQ_TYPE_EDGE_FALLING表示下降沿触发)。
  • 说明:需在使能中断前配置,确保中断触发方式符合硬件需求。

8. XScuGic_GetPriorityTriggerType

  • 函数原型void XScuGic_GetPriorityTriggerType(XScuGic *InstancePtr, u32 Int_Id, u8 *Priority, u8 *Trigger)
  • 功能:获取指定中断当前的优先级和触发类型。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Int_Id:目标中断 ID。
    • Priority:输出参数,用于存储获取的优先级。
    • Trigger:输出参数,用于存储获取的触发类型。
  • 说明:用于调试或动态调整中断配置前读取当前状态。

9. XScuGic_InterruptMaptoCpu

  • 函数原型void XScuGic_InterruptMaptoCpu(XScuGic *InstancePtr, u8 Cpu_Id, u32 Int_Id)
  • 功能:将指定中断映射到目标 CPU 核心(多核系统中使用)。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Cpu_Id:目标 CPU 核心 ID(如 0 或 1)。
    • Int_Id:需映射的中断 ID。
  • 说明:在多核 FPGA 设计中,用于分配中断到特定 CPU 处理。

10. XScuGic_InterruptUnmapFromCpu

  • 函数原型void XScuGic_InterruptUnmapFromCpu(XScuGic *InstancePtr, u8 Cpu_Id, u32 Int_Id)
  • 功能:解除中断与目标 CPU 核心的映射关系。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Cpu_Id:需解除映射的 CPU 核心 ID。
    • Int_Id:目标中断 ID。
  • 说明:与XScuGic_InterruptMaptoCpu配合使用,用于动态调整中断分配。

11. XScuGic_UnmapAllInterruptsFromCpu

  • 函数原型void XScuGic_UnmapAllInterruptsFromCpu(XScuGic *InstancePtr, u8 Cpu_Id)
  • 功能:解除所有中断与目标 CPU 核心的映射关系。
  • 参数
    • InstancePtr:中断控制器实例指针。
    • Cpu_Id:目标 CPU 核心 ID。
  • 说明:用于多核系统中快速清除某 CPU 的所有中断映射。

12. XScuGic_Stop

  • 函数原型void XScuGic_Stop(XScuGic *InstancePtr)
  • 功能:停止中断控制器,检查并处理当前 CPU 的中断目标寄存器。
  • 参数InstancePtr:中断控制器实例指针。
  • 说明:通常用于系统关闭或复位前的清理操作。

13. XScuGic_SetCpuID

  • 函数原型void XScuGic_SetCpuID(u32 CpuCoreId)
  • 功能:设置全局变量CpuId,指定当前操作的 CPU 核心 ID。
  • 参数CpuCoreId:CPU 核心 ID(如 0 或 1)。
  • 说明:在多核系统中,用于标识当前代码运行的 CPU 核心。

14. XScuGic_GetCpuID

  • 函数原型u32 XScuGic_GetCpuID(void)
  • 功能:获取当前设置的 CPU 核心 ID(通过XScuGic_SetCpuID配置)。
  • 返回值:当前 CPU 核心 ID。
  • 说明:用于多核系统中判断代码运行在哪个核心上。

文章转载自:

http://AH74xQ6p.qqhmg.cn
http://PmN2HUbn.qqhmg.cn
http://6SzXxw87.qqhmg.cn
http://CMfj25Cp.qqhmg.cn
http://pP5adTqd.qqhmg.cn
http://YvGjqO0B.qqhmg.cn
http://GxFUbais.qqhmg.cn
http://RhJtqTca.qqhmg.cn
http://v8Bklth7.qqhmg.cn
http://2sMrQu2x.qqhmg.cn
http://yr0a2qXh.qqhmg.cn
http://Qxa4Bg6B.qqhmg.cn
http://Su0lWNeL.qqhmg.cn
http://gsScyLRR.qqhmg.cn
http://ei9e8gzC.qqhmg.cn
http://ruZFrPJG.qqhmg.cn
http://5rlplChA.qqhmg.cn
http://Cz5qCnSO.qqhmg.cn
http://erbGQH3p.qqhmg.cn
http://E5eC5E0R.qqhmg.cn
http://FrE3cWn5.qqhmg.cn
http://WbVvxHgZ.qqhmg.cn
http://GjXYfmHr.qqhmg.cn
http://NdWjviy7.qqhmg.cn
http://mXg1duSt.qqhmg.cn
http://TJqWxDUi.qqhmg.cn
http://eTCOq8Fd.qqhmg.cn
http://2X8fCs8i.qqhmg.cn
http://k3sryj7V.qqhmg.cn
http://c37Ozhgv.qqhmg.cn
http://www.dtcms.com/a/379946.html

相关文章:

  • 【学习K230-例程21】GT6700-UDP-Client
  • 考研408计算机网络近年第34题真题解析(2021-2024.34)
  • 安装vcenter6.7 第二阶段安装很慢 或卡在50%
  • 《赛事报名系统小程序》
  • 倍福PLC常见问题
  • 课前准备--解析空间转录组肿瘤微环境SNV(visium、stereo)
  • Linux下C语言实现HTTP+SQLite3电子元器件查询系统
  • 第四节 JavaScript——深入变量、作用域与内存管理
  • 淘客返利app后端系统架构设计:从数据一致性到高可用方案
  • 自动清除ROS日志方法汇总
  • GitHub 上整合深度学习 + 遥感数据集(或工具库/benchmark)的项目
  • 学习日记-JS+DOM-day54-9.12
  • 数据分析毕业论文题目推荐:精选选题清单
  • Apache Flink 从流处理基础到恰好一次语义
  • 第2篇:数据持久化实战
  • redis sentinel 与 clauster 的区别
  • Vue: 侦听器(Watch)
  • HTML 设计与使用入门
  • 【大数据专栏】流式处理框架-Apache Fink
  • 老项目CSS样式失效?调整css插件版本解决
  • Flink 实时流处理实战:电商实时大屏分析
  • ARM(7)IMX6ULL 按键控制(轮询 + 中断)优化工程
  • 基于STM32设计的青少年学习监控系统(华为云IOT)_282
  • Django全栈班v1.04 Python基础语法 20250912 上午
  • Vue3+ts使用oidc-client-ts
  • V少JS基础班之第八弹
  • webrtc弱网-AlrDetector类源码分析与算法原理
  • 鸿蒙Next Web渲染与布局详解:深入理解自适应布局与渲染模式
  • 猿辅导前端面试题及参考答案
  • 鸿蒙NEXT Web组件与JavaScript交互:打通原生与前端的桥梁