社区
驱动程序开发区
帖子详情
请问PCIe BAR的prefetchable位软件可以修改吗
walkingman321
2019-09-10 04:55:22
最近研究pcie驱动,用lspci -vv看到这一行
Region 0: Memory at 83100000 (32-bit, non-prefetchable) [size=256K]
这个non-prefetchable是硬件决定的吗?还是我能通过软件把它设置成prefetchable?
谢谢!
...全文
336
回复
打赏
收藏
请问PCIe BAR的prefetchable位软件可以修改吗
最近研究pcie驱动,用lspci -vv看到这一行 Region 0: Memory at 83100000 (32-bit, non-prefetchable) [size=256K] 这个non-prefetchable是硬件决定的吗?还是我能通过软件把它设置成prefetchable? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Linux
PCIe
RC驱动分析[源码]
本文详细分析了RK3588平台的
PCIe
RC驱动实现,重点介绍了DesignWare IP的通用性及其在Linux内核中的驱动架构。内容涵盖设备树配置、probe入口函数、资源初始化流程、中断处理机制(包括sys中断和legacy中断)、链路训练过程(rk_
pcie
_establish_link)以及RC模式下的主机初始化(rk_
pcie
_host_init)。特别解析了
PCIe
空间映射机制,包括通过设备树ranges属性配置的I/O、MEM32、MEM64地址空间转换,以及MSI中断域初始化流程。最后阐述了
PCIe
设备枚举过程中资源分配、总线扫描和BAR空间配置的关键实现,为理解Linux
PCIe
子系统提供完整技术参考。
PCIE
的pre
fetch
able
和nonpre
fetch
able
的理解
在PCI设备驱动开发过程中,处理板载I/O和内存空间时,常常会遇到pre
fetch
able
和nonpre
fetch
able
两词,直译为可预取和不可预取。但是两者具体究竟是什么含义呢?在LDD3, Chapter 12: PCI Drivers一章找到了不错的解释,姑且一边翻译一边解读如下(原文:LDD3影印版p316,Accessing the I/O and Memory Spaces 下面一段...
PCIe
—预取和非预取
通过BAR请求内存资源的PCI Express Endpoint必须设置BAR的Pre
fetch
able
位
,除非该范围包含具有读副作用的空间或该EP不允许写合并的空间,例如,如果请求者请求从一个地址读取128个字节,则Completer可能也会预取下一个128字节,以便在被请求时将其放在手边以提高性能。这样的读取行为通常发生在具有特殊需求的设备上,例如DMA(Direct Memory Access)控制器,其需要获取实时的、即时的数据,而不需要进行缓存.强烈建议映射到内存空间的资源尽可能设计为可预取的。
PCIE
BAR空间
PCIE
应用程序编程,首先就要理清
PCIE
BAR空间到底说的是什么。在
PCIE
配置空间里,0x10开始后面有6个32
位
的BAR寄存器,BAR寄存器中存储的数据是表示
PCIE
设备在
PCIE
地址空间中的基地址,注意这里不是表示
PCIE
设备内存在CPU内存中的映射地址,关于这两者的关系以及两者如何转换后面会有介绍。 1,BAR寄存器的数据格式,BAR寄存器表示的设备存储类型有memory s
PCIe
学习笔记(13)--- Pre
fetch
able
and Non-Pre
fetch
able
Memory
MMIO(memory mapped IO) 分为两种类型 一,PRE
FETCH
ABLE
二,NON-PRE
FETCH
ABLE
PRE
FETCH
ABLE
MMIO有以下特点: 一,读没有副作用 二,多笔写事务可以合并为一笔 PRE
FETCH
ABLE
读,可以允许提前CACHE一些数据 某些寄存器类型的MMIO,不适合作为PRE
FETCH
ABLE
,因为读有副作用,如状态
驱动程序开发区
1,324
社区成员
2,170
社区内容
发帖
与我相关
我的任务
驱动程序开发区
主要是开发驱动技术
复制链接
扫一扫
分享
社区描述
主要是开发驱动技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章