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

微知-linux内核中PCIe驱动扫描后驱动加载为什么有两种类型的resource?分别是什么?

分别是io资源 和 mem资源。
在pcie scan的后linux内核会遍历所有的bus和节点 根据每个设备中pcie的配置空间进行映射到内核的地址空间。
此时有两种映射方式

  • 一种是把地址空间映射到内核的io地址空间
  • 另一种是地址空间映射到内存

在PCIE的配置空间的bar(基础地址寄存器)空间里面 每一个伴都会告诉内核,他所需要的空间大小 以及它所使用的空间类型

因为当应用程序访问某个地址空间的时候 CPU访问地址的时候 通过host bridge发送地址,mmu会自动过滤掉io空间的地址,经由pcie host bridge进行访问io设备的资源。

所以本文开始提出的在扫描中驱动加载显示bar资源的需要的两种内存类型,是设备用来表示它所使用的两种内存介质,一种是用自己的配置空间的地址,另外一种是使用物理内存的地址。

还有一些细节点

  • PCIe的host bridge 其实就是平时所说的rc(root complex)
  • rc的主要作用之一就是将pcie的访存(比如bdf号指定寄存器)转化为pcie的总线数据进行访问
  • rc的提供使用方法是提供一个address和data的操作接口,先制定address写入地址,总线根据地址进行片选,以后再读取要访问或者写入的数据
  • 另外,在bios或者uefi启动期间,系统会进行pca的设备扫描,然后将分配的地址写入到pcie配置空间。然后在linux启动之后再扫描PCIE的配置空间,读取相应的地址需求,从而进行相应的地址映射,或者地址分配

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JAVA后端程序拉取私人仓库的npm包并将该程序打包成jar包
  • C++学习笔记----4、用C++进行程序设计(五)---- 非复合与继承关系
  • react中的useCallback、useMemo、useRef 和 useContext
  • TypeScript 面试题汇总
  • 多系统萎缩不慌张,这些维生素是你的“守护神”✨
  • RabbitMQ(面试篇)
  • qt圆环饼状图,非常小的窗口都能显示
  • 探索AI大模型量化前沿技术:引领智能计算新潮流
  • SD Maid SE v1.2.3 — 老牌清理工具全面升级,更简洁,更流畅了
  • 如何使用 SQL Server 内置函数实现MD5加密
  • WebSocket的应用场景与案例解析
  • 自然语言处理系列三十三》 语义相似度》同义词词林》算法原理
  • 构建高效的串行任务执行器:SerialExecutor深度解析
  • 长视频生成研究的挑战、方法与前景
  • Nginx知识详解(理论+实战更易懂)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • HTTP中的ETag在移动客户端的应用
  • JavaScript异步流程控制的前世今生
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • php中curl和soap方式请求服务超时问题
  • python_bomb----数据类型总结
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vuex 学习笔记 01
  • Vue全家桶实现一个Web App
  • 从重复到重用
  • 浮动相关
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 入口文件开始,分析Vue源码实现
  • 使用 @font-face
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • ​补​充​经​纬​恒​润​一​面​
  • # 数仓建模:如何构建主题宽表模型?
  • #Linux(Source Insight安装及工程建立)
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (02)Unity使用在线AI大模型(调用Python)
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C11) 泛型表达式
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计高校学生选课系统
  • (三)mysql_MYSQL(三)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)fock函数详解
  • .form文件_一篇文章学会文件上传
  • .gitignore文件设置了忽略但不生效
  • .NET 5种线程安全集合
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net Winform开发笔记(一)
  • .NET 回调、接口回调、 委托
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET建议使用的大小写命名原则