1.3 PCI&PCIE MSI中断
来源:互联网 发布:泰瑞克埃文斯生涯数据 编辑:程序博客网 时间:2024/06/01 09:45
1、什么是MSI?(Message Signaled Interrupts)
用简单的一句话就可以说明msi的原理:cpu有一段特殊的寄存器空间,往这个寄存器里面写数据,就会触发cpu的中断。pci设备经过配置以后,一旦需要上报中断就会往cpu这种寄存器里面写一个值,触发cpu的中断。
2、PCI/PCIE Device侧关于MSI的配置:
关于MSI特性,PCI提供了一组Capability Struct,其Capability ID = 5。软件需要根据Capabilities List在40-FF pci配置空间中,找到MSI的Capability Struct。
MSI Capability Struct的具体寄存器定义如下:
可以看到,MSI Capability Struct支持32bit/64bit两种模式。需要重点关注就两个寄存器Message Address和Message Data。
寄存器Message Address: 系统软件配置此寄存器为分配给该PCI设备的,CPU可产生中断的寄存器的地址。
寄存器Message Data : 系统软件配置此寄存器为符合CPU中断号解析规则的内容,内容由CPU关注,pci device不关注其内容,可以配置对低几位可自动修改,从而可以产生多个消息。
3、CPU侧关于MSI的配置:
下图为系统IOH桥片中,写操作会引起中断的寄存器区域,即FEE00000到FEF00000区域:
4、实例:
可以读出ufca前插板fpga的配置寄存器来研究其MSI寄存器的配置:
5、MSI和INTx的区别:
MSI和INTx中断是pci/pcie总线的两种中断方式。
在PCI总线里面INTx中断是由四条可选的中断线决定的,这种中断方式是共享式的,所有的pci设备把中断信号在一条中短线上相与,再上报给cpu,cpu收到中断以后再查询具体是哪个设备产生了中断。
在PCIE总线里面已经没有了实体的INTx物理中断线了,PCIE标准使用专门的Message事务包来实现INTx中断,这是为了兼容以前的PCI软件。
MSI中断在PCI和PCIE中的机制都是一样的,往配置的CPU中断寄存器里进行memory写操作,来产生中断。
对于PCI设备来说,INTx和MSI中断两者只能选择一种,不能同时使用。比较来说,INTx是共享式的,cpu相应中断后还需要查询具体中断源,效率比较低。所以推荐使用MSI中断。
- 1.3 PCI&PCIE MSI中断
- PCI PCIE MSI
- PCIE设备MSI 中断配置流程
- PCI-E配置MSI中断流程解析
- PCI-E配置MSI中断流程解析
- PCI-E配置MSI中断流程解析
- PCI-E配置MSI中断流程解析
- PCIe学习笔记(21)--- 中断(2)---MSI
- PCIe学习笔记(22)--- 中断(3)---MSI-X
- PCI、PCIE
- PCIE MSI特性
- MSI中断
- PCI/PCIe基础
- linux pci/pcie驱动
- PCI/PCIE学习心得
- PCI中断
- PCI MSI MSI-X学习笔记
- PCI Express (PCIe or PCI-E)
- Leetocode之Find Duplicate File in System 问题
- Windows环境下Ctex+WinEdt Latex安装测试
- ros机器人的直行
- ROM、PROM、EPROM、EEPROM、Flash ROM分别指什么?
- 053 函数图形的描绘
- 1.3 PCI&PCIE MSI中断
- HDU-5023 线段树染色问题+延时标记
- vlc连接rtsp抓包分析
- Spring Boot参考教程(十)定时任务
- 上机练习2 类与对象2
- 利用cos 文本自动分类
- 敌兵布阵 HDU
- Basic queries in SQL Server
- 详解C语言可变参数va_list和vsnprintf及printf实现