PCI驱动学习总结-国嵌视频
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驱动学习总结-国嵌视频相关推荐
- 国嵌视频光盘及源码网盘下载地址-续
由于之前的115网盘不能下载了,现在给大家提供一个最新的链接. 第1天:ARM系统开发基础 http://pan.baidu.com/s/1bongEGv 第1天:硬件访问 http://pan.ba ...
- 国嵌linux内核编程,国嵌视频学习笔记---linux内核开发1
一.linux内核简介 1.linux系统由两部分组成:内核空间和用户空间. 2.用户空间包括:用户应用程序和C库 3.内核空间包括:系统调用接口.内核和体系结构相关代码. 4.ARM处理器7种工作模 ...
- 国嵌linux内核编程,linux内核--那些年看国嵌视频学习
1.linux系统构成 由用户空间和内核空间构成.其中用户空间由应用程序和C库:内核空间由系统调用接口.kernel.架构代码.硬件设备平台 为什么linux系统会被划分为用户空间和内核空间?处于安全 ...
- 【C语言学习】国嵌21__指针基础
2019独角兽企业重金招聘Python工程师标准>>> 一.指针基础 变量只是一段存储空间的别名,那么是不是必须通过这个别名才可以使用这段存储空间?答案是否定的.我们还可以通过指针也 ...
- 再识PCI:一个PCI驱动实例
之前写了第一篇关于PCI的文章,当时只是作为入门的接触笔记,后来对PCI又研究了一下,主要包括PCI设备的扫描过程及PCI驱动注册过程. 本文主要给出一个PCI实例,并在内核中做很多的打印以便跟踪其过 ...
- 国嵌Linux视频驱动开发
1 Linux PCI.串口驱动程序 1.1 PCI总线概述 总线概念 总线是一种传输信号的信道;总线是连接一个或多个导体的电气连线.总线由电气接口和编程接口组成,我们重点关注编程接口. PCI概念 ...
- 学习国嵌嵌入式视频笔记
本文中使用到的datasheet都来自国嵌开发板光盘,笔记也都摘抄自光盘视频 S5PV210_UM_REV1.1.pdf S5PV210_iROM_ApplicationNote_Preliminar ...
- Linux:驱动程序直接编译到内核(源自国嵌的视频教学)
引子:前面的文章实现了可加载的内核模块,通过这个内核模块实现对PWM定时器的控制和中断处理程序的注册.这里讨论一下将内核模块直接编译进内核的过程,首先声明来源于国嵌的视频教学. 其实很简单,第一步把冰 ...
- 我的内核学习笔记6:PCI驱动probe的一点认知
对于PCI的学习,在文章<初识PCI>和<再识PCI:一个PCI驱动实例>中有介绍,文中使用大量代码进行演示.但总觉得有些认知不到位.于是就再写一文. 一.PCI驱动一般框架 ...
- 关于国嵌 实验2 5 网卡驱动移植 网卡地址 的问题
实验2.5 网卡驱动移植 网卡地址等几个宏的数值怎么得到的 实验2.5 网卡驱动移植中有几个宏 #define CONFIG_DM9000_BASE 0x20000300 #define DM9000 ...
最新文章
- NHibernate教程
- ip rule,ip route,iptables 三者之间的关系
- python线程暂停_关于多线程:如何使“停止”按钮终止已经在Tkinter中运行的“开始”功能(Python)...
- C语言中的位域 bit field [转]
- A*B Problem
- [JTA] Java事务api
- 非空验证方法(多值)和BindingResult提示验证信息
- php 非侵入式,Tideways和xhgui打造PHP非侵入式监控平台
- Linux VFS的主要的数据结构
- DBeaver执行SQL脚本
- jQuery 教程 jQuery入门学习教程
- Rational License Key Error的解决办法
- 《成都》钢琴谱,带指法和歌词
- 百万亚瑟王无法连接服务器请在信号良好的地方重试,叛逆性百万亚瑟王
- 入门级前端选手半路接手vue项目实录
- 禅道项目管理,带你避开项目管理中的那些坑
- 奇迹MU虚拟机 游戏多开无法登陆和登录错误的问题如何解决?
- 在ssd上win10和linux双系统,windows 10 ssd ubuntu hdd双系统
- 这家为AI for Science而生的新研究院,要让科研进入“安卓模式”
- 多种调度算法的平均周转时间算例
热门文章
- 一分钟快速理解:模拟信号和数字信号!
- 项目时间和本地时间差8小时的问题
- 2020高考数学:常用知识点公式第四章(文科)
- MFC程序阻止别的软件隐藏窗口,或拦截WM_SHOWWINDOW消息
- 阿里云宽带是怎么按流量进行计费的?
- PSQLException: ERROR: permission denied: no privilege to create a readable gpfdist(s) external table
- [动画特效] 炫彩界面库-动画特效来了,可实现各种网页特效v3.3.0
- 基于PT2001 的4缸发动机 DFI 控制讲解3 - DCDC部分
- Metro 风格应用的导航设计
- [原]最初的梦想---关于野猪和家猪