1、国嵌视频 5.6.1节 PCI总线
   http://www.iqiyi.com/w_19rrd5x7ql.html
1)PCI总线依赖PCI桥才能产生
2)只要挂到PCI总线上的都是PCI设备
   PCI桥,PCI-PCI桥,连接PCI总线的也是特殊的PCI设备。
3)PCI设备寻址
   每个PCI设备由一个总线号、设备号、和功能号组成。
   PCI规范允许一个系统最多拥有256条总线,每条总线最多带32个设备,每个设备可以是最多
   8个功能的多功能板。

2、国嵌视频 5.6.2节 PCI驱动程序设计
https://www.iqiyi.com/w_19rrd5x81d.html
1)调用 pcie_register_driver 时,就会遍历PCI总线上所有的PCI设备,找到这个注册的这个驱动能处理的设备,就会调用驱动的probe函数。 
也就是总线驱动模型的方式,从2.6内核版本开始。

2)怎么match,进入probe函数的
通过ID匹配。厂家和设备ID。    
一个驱动可以对应多个ID,也就是可能可以处理多个厂家的设备。

3)probe函数都做了什么事情
  使能PCI设备 pci_enable_device
  获取基地址  ioaddr = pci_resource_start  (基地址是物理地址)
  申请要使用的地址空间 pci_request_reglons
  获取中断号
  进行ioremap 物理地址映射成虚拟地址 ioaddr=(long)ioremap(ioaddr,0x400);

probe函数还可以完成对应功能驱动的初始化。初始化pci-dev设备结构体。

PCI驱动学习总结-国嵌视频相关推荐

  1. 国嵌视频光盘及源码网盘下载地址-续

    由于之前的115网盘不能下载了,现在给大家提供一个最新的链接. 第1天:ARM系统开发基础 http://pan.baidu.com/s/1bongEGv 第1天:硬件访问 http://pan.ba ...

  2. 国嵌linux内核编程,国嵌视频学习笔记---linux内核开发1

    一.linux内核简介 1.linux系统由两部分组成:内核空间和用户空间. 2.用户空间包括:用户应用程序和C库 3.内核空间包括:系统调用接口.内核和体系结构相关代码. 4.ARM处理器7种工作模 ...

  3. 国嵌linux内核编程,linux内核--那些年看国嵌视频学习

    1.linux系统构成 由用户空间和内核空间构成.其中用户空间由应用程序和C库:内核空间由系统调用接口.kernel.架构代码.硬件设备平台 为什么linux系统会被划分为用户空间和内核空间?处于安全 ...

  4. 【C语言学习】国嵌21__指针基础

    2019独角兽企业重金招聘Python工程师标准>>> 一.指针基础 变量只是一段存储空间的别名,那么是不是必须通过这个别名才可以使用这段存储空间?答案是否定的.我们还可以通过指针也 ...

  5. 再识PCI:一个PCI驱动实例

    之前写了第一篇关于PCI的文章,当时只是作为入门的接触笔记,后来对PCI又研究了一下,主要包括PCI设备的扫描过程及PCI驱动注册过程. 本文主要给出一个PCI实例,并在内核中做很多的打印以便跟踪其过 ...

  6. 国嵌Linux视频驱动开发

    1 Linux PCI.串口驱动程序 1.1 PCI总线概述 总线概念 总线是一种传输信号的信道;总线是连接一个或多个导体的电气连线.总线由电气接口和编程接口组成,我们重点关注编程接口. PCI概念 ...

  7. 学习国嵌嵌入式视频笔记

    本文中使用到的datasheet都来自国嵌开发板光盘,笔记也都摘抄自光盘视频 S5PV210_UM_REV1.1.pdf S5PV210_iROM_ApplicationNote_Preliminar ...

  8. Linux:驱动程序直接编译到内核(源自国嵌的视频教学)

    引子:前面的文章实现了可加载的内核模块,通过这个内核模块实现对PWM定时器的控制和中断处理程序的注册.这里讨论一下将内核模块直接编译进内核的过程,首先声明来源于国嵌的视频教学. 其实很简单,第一步把冰 ...

  9. 我的内核学习笔记6:PCI驱动probe的一点认知

    对于PCI的学习,在文章<初识PCI>和<再识PCI:一个PCI驱动实例>中有介绍,文中使用大量代码进行演示.但总觉得有些认知不到位.于是就再写一文. 一.PCI驱动一般框架 ...

  10. 关于国嵌 实验2 5 网卡驱动移植 网卡地址 的问题

    实验2.5 网卡驱动移植 网卡地址等几个宏的数值怎么得到的 实验2.5 网卡驱动移植中有几个宏 #define CONFIG_DM9000_BASE 0x20000300 #define DM9000 ...

最新文章

  1. NHibernate教程
  2. ip rule,ip route,iptables 三者之间的关系
  3. python线程暂停_关于多线程:如何使“停止”按钮终止已经在Tkinter中运行的“开始”功能(Python)...
  4. C语言中的位域 bit field [转]
  5. A*B Problem
  6. [JTA] Java事务api
  7. 非空验证方法(多值)和BindingResult提示验证信息
  8. php 非侵入式,Tideways和xhgui打造PHP非侵入式监控平台
  9. Linux VFS的主要的数据结构
  10. DBeaver执行SQL脚本
  11. jQuery 教程 jQuery入门学习教程
  12. Rational License Key Error的解决办法
  13. 《成都》钢琴谱,带指法和歌词
  14. 百万亚瑟王无法连接服务器请在信号良好的地方重试,叛逆性百万亚瑟王
  15. 入门级前端选手半路接手vue项目实录
  16. 禅道项目管理,带你避开项目管理中的那些坑
  17. 奇迹MU虚拟机 游戏多开无法登陆和登录错误的问题如何解决?
  18. 在ssd上win10和linux双系统,windows 10 ssd ubuntu hdd双系统
  19. 这家为AI for Science而生的新研究院,要让科研进入“安卓模式”
  20. 多种调度算法的平均周转时间算例

热门文章

  1. 一分钟快速理解:模拟信号和数字信号!
  2. 项目时间和本地时间差8小时的问题
  3. 2020高考数学:常用知识点公式第四章(文科)
  4. MFC程序阻止别的软件隐藏窗口,或拦截WM_SHOWWINDOW消息
  5. 阿里云宽带是怎么按流量进行计费的?
  6. PSQLException: ERROR: permission denied: no privilege to create a readable gpfdist(s) external table
  7. [动画特效] 炫彩界面库-动画特效来了,可实现各种网页特效v3.3.0
  8. 基于PT2001 的4缸发动机 DFI 控制讲解3 - DCDC部分
  9. Metro 风格应用的导航设计
  10. [原]最初的梦想---关于野猪和家猪