IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 操作系统 > LINUX > Linux字符设备驱动程序编写基本流程

Linux字符设备驱动程序编写基本流程

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

  驱动程序编写基本流程:

  1.首先是一些版本信息,没什么用,但是不能少

  #define __NO_VERSION__

  #include <linux/modules.h>

  #include <linux/version.h>

  char kernel_version[] = UTS_RELEASE;

  2.为了把系统调用和驱动程序关联起来,需要一个非常关键的数据结构:struct file_operations。file_operations结构的每一个成员的名字都对应着一个系统调用。用户进程利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这是linux的设备驱动程序工作的基本原理。编写设备驱动程序的主要工作就是编写子函数,并填充file_operations的各个域

  3.简单驱动程序的编写(test.c):

  a.包含一些基本的头文件。

  b.编写一些功能函数,比如read(),write()等。这些函数被调用时系统进入和心态。

  c.定义struct file_operations结构的对象,填充结构体。结构体中功能的顺序不能改变,若一些功能没有实现就用NULL填充,已经实现的功能如read()、write()分别添加到对应的位置。这步实现的是函数的注册。到这里驱动程序的主体可以说是写好了。现在需要把驱动程序嵌入内核。

  d.注册设备驱动程序,使用register_chrdev注册字符型设备。函数原型为:

  int register_chrdev(0, &test_name&, &test_file_operations)

  函数返回主设备号,若注册成功返回值大于0。

  第一个参数:主设备号。第二个参数:注册的设备名。第三个参数:结构体名(设备相关操作方式,驱动程序实际执行操作的函数的指针)。

  这个函数由int init_module(void)函数调用,这个函数在系统启动时注册到内核时调用。

  e.在用rmmod卸载模块时,cleanup_module函数被调用,它释放字符设备test在系统字符设备表中占有的表项。

  void cleanup_module(void)

  {

  unregister_chrdev(test_major, &test&);

  }

  到这里test.c基本就编写完成了。一个简单的字符设备可以说写好了。

  4.编译

  $ gcc -O2 -DMODULE -D__KERNEL__ -c test.o test.c

  得到文件test.o就是一个设备驱动程序。

  如果设备驱动程序有多个文件,把每个文件按上面的命令行编译,然后

  ld -r file1.o file2.o -o modulename

  驱动程序已经编译好了,现在把它安装到系统中去。

  $ insmod -f test.o

  安装成功在/proc/devices文件中就可以看到设备test,并可以看到主设备号。要卸载运行:

  $ rmmod test

  5.创建设备节点

  mkmod /dev/test c major minor

  c是指字符设备,major是主设备号,minor是从设备号,一般可以设置为0

  以上就是linux驱动编写的基本过程了,可能有遗漏的地方,这个我只是按我理解的整理的。具体问题还要在实践中再进行研究。

关键词标签:Linux字符设备驱动程序

相关阅读 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux实现SCSI硬盘热插拔及在线识别 Linux下用CDMA modem拨号上网

文章评论
发表评论

热门文章 安装红帽子RedHat Linux9.0操作系统教程 安装红帽子RedHat Linux9.0操作系统教程 Linux服务器:设计高性能网站架构-LLMP Linux服务器:设计高性能网站架构-LLMP 使用Clonezilla迁移到虚拟Linux环境 使用Clonezilla迁移到虚拟Linux环境 Linux上的MRTG流量监控中心 Linux上的MRTG流量监控中心 Linux 双网卡绑定一个IP原理及实现 Linux 双网卡绑定一个IP原理及实现 linux和windows等系统远程控制ubuntu桌面 linux和windows等系统远程控制ubuntu桌面

相关下载

人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载 linux命令行浏览器的使用方法 Linux NFS服务固定端口及防火墙配置 U盘安装Ubuntu 10.04 Linux清除用户登录记录和命令历史方法