PCI 9054应用总结

news2024/9/25 9:31:13

1 PCI配置空间
1.1 BAR大小的确定
Linux kernel读取PCI  BARn表示的内存长度时,先直接读取BARn的值,这个就是地址,然后再向BARn写入0xffff,ffff,再读取BARn的值就是需要的内存长度(忽略bit3到bit0的处理),但是此时由于BARn的值已经变成长度了,所以还需要将第一步读取出来的地址再写回BARn。
- 如果可操作的最低位为bit12,那么BAR可申请的最小地址空间大小为4KB(2^12)
- 如果可操作的最低位为bit20,则该BAR可申请的最小地址空间大小为1MB(2^20)

1.2 Linux pcibios_init
x86 BIOS专门提供了针对PCI总线的操作,这些操作里就包括了总线枚举的整个过程,Linux kernel中的宏CONFIG_PCI_BIOS。在系统加电以后自检时,就会完成对PCI总线的枚举,之后Linux对PCI配置空间的访问都是通过BIOS调用的形式进行,提供有这些功能和服务的BIOS就称之为PCI BIOS 。需要注意的是Linux x86_64是不采用PCI BIOS访问PCI配置空间的,而是内核实现了直接访问PCI配置空间的函数(CONFIG_PCI_DIRECT)。

pcibios_init()的第一个功能是在内存中找到BIOS程序的代码(参考函数pci_find_bios),然后将调用BIOS例程的读写PCI配置空间的代码封装成函数赋值给pci_ops。

pci_ops里面的函数指针都是用来读写PCI配置空间的,把要读写的值和设备号告诉这些函数,在这些函数中调用了BIOS例程,并把这些值当作参数传给BIOS例程,BIOS再根据设备号和要读写的值来进行操作。所以Linux x86驱动程序中pci_read_config_byte()最终调用的是pci_bios_read_config_byte()。

zcat /proc/config.gz | grep PCI

2 PCI9054三种工作模式
M模式:直接为Motorola公司的MPC850和MPC860准备的非复用接口
C模式:地址、数据线不复用
J模式:地址数据线复用

Figure 2-1 PCI 9054 Internal Block Diagram

3 PCIBAR地址解析
BAR0:Memory映射;存放PCI9054中的Local Configuration Registers、Runtime Registers和DMA Registers在PCI总线中的地址映射
BAR1:IO映射;存放PCI9054中的Local Configuration Registers、Runtime Registers和DMA Registers在PCI总线中的地址映射
BAR2:BAR2 + offset = LAS0BA + offset;其中LAS0BA为Local Address Space 0/1 Base Address的缩写
BAR3:BAR3 + offset = LAS1BA + offset

如果主机要访问BAR2和BAR3,需要设置位于BAR0空间的LAS0BA和LAS1BA的bit0为1

4 Local寄存器访问
MCU拉低CCS#片选,MCU访问的地址符合:片选BASE + offset

5 DMA
5.1 DMA
DMA模式传输外接FIFO的数据:FIFO本身没有地址,在调用P9054DMAReadWriteBlock()等函数时Local地址的设置,利用PCI9054 的Local地址线的高位通过组合逻辑电路产生一个信号去控制FIFO上的允许信号,而低位地址线可以不接,这样只有在设定的地址范围内才会选中FIFO进行操作,这就等于产生了一个“片选”信号。 

5.2 showcase
PLX9056 for Fulcrum Microsystems switch FM2112.

6 开发工具
Juno WinDriver:可以自动生成inf文件和驱动框架
PlxMon

7 Abbreviations
FM2112: Fulcrum Microsystems switch IC, was acquired by Intel in July, 2011

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微波无源器件 3 一种用于Ka频带双极化波束形成网络的双模三路功分器

摘要: 本文给出了一种用于Ka频带的双极化工作的双模3路功分器的设计和性能。对有着三个输出端口的平衡地很好的功分的TE10和TE01模式和27.5-30GHz上优于-23dB的输入匹配可以获得相似的性能。与双模定向耦合器相连结,此三路功分器对于双极化波束形成网络具…

【Go】Go语言介绍与开发环境搭建

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Qt篇——Qt获取Windows电脑上所有外接设备的名称、物理端口位置等信息

我之前有发过一篇文章《Qt篇——获取Windows系统上插入的串口设备的物理序号》,文章中主要获取的是插入的USB串口设备的物理序号;而本篇文章则进行拓展,可以获取所有外接设备的相关信息(比如USB摄像头、USB蓝牙、USB网卡、其它一些…

膨胀腐蚀操作opencv dilate膨胀白膨胀,erode腐蚀是黑吃白。主要针对二值图

效果: 代码: import cv2 import numpy as np from matplotlib import pyplot as pltif __name__ "__main__":h 10w 10data np.random.normal(0, 1, [h, w]) # sigma, 2*sigma, 3*sigma之间的数的比例分别为0.68, 0.96&#…

甲骨文新财报云基建营收同比增长45%,与亚马逊AWS合作,盘后涨超9%

KlipC报道:当地时间9月9日,数据库软件与云服务龙头甲骨文发布截止8月份的2025财年第一财季财报,财报显示,营业收入133亿美元,同比增长7%;净利润 29.29 亿美元,同比增长21.03%。盘后大涨超9%。 …

C++ 第一阶段(基础语法)

c初识 创建项目 编写“HelloWorld”代码 #include <iostream> using namespace std; int main() {cout << "Hello World!\n"; }注释 单行注释 //表述信息 多行注释 /*表述信息*/ 变量 作用:给一段指定的内存空间起名&#xff0c;方便操作这段内存 语…

Tensorflow2如何读取自制数据集并训练模型?-- Tensorflow自学笔记13

一. 如何自制数据集&#xff1f; 1. 目录结构 以下是自制数据集-手写数字集, 保存在目录 mnist_image_label 下 2. 数据存储格式 2.1. 目录mnist_train_jpeg_60000 下存放的是 60000张用于测试的手写数字 如 : 0_5.jpg, 表示编号为0&#xff0c;标签为5的图片 6_1.jpg, 表示…

DGV结构变异数据库下载及bedToBigBed+bigBedToBed转换

DGV结构变异数据库通常用来过滤检测的CNV、Indels等结构变异信息&#xff0c;以达到去除假阳性的目的。 下载的bedToBigBed和bigBedToBed为二进制程序&#xff0c;已编译好&#xff0c;可以直接使用。 1. 基础软件和文件下载 # bedToBigBed下载 wget http://hgdownload.soe.…

PMP--一、二、三模--分类--14.敏捷--技巧--DoDDoR

文章目录 技巧DoD&DoR 二模14.敏捷--术语表--完成的定义DoD--Definition of Done--是指一个项目什么时候可以被认为是“完成”的标准&#xff0c;它可以包括各种质量和功能的具体要求。--它是团队需要满足的所有标准的核对单&#xff0c;只有可交付成果满足该核对单才能视为…

OPENAIGC开发者大赛企业组特等奖 | 集思科技-大品牌的AI直播团队产品提供商

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…

基于java+SpringBoot+Vue的教师工作量管理系统设计与实现

基于javaSpringBootVue的教师工作量管理系统设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台展示 前台展示模块主要面向教师用户&#xff0c;提供个人中心、课程信息管理、工作量管理等功能。教师可以查看自己…

如何更改磁盘卷标名称?

磁盘卷标&#xff08;Volume Label&#xff09;是用来标识和管理磁盘驱动器的名称&#xff0c;通常在文件资源管理器中显示。卷标有助于用户快速识别和区分不同的磁盘或分区。 为什么要更改磁盘卷标名称&#xff1f; 磁盘卷标作为磁盘的名字&#xff0c;可以帮助用户更容易地识…

YOLOv8改进 | 模块缝合 | C2f 融合RVB + EMA注意力机制【二次融合 + 结构图】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

我用「天工」给80后大叔做了节 AI 启蒙课

接连两天都是乌蒙蒙的&#xff0c;时不时也会下点淅淅沥沥的小雨。 一个十分要好的80后大叔频繁与我诉苦&#xff0c;最近他感觉要失业了&#xff0c;由于他所处的行业不景气&#xff0c;公司的业务频频下滑&#xff0c;这已经是半年里的第二次降薪了&#xff0c;很焦虑&#…

bat批处理无法显示中文或中文乱码解决办法

在BAT脚本中出现乱码的原因可能有以下几种情况&#xff1a; 编码格式错误&#xff1a;如果脚本文件的编码格式与操作系统或文本编辑器不兼容&#xff0c;就会导致乱码。可以尝试将脚本文件的编码格式改为ANSI、UTF-8或UTF-8 with BOM格式&#xff0c;然后重新保存并运行。假设…

解决Intel AC3160无线网卡 WIN11系统无法连接WIFI6路由器问题

这个网卡比较老了&#xff0c;支持不了wifi6的路由器&#xff0c;win7官方驱动没有更新到可以支持wifi6路由器的&#xff0c;导致有些网络搜索不到。所以要自己去更新驱动 驱动地址&#xff1a;https://driverpack.io/zh-cn/devices/wifi/intel/intel-r-dual-band-wireless-ac…

充分利用您的注册表单

建立受众群体一直是企业发展的重要组成部分&#xff0c;但近年来&#xff0c;如何通过定期发送内容邮件来保持受众的参与变得愈加重要。 在你开始为那个私人频道策划内容之前&#xff0c;需要让客户注册并同意深化你们之间的关系&#xff0c;这时注册表单优化就变得至关重要。…

LINUX操作基础+LINUX系统的文件操作命令

1、使用shutdown命令设定在800分钟之后关闭计算机。 sudo shutdown 800 2、分别使用命令man和help查看ls命令的帮助文档。 man ls ls --help 3、使用命令将当前计算机的主机名显示为IT。 sudo hostname IT 4、使用命令显示公元2024年8月的月历。 cal 08 2024 5、显示当前计…

【SQL笔试题】SN_1 连续登陆系列问题

简介 连续登陆天数场景描述是对一个特定情境或活动连续发生的天数进行详细的阐述。这种描述通常用于展示某个事件或活动的持续时间&#xff0c;以及它对参与者或环境产生的影响。 常见的应用场景&#xff1a; 用户留存分析&#xff1a;通过跟踪用户的连续登录天数&#xff0…

新华三H3CNE网络工程师认证—DHCP基本原理

DHCP报文交互一共有四个报文&#xff0c;分别是Discover、Offer、Request和Ack。DHCP Discover是客户端连入网络之后&#xff08;配的自动获取&#xff09;&#xff0c;会对外发送Discover&#xff0c;其实这个报文的作用可以理解为网络当中谁是服务器&#xff0c;用广播去发&a…