首页 > 其他分享 >AMD Xilinx AXI Interrupt Controller 中断优先级

AMD Xilinx AXI Interrupt Controller 中断优先级

时间:2023-05-17 15:56:49浏览次数:46  
标签:优先级 中断 interrupts AMD interrupt Controller Interrupt AXI

中断优先级

AXI Interrupt Controller支持中断优先级。 在Vivado Block Design中, bit-0连接的中断优先级最高, 越靠近bit-0的中断优先级最高。

Interrupt priority

AXI Interrupt Controller的手册pg099中的描述如下:

Priority between interrupt requests is determined by vector position. The least significant bit (LSB, in this case bit 0) has the highest priority.

Intr(0) is always the highest priority interrupt and each successive bit to the left has a corresponding lower interrupt priority.

中断嵌套

要使用中断优先级,通常也要使能中断嵌套(Nested Interrupts)。在Vivado Block Design中, 配置AXI Interrupt Controller时,在“advanced”选项中,要选择“Interrupt Level Register” 。

Interrupt Level Register

AXI Interrupt Controller的手册pg099中的描述如下:

Nested Interrupts
The core provides support for nested interrupts, by implementing an Interrupt Level 
Register. This can be used by software to prevent lower priority interrupts from occurring 
when handling an interrupt, thus allowing interrupts to be enabled during interrupt 
handling to immediately take a higher priority interrupt. Software must save and restore 
the Interrupt Level Register and return address.
Because the processor jumps directly to the unique Interrupt vector address to service a 
particular interrupt when using fast interrupt mode, the user interrupt service routine code itself must save and restore the Interrupt Level Register and Return Address in this case. In 
normal interrupt mode, this is handled by the software driver.

选择“Interrupt Level Register” 后,中断处理代码会保存和恢复r14,并且在进入设备的ISR之前会使能中断。 具体代码请查看XIntc_DeviceInterruptHandler( )。

Xintc.h中的说明如下:

For nested interrupts, XIntc_DeviceInterruptHandler saves
microblaze r14 register on entry and restores on exit. This is
required since compiler does not support nesting. It enables
Microblaze interrupts after blocking further interrupts from
the current interrupt number and interrupts below current
interrupt priority by writing to Interrupt Level Register of
INTC on entry. On exit, it disables microblaze interrupts and
restores ILR register default value(0xFFFFFFFF)back. It is
recommended to increase STACK_SIZE in linker script for nested
interrupts.

标签:优先级,中断,interrupts,AMD,interrupt,Controller,Interrupt,AXI
From: https://www.cnblogs.com/hankfu/p/17409000.html

相关文章

  • flutter系列之:使用AnimationController来控制动画效果
    目录简介构建一个要动画的widget让图像动起来总结简介之前我们提到了flutter提供了比较简单好用的AnimatedContainer和SlideTransition来进行一些简单的动画效果,但是要完全实现自定义的复杂的动画效果,还是要使用AnimationController。今天我们来尝试使用AnimationController来......
  • java8 lamda表达式
    list分组1.多字段联合,分组list.stream().collect(Collectors.groupingBy(o->o.getSkuName()+"_"+o.getOeCode(),Collectors.toList()));2.求和计算 Integernum=list.stream().mapToInt(n->n.getNum()).sum();3.分组-排序list.stream().coll......
  • Intel(R) Ethernet Controller X710驱动升级
    环境CentOSLinuxrelease7.9.2009(Core)升级先查看原驱动版本[root@xcdcs~]#lspci|grepnet01:00.0Ethernetcontroller:IntelCorporationEthernetControllerX710for10GbESFP+(rev02)01:00.1Ethernetcontroller:IntelCorporationEthernetController......
  • AMD Xilinx SoC: 定制PetaLinux中的FSBL
    需求客户为AMDXilinxSoC创建了PetaLinux工程。需要定制PetaLinux中的FSBL。PetaLinux默认从内部指定的源取代码。取出FSBL代码使用命令“petalinux-devtoolmodifyfsbl-firmware”,可以取出FSBL代码到目录“components/yocto/workspace/sources/fsbl-firmware/”。FSBL的主......
  • AMD Xilinx AC701 单板运行IIC EEPROM例程
    概述AMDXilinxVitis内部集成了各种外设的例程,为工程师提供了快速上手的代码。AMDXilinx有很多开发板。各种单板的硬件参数不一定完全一致,有时需要根据单板硬件设计、Vivado中的BlockDesign设计,修改外设例程的参数。IICEEPROM例程更改。本文描述在AMDXilinxAC701单板运......
  • SpringBoot中@ControllerAdvice/@RestControlAdvice+@ExceptionHandler实现全局异常捕
    场景在编写Controller接口时,为避免接口因为未知的异常导致返回不友好的结果和提示。如果不进行全局异常捕获则需要对每个接口进行try-catch或其他操作。 可以对Controller进行全局的异常捕获和处理,一旦发生异常,则返回通用的500响应码与通用错误提示。并将异常发生的具体的......
  • AMD
    AMD全称为AsynchronousModuleDefinition,即异步模块定义规范。模块根据这个规范,在浏览器环境中会被异步加载,而不会像CommonJS规范进行同步加载,也就不会产生同步请求导致的浏览器解析过程阻塞的问题了//main.jsdefine(["./print"],function(printModule){ pri......
  • STATA 按STKCD YEAR 合并所有的kamd
    uselinshi0510,clearbysstkcdyear:genbz=_nlocalk=_Nlocalaa""localbb""localdd""genbzz=""formatbzz%200sforvaluesi=1/`k'{localaa=stkcd[`i']localbb=year[`i']ifbz[`i&......
  • Solar_Charge_Controller:基于MATLAB/Simulink的太阳能光伏MPPT控制蓄电池充电仿真模型
    Solar_Charge_Controller:基于MATLAB/Simulink的太阳能光伏MPPT控制蓄电池充电仿真模型。其中,光伏MPPT控制采用扰动观测法(P和O法),蓄电池充电采用三阶段充电控制。仿真模型附加一份仿真说明文档,便于理解和修改参数。仿真条件:MATLAB/SimulinkR2015bID:8960649953263742......
  • LLM as Controller:AI操作系统之源
    受到HuggingGPT、VisualChatGPT、AutoGPT等项目的启发,本文试图从LLMasController的统一视角来看LLM的能力边界。LLMasController我认为ChatGPT、GPT-4等LLM模型最强的能力其实是语言理解力,咱不需要让一个LLM做任何事情,只需要它能够准确无误的理解人类说的语言,再按照人类的......