没有合适的资源?快使用搜索试试~ 我知道了~
首页Linux系统下PCI设备驱动程序的开发
Linux系统下PCI设备驱动程序的开发
471 浏览量
更新于2023-05-23
评论 1
收藏 119KB PDF 举报
摘要:以一个具体的PCI设备的驱动开发过程为基础,总结了与PCI设备驱动开发的相关问题,详细阐述了基本开发步骤、具体实现、驱动程序内核块的加载以及用户进程和驱动程序的协同工作问题。 1 Linux 系统下设备驱动的概念 Linux 将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。 Linux抽象了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:它们可以使用
资源详情
资源评论
资源推荐

Linux系统下系统下PCI设备驱动程序的开发设备驱动程序的开发
摘要:以一个具体的PCI设备的驱动开发过程为基础,总结了与PCI设备驱动开发的相关问题,详细阐述了基本
开发步骤、具体实现、驱动程序内核块的加载以及用户进程和驱动程序的协同工作问题。 1 Linux 系统下设
备驱动的概念 Linux 将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内
核和应用程序之间的接口,那么设备驱动程序则可以看成是Linux内核与外部设备之间的接口。设备驱动程序向
应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。 Linux抽象
了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:它们可以使用
摘要:以一个具体的PCI设备的驱动开发过程为基础,总结了与PCI设备驱动开发的相关问题,详细阐述了基本开发步
骤、具体实现、驱动程序内核块的加载以及用户进程和驱动程序的协同工作问题。
1 Linux 系统下设备驱动的概念系统下设备驱动的概念
Linux 将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内核和应用程序之间的接口,那
么设备驱动程序则可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得
应用程序可以像操作普通文件一样来操作外部设备。
Linux抽象了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:它们可以使用和操作文件相同的、标准的系
统调用接口来完成打开、关闭、读写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数。Linux系统中的
所有硬件设备都使用一个特殊的设备文件来表示,例如,系统中的第一个IDE硬盘使用/dev/hda表示。每个设备文件对应有两
个设备号:一个是主设备号,标识该设备的种类,也标识了该设备所使用的驱动程序;另一个是次设备号,标识使用同一设备
驱动程序的不同硬件设备。设备文件的主设备号必须与设备驱动程序在登录该设备时申请的主设备号一致,否则用户进程将无
法访问到设备驱动程序。
在Linux操作系统下有两类主要的设备文件:一类是字符设备,另一类则是块设备。字符设备是以字节为单位逐个进行I/O
操作的设备,在对字符设备发出读写请求时,实际的硬件I/O紧接着就发生了,一般来说字符设备中的缓存是可有可无的,而
且也不支持随机访问。块设备则是利用一块系统内存作为缓冲区,当用户进程对设备进行读写请求时,驱动程序先查看缓冲区
中的内容,如果缓冲区中的数据能满足用户的要求就返回相应的数据,否则就调用相应的请求函数来进行实际的I/O操作。块
设备主要是针对磁盘等慢速设备设计的,其目的是避免耗费过多的CPU时间来等待操作的完成。一般说来,PCI卡通常都属于
字符设备。
2 Linux系统系统PCI设备驱动程序的开发设备驱动程序的开发
2.1 基本需求分析基本需求分析
根据设备不同的用途,可以区分不同的PCI设备类型。基于这一设备类型,又可以分析出其他一些基本需求。从本文所使
用的数据采集卡可知,其主要用途是用于采集和控制。根据工控过程的特点,需要PCI采集卡在每采样一个数据点时,就以中
断的方式交给内核缓冲,再由用户程序适时取出使用。因此,将PCI采集卡作为一个字符设备来处理,并选择触发模式为内触
发,数据传送模式为中断传送。本文就是基于这样的需求,按如下所述的步骤和具体实现过程,开发了其驱动程序。
2.2 基本步骤基本步骤
(1)PCI设备文件的建立
既然PCI设备被操作系统当作特殊的文件来看,就要有个文件名。因此,建立一设备文件的名字来代表硬件设备是开发驱
动的第一步。按照习惯,设备文件都放在系统目录/dev下。一般在开发过程中,由于要经常查看设备文件的状态,而在这一目
录下已经有很多设备文件,查看起来特别不方便,因此,可以自己在某个地方建立一个文件夹,将该设备文件放在该文件夹
下。使用mknod命令可以建立设备特殊文件(注意:只有root账号的超级用户才能使用些命令),其格式示例为:
$mknod /subfolders/mydev/PCIdrv c 254 0
也就是用主设备号254(一般在Linux操作系统下设备文件的主设备号不会超过254,所以选用254,以确保该设备号是惟
一的)和辅助设备号0在目录/subfolders/mydev下建立特殊设备文件PCIdrv。
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0