天马行空 PCI理解
1.访问PCI设备的寄存器
第一种:
首先OUTBOUND寄存器映射,CPU通过访问主存储器,就可以访问PCI设备的寄存器
第二种
首先INBOUND寄存器映射,这时通过处理器的dma控制器,可以访问PCI设备的寄存器
2.主存储器与PCI设备内存空间数据交换
第一种 使用PCI设备的dma控制器
首先访问PCI设备的寄存器(dma controller register即用到了1.),设置好src、dst和size,就可以是实现主存储器和PCI内存空间数据交互。
第二种 使用处理器的dma控制器
INBOUND映射,然后通过处理器的dma控制器,实现数据交换
注意这个是系统实现的dma控制器,就是src=memory addr,dst=PCI bus addr。当系统发送dma开始时,系统会自动发出突发模式的PCI信号。
总结前两种方法:其实基于PCI总线的dma就是上面两类,系统dma和总线主控dma(主要在PCI设备里)
第三种 处理器通过IO直接访问PCI设备的内存空间
3.PCI payload
这个可以通过network payload理解,网络包最大payload(有效负荷)为1514.
而PCI总线payload可以分为256、512和1024等几种情况。
4.PCI总线信号
转载地址:http://blog.sina.com.cn/s/blog_6472c4cc0100qcy4.html
HOST桥可以是PCI主设备,主动发送请求。(CPU访问PCI目标设备,即处理器到PCI设备的数据传送)
Host桥也可以为PCI从设备,被动接受数据。(PCI主设备访问主存储器,即PCI设备到存储器的数据传送),例如PCI9052
PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备。这些PCI设备通过一系列信号与PCI总线相连,这些信号由地址/数据信号、控制信号、仲裁信号、中断信号等多种信号组成。
PCI总线是一个同步总线,每一个设备都具有一个CLK信号,其发送设备与接收设备使用这个CLK信号进行同步数据传递。PCI总线可以使用33MHz或者66MHz的时钟频率,而PCI-X总线可以使用133MHz、266MHz或者533MHz的时钟频率。
除了RST#、INTA~D#、PME#和CLKRUN#等信号之外,PCI设备使用的绝大多数信号需要与CLK信号同步。其中RST#是复位信号,PCI设备使用INTA~D#信号进行中断请求。本篇并不关心PME#和CLKRUN#信号。
1.2.1 地址和数据信
C/BE[3:0]# |
命令类型 |
说明 |
0000 |
Interrupt Acknowledge |
中断响应总线事务读取当前挂接在PCI总线上的中断控制器的中断向量号。目前大多数处理器系统的中断控制器都不挂接在PCI总线上,因此这种总线事务很少被使用。 |
0001 |
Special Cycle |
HOST主桥可以使用Special Cycle事务在PCI总线上,进行信息广播。 |
0010 |
I/O Read |
HOST主桥可以使用该总线事务对PCI设备的I/O地址空间进行读操作。目前多数PCI设备都不支持I/O地址空间,而仅支持存储器地址空间,但是仍有部分PCI设备同时包含I/O地址空间和存储器地址空间。 |
0011 |
I/O Write |
对PCI总线的I/O地址空间进行写操作。 |
0100 |
Reserved |
保留 |
0101 |
Reserved |
保留 |
0110 |
Memory Read |
HOST主桥可以使用该总线事务对PCI设备的存储器空间进行读操作。PCI设备也可以使用该总线事务读取处理器的存储器空间。 |
0111 |
Memory Write |
HOST主桥可以使用该总线事务对PCI设备的存储器空间进行写操作。PCI设备也可以使用该总线事务向处理器的存储器空间进行写操作。 |
1000 |
Reserved |
保留 |
1001 |
Reserved |
保留 |
1010 |
Configuration Read |
HOST主桥可以对PCI设备的配置空间进行读操作。每一个PCI设备都有独立的配置空间。在多功能PCI设备中,每一个子设备(Function)也有一个独立的配置空间。该总线事务只能由HOST主桥发出,PCI桥可以转发该总线事务。 |
1011 |
Configuration Write |
HOST主桥对PCI设备的配置空间进行写操作。 |
1100 |
Memory Read Multiple |
HOST主桥可以使用该总线事务对PCI设备的存储器空间进行多行读操作,这种操作并不多见。该总线事务的主要用途是供PCI设备使用,读取主存储器。这个读操作与Memory Read操作(C/BE[3:0]为0x0110时)略有不同,详见第3.4.5节。 |
1101 |
Dual Address Cycle |
PCI总线支持64位地址,处理器或者其他PCI设备访问64位PCI总线地址时,必须使用双地址周期产生64位的PCI总线地址。PCI设备使用DMA读写方式访问64位的存储器地址时,也可以使用该总线事务。 |
1110 |
Memory Read Line |
HOST主桥可以使用该总线事务对PCI设备的存储器空间进行单行读操作,这种操作并不多见。该总线事务的主要用途是供PCI设备使用,读取主存储器。详见第3.4.5节。 |
1111 |
Memory Write and Invalidate |
存储器写并无效操作,与存储器写不同,PCI设备可以使用该总线事务对主存储器空间进行写操作。该总线事务将数据写入主存储器的同时,将对应Cache行中的数据“使无效”,详见第3.3.4节。 |
1.2.2 接口控制信号
PCI主设备PCI Master又叫PCI Initiator PCI 发起者,PCI从设备 PCI slave-------PCI target(PCI目标设备)
在PCI总线中,接口控制信号的主要作用是保证数据的正常传递,并根据PCI主从设备的状态,暂停、终止或者正常完成当前总线事务,其主要信号如下。
linux应用在pci_set_master函数,即PCI设备为总线主控设备,使用PCI设备中的dma控制器
该信号可以和IRDY#信号联合使用,在PCI总线事务上插入等待周期,对PCI总线的数据传送进行控制。
而Target Abort表示在数据传送中出现错误。处理器系统必须要对这种情况进行处理。在PCI总线中,出现Abort一般意味着当前PCI总线域出现了较为严重的错误。
IDSEL信号与PCI设备的设备号相关,相当于PCI设备配置空间的片选信号,这部分内容将在第2.4.4节中详细介绍。
1.2.3 仲裁信号
在一个处理器系统中,一条PCI总线可以挂接PCI主设备的数目,除了与负载能力相关之外,还与PCI总线仲裁器能够提供的仲裁信号数目直接相关。
1.2.4 中断请求等其他信号
在x86结构CPU的个人计算机下,由主CPU发起读操作访问PCI目标设备时,不能进行突发读操作,这是由于个人计算机启动时BIOS将PCI设备映射到非Cache存储器中,会出现读操作阻塞。对于突发写操作,也存在同样的问题,也就是说在PC环境下开发基于PCI的产品,PC机不支持突发传输。(个人理解为是IO模式)
为了获得高的数据传输率,就必须使用PCI主桥设计PCI卡,并在DMA模式下操作。
天马行空 PCI理解相关推荐
- 导数与微分的知识点思维导图_高中物理思维导图,高中三年知识点一个不漏
物理作为学科当中的重中重,尤其是新高考来临后,物理也是广大考生的难点.如何快捷高效的掌握物理知识点是高考复习的重点之一. 作者:胡未名 链接:https://www.zhihu.com/questio ...
- 《机器学习方法(第三版)—— 李航》学习笔记(一)附代码
目录 前言 一.第一章 机器学习及监督学习概论 1.机器学习 实现机器方法的步骤 机器学习的研究 2.机器学习的分类 基本分类 二.第二章 感知机 1.感知机模型 2.感知机学习策略 感知机学习策略 ...
- wcdma与LTE的区别
CDMA2000.WCDMA和TD-SCDMA都是3G的空中接口标准,在接入的标准是不一样. H/V&jTy 其中WCDMA采用的是FDD,不需要GPS的支持: TD-SCDMA采用的是TDD ...
- Android附近基站+Wifi+IP+GPS多渠道定位方案
wifi定位wiki:https://developers.google.com/maps/documentation/geolocation/intro 前言: 在移动客户端的开发中,地理位置定位是 ...
- 同步信号PSS , SSS
有几个疑问先抛出来:1.pss .sss是在P/S SCH 上传输,那么P/S SCH 和传输信道.物理信道有什么关系? 个人认为没有任何关系. 2.pss .sss是物理信号,那么物理信号和物理 ...
- PCI总线---深入理解PCI总线
补充: PCI/PCIe基础--配置空间: http://blog.csdn.net/jiangwei0512/article/details/51603525 8.1 深入理解PCI总线 8.1.1 ...
- 重磅 | 李飞飞最新演讲:ImageNet后,我专注于这五件事——视觉理解、场景图,段落整合、视频分割及CLEVR数据集
2017中国计算机大会(CNCC2017)于10月26日在福州海峡国际会展中心开幕,大会为期3天. 而就在今天上午,李飞飞.沈向洋.汤道生.马维英等重磅大咖纷纷登台演讲. 据悉,斯坦福大学人工智能实验 ...
- PCIe例程理解(一)用户逻辑模块(接收)仿真分析
前言 本文从例子程序细节上(语法层面)去理解PCIe对于事物层数据的接收及解析. 参考数据手册:PG054: 例子程序有Vivado生成: 为什么将这个内容写出来? 通过写博客,可以检验自己理解了这个 ...
- 深入理解SERDES接口
http://blog.sina.com.cn/s/blog_aec06aac01013m5g.html 理解SerDes www.blog.sina.com.cn/fpgatalk FPGA发展到今 ...
- 从需求的角度去理解Linux系列:总线、设备和驱动
<从需求的角度去理解Linux系列:总线.设备和驱动>是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇.这是作者精心撰写的经验总结,希望嵌 ...
最新文章
- 【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
- 我把负载均衡讲出了花,领导却不给我涨工资
- java代码编译时修改行为_GitHub - niuzhihua/AST_demo: 利用JavaParser框架在编译时修改语法树(源码)的 demo...
- 中小型研发团队架构实践三要点--转
- 按某列获取几行_机器学习获取数据难?别忘记特征工程
- python将小时数换成分钟_如何在Python中将datetime.timedelta转换为分钟、小时?
- idea 暂存文件或idea切换分支代码不见了
- php+控制器+数据库,Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法_PHP...
- JavaWEB开发的国际化
- java 线程map_map集合分割以及多线程处理数据
- webapi 参数的请求和接收
- Opera系统Oracle,超详细的酒店Opera系统中英讲解1
- python怎么导入sql数据库_如何用Python3写一段将Excel数据导入SQL数据库?
- English音标(全)与单词家园
- 红帽linux9.0安装教程,红帽linux9.0安装教程
- 姓名拼音首字母缩写_公司首字母缩写
- 超全面!Verilog入门到实战系列(1)
- Jmeter监控系统资源
- 2022安全员-C证试题模拟考试平台操作
- 《牛客刷verilog》Part III Verilog企业真题
热门文章
- 第三十一篇 -- 学习第六十八天打卡20190911
- php版本高无法删除栏目,phpcms不能删除栏目怎么办
- iMeta | 北大陈峰/陈智滨等发表口腔微生物组研究中各部位取样的实验方法(Protocol)...
- 嵌入式算法8---空间向量夹角公式及其应用
- Lucid Dream
- 用cpolar发布Ubuntu上的网页(2)
- 埃默里大学又一华人科学家被要求搬离实验室,当事人称“这是报复”
- oracle18c客户端,oracle--oracle18C软件安装(一)
- ida android so 断点,IDA Pro 7.0+调试Android so飘云整理(基于Android5.1.1)
- 告别飘云!飘云QQ核心技术人员正式声明退出开发[含全文]