导图社区 设备驱动
这是一篇关于设备驱动的思维导图,主要内容包括:主要功能,设备驱动模型。阐述了设备驱动的主要功能、信号定义、设备驱动模型等内容。
编辑于2025-06-27 11:56:48这是一篇关于程序和库信息的思维导图,主要内容包括:(查看基础信息),获取ELF节的长度信息,显示可执行文件或库需要静态加载的动态库完整列表--显示加载时的依赖项,列出二进制文件的节信息,查看动态节,列出并查看段,查看重定位节,反汇编,列出库中未定义的符号,列出动态符号,列出二进制文件或库的符号表,查看节中的数据,符号的类型。
这是一篇关于设备驱动的思维导图,主要内容包括:主要功能,设备驱动模型。阐述了设备驱动的主要功能、信号定义、设备驱动模型等内容。
这是一篇关于算法的思维导图,主要内容包括:云计算,内存管理算法,分布式同步算法,避免死锁算法,进程调度算法,磁盘调度算法。
社区模板帮助中心,点此进入>>
这是一篇关于程序和库信息的思维导图,主要内容包括:(查看基础信息),获取ELF节的长度信息,显示可执行文件或库需要静态加载的动态库完整列表--显示加载时的依赖项,列出二进制文件的节信息,查看动态节,列出并查看段,查看重定位节,反汇编,列出库中未定义的符号,列出动态符号,列出二进制文件或库的符号表,查看节中的数据,符号的类型。
这是一篇关于设备驱动的思维导图,主要内容包括:主要功能,设备驱动模型。阐述了设备驱动的主要功能、信号定义、设备驱动模型等内容。
这是一篇关于算法的思维导图,主要内容包括:云计算,内存管理算法,分布式同步算法,避免死锁算法,进程调度算法,磁盘调度算法。
设备驱动
主要功能
对设备进行初始化
使设备投入运行和退出服务
从设备接收数据并将它们送回内核
将数据从内核送到设备
检测和处理设备出现的错误
支持IO体系
接收由设备无关软件发来的命令和参数 并将命令中的抽象IO要求转换为与设备相关的底层操作序列
检查用户IO请求的合法性
了解IO设备的工作状态
传递与IO设备相关的参数
设置IO设备的工作方式
发出IO命令
如果IO设备空闲 则立即启动它 完成指定的Io操作
如果IO设备繁忙 则将请求块挂在IO设备队列上等待
响应由设备控制器发来的中断请求 根据请求类型 调用相应的中断处理程序进行处理
设备驱动模型
总线
微处理器
信号定义
信号附加说明
接口框图
CPU总线组成
地址总线
用于提供内存或IO设备的地址 指明需要读写数据的具体位置
数据总线
用于在CPU和内存或IO设备之间提供数据传输的通道
控制总线
负责指挥执行的具体读写操作
总线作用
隔离
驱动
缓冲
总线传输过程
1-申请与仲裁阶段
要求使用总线的主模块必须提出申请 并由总线仲裁机构确定把下一个传输周期的总线使用权授权给哪个主模块
2-寻址阶段
取得总线使用权的主模块通过总线发出欲访问的从模块的存储器地址或IO端口地址 以及有关命令 并通过译码选中参与本次传输读从模块 启动传输
3-传输阶段
主模块和从模块之间进行数据传输 数据由源模块发出 经数据总线流入目的模块
4-结束阶段
主从模块的有关信息均从系统总线上撤除 让出总线 为下一次传输作准备
层次化结构
南北桥
高速PCI
特点
支持32位或64位数据线与32位地址线的宽度
支持即插即用
PCI总线由资源配置空间 用户程序所要求使用的硬件资源(存储器 IO端口 中断)都经过配置空间进行映射 即重新进行分配 具体的映射到何处是操作系统管理的事情 对用户是透明的
支持中断线共享 并设置可编程中断路由器
外部硬件中断申请信号线总共只有4根INTA-INTD 但是由于实现中断线共享 可使外部硬件中断申请的数目不受限制 中断触发信号是电平触发 并且是低电平有效
采用数据线与地址线复用技术
支持高速设备和支持猝发方式传输
接口框图
总线信号
系统信号
PCI系统总线时钟信号CLK
为所有PCI传输提供时序 并且对于所有PCI设备都是输入
复位信号RST#
使PCI专用的寄存器 定序器和信号复位到初始状态
地址和数据信号
地址和数据复用的输入/输出信号AD
PCI总线上地址和数据的传输 必须在FRAME#有效的期间进行 当FRAME#有效时的第一个时钟 AD上传输的是地址信号 称为地址期 当IRDY#和TRDY#同时有效时 AD上传输的是数据信号 称为数据期 一个PCI总线传输周期中包含一个地址期和接着的一个或多个数据期 在每个地址期和数据期中 所有的AD线都必须被驱动到稳定的状态(包括字节使能信号表明无效的字节所对应的AD线) 这样做的目的是: 1.为了奇偶校验的计算 2.使传输中未被包含的字节所对应的缓冲区不至于处于临界状态 3.便于快速而相对稳定地锁定数据
总线命令和字节允许复用信号 C/BE#
在地址期 这4条线上传输的是总线命令 在数据期 这4条线上传输的是字节允许信号 用来指定在整个数据期中 AD上哪些字节为有效数据
奇偶校验信号PAR
对AD和C/BE#进行奇偶校验 可被所有PCI设备使用 对于地址信号 在地址期之后的一个时钟周期PAR稳定并且有效 对于数据信号 在IRDY#(写操作)或TRDY(读操作)有效之后的一个时钟周期PAR稳定并有效 写操作时 有主设备驱动PAR 读操作时 由从设备驱动PAR
接口控制信号
帧周期信号 FRAME#
由主设备驱动 表示一次传输的开始和持续 当FRAME#有效预示总线传输开始 并且先传地址后传数据 在FRAME#有效期间 数据传输继续进行 当FRAME#无效时 预示着总线传输结束 并在IRDY#有效时进入最后一个数据期
主设备就绪信号IRDY#
IRDY#要与TRDY#联合使用 只有2者同时有效时 数据才能传输 否则进入等待周期 在写周期 IRDY#有效时表示数据已由主设备提交到AD线上 在读周期 IRDY#有效表示主设备已做好接收数据的准备
从设备就绪信号TRDY#
IRDY#要与TRDY#联合使用 只有2者同时有效时 数据才能传输 否则进入等待周期 在写周期 TRDY#有效时表示从设备已准备好接收数据 在读周期 TRDY#有效时表示数据已由从设备提交到AD线上
从设备请求停止信号STOP#
从设备要求主设备停止当前数据传输的信号
锁定信号 LOCK#
当一个设备进行可能需要多次传输才能完成的操作时 LOCK#有效 以便让此设备独占资源
初始化设备选择信号 IDSEL
在参数配置读/写传输期间 用作片选信号
设备选择信号 DEVSEL#
该信号有效 说明总线上某一设备已被选中 并作为当前访问的从设备 一个设备要先置DEVSEL#有效后 才能发出其他响应信号 一旦从设备设置了DEVSEL#信号 就不能在最后数据期完成之前撤销它 在正常的主设备终止情况下 DEVSEL#的撤销必须与TRDY#的撤销同时发生 如果在FRAME#有效后的3个时钟周期内 没有设备发出DEVSEL#信号 则采用负向译码的设备才可以置DEVSEL#有效 并拥有传输权利 如果整个系统中一个负向译码的设备也没有 则主设备因收不到有效DEVSEL#信号而终止传输 一个目标设备必须在进行了完全地址译码之后才能发出DEVSEL#或其他响应信号 否则设置DEVSEL#有效是非法的
仲裁信号
总线占用请求信号REQ#
该信号有效 表明驱动他的设备要求使用总线 它是一个点到点的信号线 任何主设备都有它自己的REQ#信号 从设备没有REQ#信号
总线占用允许信号 GNT#
该信号有效 表示申请占用总线的设备的请求已获得批准 它是一个点到点的信号线 任何主设备都有自己的GNT#信号 从设备没有GNT#信号
错误报告信号
数据奇偶校验错误报告信号PERR#
一个设备只有在响应设备选择信号(DEVSEL#)和完成数据期之后 才能报告一个PERR# 对于每个数据接收设备 如果发现数据有错误就应在数据收到后的2个时钟周期内将PERR#激活 如果有一连串的数据期切每个数据期都有错误 那么PERR#的持续时间将多于一个时钟周期 由于该信号是持续的三态信号 因此该信号在释放前必须先驱动为高电平
系统错误报告信号SERR#
用作报告地址奇偶错 特殊命令序列中的数据奇偶错 以及其他可能引起灾难性后果的系统错误 SERR#信号一般接到微处理器的NMI引脚
中断信号
中断信号是电平触发 低电平有效 使用漏极开路方式驱动 此类信号的建立和撤销于时钟不同步 单功能设备只有一条中断线 并且只能使用INTA# 其他3条中断线没有意义 多功能设备中的任何功能都可以连接到4条中断线中的任何一条 两者的最终对应关系由配置空间的中断引脚寄存器定义
INTA#
INTB#
INTC#
INTD#
高速缓存和电源管理信号
试探返回信号SBO#
该信号有效 表示命中了一个修改过的行 该信号无效而SDONE有效表示由一个干净的试探结果
监听完成信号SDONE
表示当前监听的状态 该信号无效 表示监听仍在进行 否则表示监听已经完成
64位总线扩展信号
传输请求REQ64#
由主设备发出 与FRAME#有相同的时序
传输认可ACK64#
从设备发出 和DEVSEL#有相同的时序
地址和数据复用线AD
总线命令和字节允许复用信号C/BE#
在数据期 若REQ64#和ACK64#同时有效 则该4条线传输的是字节允许信号 在地址期 如果使用了DAC命令且REQ64#有效 表示C/BE#上传输的是总线命令 C/BE#[3:0] 0000=>中断响应命令 0001=>特殊周期命令 0010=>IO读命令(从IO空间映像中读数据) 0011=>IO写命令(向IO空间映像中写数据) 0100=>保留 0101=>保留 0110=>存储器读(从内存空间映像中读数据) 0111=>存储器写(向内存空间映像中写数据)) 1000=>保留 1001=>保留 1010=>配置读(从配置空间读) 1011=>配置写(向配置空间写) 1100=>存储器多行读 1101=>双地址周期 1110=>存储器行读 1111=>存储器写并无效
奇偶双字校验PAR64
测试访问/边界扫描
测试时钟TCK
在边界扫描期间 为测试时钟状态信息和测试数据IO设备提供时钟
测试数据输入TDI
把测试数据和测试命令串行输入到设备
测试数据输出TDO
把测试数据和测试命令串行输出到设备
测试方式选择TMS
用于控制测试访问端口控制器的状态
测试复位TRST
初始化测试访问端口控制器
总线协议
传输机制
PCI总线的基本传输是突发传输 一次PCI的突发传输由一个地址期和一个或多个数据期组成 支持存储空间和IO空间的突发传输 PCI的突发传输是指北桥电路可以将针对存储器的多次访问在不影响正常操作的前提下合并为一次传输 然后由北桥电路完成针对存储器的突发访问周期 以最大限度的提高系统性能
传输控制
根据PCI总线协议 PCI总线上所有的数据传输都是由FRAME# IRDY#和TRDY#三条信号控制的 当数据有效时 数据源设备要设置IRDY#或TRDY#(写操作由主设备设置IRDY# 读操作由从设备设置TRDY#) 接收方要在适当的时间发出准备好信号 FRAME#信号有效后的第一个时钟上升沿时地址期的开始 此时传输地址信息和总线命令 下一个时钟上升沿开始一个或多个数据期 每逢IRDY#和TRDY#同时有效 所对应的时钟上升沿就使数据在主从设备之间传输 在此期间主设备或从设备分别通过将IRDY#和TRDY#置为无效而插入等待周期 当最后一次数据传输到来时主设备应撤销FRAME#信号而建立IDRY#信号 表明主设备已准备好最后一次数据传输 待从设备发出TRDY#信号后才表示最后一次传输已完成 此时FRAME#和IRDY#信号均被撤销 接口信号回到空闲状态 规则: 1.FRAME#和IRDY#定义了总线的忙/闲状态 当其中一个有效时 总线是忙的 2个都无效时 总线是空闲状态 2.一旦FRAME#信号被置为无效 在同一传输期间就不能重新设置 3.除非设置了IRDY#信号 一般情况下不能设置FRAME#信号无效 4.一旦主设备设置了IRDY#信号 直到当前数据期结束为止 主设备不能改变IRDY#和FRAME#信号的状态
寻址
地址空间
地址译码
正向译码是每个设备都监视地址总线上的访问地址是否落在它的地址范围 若符合就接收的译码方法 负向译码是经过所有在正向译码中未选中其他设备之后 才选中某个设备的译码方法
数据传输过程
PCI总线数据传输过程包括启动以及读/写过程和传输终止的过程 由于PCI总线采用地址/数据复用技术 因此 每一次PCI总线传输都由一个地址期和一个或几个数据期组成
读操作
一旦FRAME#信号有效 地址期就开始并在时钟2的上升沿处稳定有效 在地址期 AD线上传输一个有效地址 C/BE#线上传输一个总线命令 数据期是从时钟3的上升沿处开始的 AD线上传输的是数据 C/BE#线作为字节使能信号指明数据线上哪些字节是当前要传输的 并且从数据期开始一直到传输完成 C/BE#始终保持有效状态 DEVSEL#和TRDY#是由地址期内所发地址选中的从设备提供的 并且TRDY#是在DEVSEL#之后 IRDY#是发起读操作的主设备发出的 数据的真正传输是在IRDY#和TRDY#同时有效的时钟上升沿进行的 只要这2个信号中的一个无效时 就表示需要插入等待周期(不进行数据传输) 在读操作中的地址期和数据期之间 AD线上有一个交换期 由从设备发出TRDY#信号 比地址的稳定有效晚一拍来实现(由从设备延迟产生TRDY#信号来实现交换期) 在交换期之后 AD线改由从设备驱动 向主设备传输数据
写操作
一旦FRAME#信号有效 地址期就开始并在时钟2的上升沿处稳定有效 在地址期 AD线上传输一个有效地址 C/BE#线上传输一个总线命令 数据期是从时钟3的上升沿处开始的 AD线上传输的是数据 C/BE#线作为字节使能信号指明数据线上哪些字节是当前要传输的 并且从数据期开始一直到传输完成 C/BE#始终保持有效状态 FRAME#撤销必须以IRDY#有效为前提 表明是最后一个数据期 在写操作中地址期和数据期之间没有交换周期 因为写操作中 数据和地址是都是由主设备发出的
传输的终止过程
主设备和从设备都可以提出终止一次PCI总线的传输要求 但传输的最终停止控制要由主设备完成 因为所有传输的结束标志必须是FRAME#和IRDY#信号均无效 然后才进入总线空闲状态 规则: 1.当STOP#信号有效时 FRAME#应该在其后的2-3个时钟周期内尽快撤销 撤销时应使IRDY#有效 从设备应无条件的保持STOP#的有效状态直到FRAME#撤销为止 FRAME#撤销后 STOP#也该跟着撤销 2.在任何时钟的上升沿 如果STOP#和TRDY#同时有效 表示传输的最后周期 则IRDY#要在下一个时钟的上升沿之前撤销 表示传输的结束 3.对于被目标设备终止的传输 主设备要继续完成它就必须用下一个未传输的数据的地址来重试访问 4.一旦从设备发出了TRDY#或STOP# 就不能改变DEVSEL# TRDY#和STOP#信号 直到当前的数据期完成
由主设备提出的终止
主设备通过撤销FRAME#信号并建立IRDY#来提出终止请求(已进入最后的数据期) 此后IRDY#一直保持有效直到TRDY#有效完成最后一个数据的传输 接着IRDY#撤销 达到完全终止条件(FRAME#和IRDY#同时无效) 结束传输 进入总线空闲状态 主设备提出终止传输的原因: 1.主设备已完成了要做的事 2.主设备GNT#信号无效并且内部的延时计数器已满 不得不终止传输(超时) 超时的原因可能是从设备产生的访问延迟 也可能是主设备要做的操作太长
由从设备提出的终止
从设备向主设备发出STOP#信号 申请终止一次传输 STOP信号有效保持到FRAME#信号撤销为止 当从设备发出STOP#信号同时又使TRDY#无效时 则表明从设备将不再传输任何数据 主设备此时不必等待最后一次的数据传输就可使整个操作结束 从设备提出终止传输的原因: 1.由于死锁 非PCI资源处于非空闲状态及该设备处于互斥访问的锁定状态等原因(从设备目前尚无数据传输) 使得当前从设备无法进行正常的传输 不得不终止相应的传输操作 2.由于从设备在8个时钟周期内不能对主设备做出相应 只能停止传输(断开) 断开往往不会发生在第一个数据期
总线仲裁
PCI采用集中式的同步仲裁方法 每个主设备有独立的请求(REQ#)和允许(GNT#)信号 这些信号连接到中央仲裁器上 用简单的请求-允许信号控制对总线的访问 主设备用REQ#信号有效来请求占用总线 仲裁器若同意请求则以GNT#有效作为应答
REQ#
主设备想占用总线执行一次传输 如果想继续传输 应使得REQ#保持有效 一旦主设备置REQ#无效 表示它放弃占用总线
GNT#
仲裁器给主设备有权占用总线的允许信号 在一个系统中同一时刻只允许一个主设备拥有占有权 要使某一个设备的GNT#有效 就必须撤销另一个设备的GNT#
FRAME#
有效取得总线占有权后 并不意味着数据能马上开始传输 数据真正开始传输必须由主设备置FRAME#有效 发布地址和命令 并满足IRDY#和TRDY#同时有效
PCI配置空间
存储器和IO的访问中 每个目标设备都对自己的地址进行译码 产生设备选择信号DEVSEL# 而对配置地址空间的访问则通过初始化设备选择信号IDSEL来选择PCI设备(将IDSEL作为芯片选择信号) 对于某一PCI设备 只有当输入它的IDSEL信号有效 并且在地址期内AD[01::00]为00时才能被作为配置访问的目标设备 【0类配置访问】 AD[01::00]=>00 AD[07::02]=>选择功能的64个配置双字寄存器之一 AD[10::08]=>选择物理设备的8种功能之一 只对当前正在允许的PCI总线上的目标设备(配置寄存器)所进行的访问  【1类配置访问】 AD[01::00]=>01 对通过PCI-PCI桥连接的下一级PCI总线上的目标设备(配置寄存器)所进行的访问 如果目标设备在当前PCI总线的下级PCI总线上 那么连接2条PCI总线的PCI-PCI桥必须将配置访问传递给第二级总线  【寻址过程】 1.通过IDSEL信号进行片选 将IDSEL引脚作为芯片选择信号 用来选择PCI设备以进行配置访问 2.通过AD[01:00]=00确定配置访问的目标设备 在地址有效期间 AD[01:00]=00 选择PCI设备作为配置访问的目标设备 3.通过AD[07:02]选择片内的配置寄存器 AD[07:02]确定双字寄存器种的一个 通过字节允许信号C/BE#[03:00]确定要访问的双字寄存器种的哪几个寄存器
设备分类代码
命令寄存器
基址寄存器
映射到IO地址空间的基址寄存器格式
映射到存储器地址空间的基址寄存器格式
状态寄存器
PCI中断
PCI中断响应周期
执行中断响应周期的目的是获取中断号 PCI总线执行的是单周期响应(一个中断应答)这可以通过HOST-PCI桥 放弃来自处理器的第一个中断响应 从而将处理器的双周期中断响应转换成PCI的单周期中断响应 在PCI中断响应周期的地址期 C/BE#[03:00]=>0000 (INT-ACK 表示中断响应命令) AD[31:00]=>不出现有效地址 单必须用稳定数据驱动 以便PAR有效时奇偶校验位可以检测 在PCI中断响应周期的数据期 回送的中断号的长度由字节使能来指明(一个单字,最低字节) 中断响应处理没有寻址机构 其目标设备隐含为系统中断控制器
PCI中断共享
PCI中断请求信号时漏极开路的 连接到同一PCI中断信号线的多个设备可以同时驱动该信号有效 (电平触发方式请求中断-低电平有效)
典型PLX9054内部结构框图
内部寄存器组
包括PCI总线和Local总线的配置寄存器组及Runtime DMA IO Messaging寄存器 这些寄存器提供了外界对PLX9054的操作接口
Serial EEPROM 模块
用于初始化配置寄存器
Local总线状态机
Local总线控制机制 根据不同的总线操作执行不同的任务
Local Bus接口逻辑
动态设置总线宽度 大小端存储模式以及地址数据线是否多路复用
控制逻辑
实现对IO Messaging DMA 非等齐传输进行控制
低速ISA
总线信号
地址线SA
数据线SD
控制线
地址允许信号AEN
地址锁存允许BALE
IOR读命令
IOW写命令
SMEMR存储器读命令
对于A0-A20的1MB内存的读操作
SMEMW存储器写命令
对于A0-A20的1MB内存的写操作
MEMR存储器读命令
对于24位地址线全部存储空间的读操作
MEMW存储器写命令
对于24位地址线全部存储空间的写操作
MEMCS存储器片选信号
IOCS IO片选信号
SBHE总线高字节允许信号
表示数据总线上传输的时高位字节数据
IRQ IO设备的中断请求输入信号
IRQ2-IRQ7 连接到主8259中断控制器 IRQ10-IRQ15连接到从8259中断控制器 IRQ13留给数据协处理器使用
DRQ IO设备的DMA请求信号
DRQ1-DRQ3连接到主8237 DRQ0,DRQ5-DRQ7连接到从8237 DRQ4用于主从8237的级联
DACK DMA回答信号
T/C DMA传输计数结束信号
高电平表示DMA传输的数据已达到其程序预置的字节数 用来结束一次DMA数据块传输
MASTER输入信号
该信号由要求占用总线的有主控能力的IO设备驱动 并与DRQ一起使用 IO设备的DRQ得到确认(DACK)后 才驱动MASTER 从此该设备保持对总线的控制直到MASTER无效
RSTDRV系统复位信号
用于复位和初始化接口和IO设备
IOCHECK IO通道检查信号
当扩展卡上的存储器或IO端口程序奇偶校验错时 该信号有效 并产生一次不可屏蔽中断NMI
IOCHRDY IO通道就绪信号
若扩展卡中的存储器或IO设备速度慢而跟不上处理器的总线周期时 该信号变低(失效) 使微处理器在正常总线周期中插入等待状态 该信号为低速IO或低速存储器请求延长总线周期之用
OWS 零等待状态信号
低电平时无需插入等待周期
特点
支持16位数据线与20位地址线的宽度
不支持即插即用 也无资源配置空间
用户程序所要使用的硬件资源(存储器 IO端口 中断)都不需要经过配置空间进行映射 即不重新进行分配 而是由用户直接访问硬件资源
不支持中断线共享 不设置可编程中断路由器
只支持15级外部硬件中断(IRQ0-IRQ15) 中断触发信号是边缘触发 并且是上升沿有效
采用数据线与地址线分开
IO端口与存储器独立编址 IO端口地址译码方法是IO地址线参加译码 并且只使用低10位地址 IO地址范围位1024个字节
不能支持高速设备和猝发方式传输
实例