PCI驱动基础 >> Linux设备驱动程序

俗话说的好,免费是最贵,闲暇是最累的,但是我自己选的路就要负责走完;
压力一天比一天重,当学习了理论却不知道该如何输出的时候,会有一种油然而生的挫败感;
看来必须得调整自己的心态还是要调整学习方法,如何才能用最好状态去接受新的知识;

[0x100]概念与特征

[0x110] PCI接口特征

概述 描述
更高传输性能 由于拥有 66MHz~133MHz 的时钟频率传输速率、32/64位内存地址空间
替代ISA设备 用于计算机与外设通讯的接口
平台无关性 接口板自动探测、无需初始化配置,多功能中断线明确不冲突
多设备支持 基于PCI域,最多支持256域 每个域支持32 个设备
存在配置空间 通过普通I/O 寻址访问配置空间, 每个PCI设备拥有256K大小配置空间

黑了一张书上的图图,描述了 PCI到底处于总线架构什么位置这里黑了一张书上的图图,描述 PCI到底处于总线架构什么位置,以及怎么连接到CPU的

[0x120] PCI接口寻址

  1. 8位总线编号 + 8 位设备/功能编号
  2. 8位总线编号 + 8 位设备编号 + 4位功能编号 [图示]
  3. 16位PCI域号 + 8 位总线编号 + 5 位设备编号 + 3位功能编号
  4. 总线共享空间 :PCI内存映射、PCI I/O端口
  5. 总线私有空间 :配置寄存器
    在这里插入图片描述

[0x200] PCI设备相关信息

[0x210]配置空间

  • PCI 设备引导阶段只响应配置事务,因为配置空间没有初始化成功时,不知道存在哪些设备;
  • 所有设备中断为禁用状态;
Created with Raphaël 2.2.0 开始 [BOOT] 读取固件读取PCI控制器寄存器,初始化PCI配置空间 [BOOT] 固件读取设备配置寄存器,映射设备到内核空间 [BOOT] 映射设备 更新sysfs 目录中的PCI总线信息 结束

在这里插入图片描述前64字节的配置空间

  • PCI 配置寄存器的字节序是小端字节序,如果使用大端的系统时,要注意访问问题;
  • PCI 共有256k的配置空间,前64位标准的寄存器空间,后面空间为外设卡修改
  • 16 位厂商ID [0x1 0x2]+ 16位设备ID[0x3 0x4]==设备标识符;
  • 24 位类代号 高8位为所属主类;
  • 16 位子系统厂商ID + 16位子系统设备ID == 子系统标识符,用于设备PCI设备具体型号区别;
#include <linux/mod_devicetable.h>
/*驱
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值