设为首页 加入收藏

TOP

Linux字符设备驱动程序编写基本流程
2014-11-24 02:43:29 来源: 作者: 【 】 浏览:0
Tags:Linux 字符 设备 驱动程序 编写 基本 流程

  1.Linux驱动程序编写基本流程:


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


  #define __NO_VERSION__


  #include


  #include


  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)函数调用,这个函数在系统启动时注册到内核时调用。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java的package和import机制 下一篇认识理解Java中native方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: