Linux学习 :字符设备框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习 :字符设备框架相关的知识,希望对你有一定的参考价值。

一.系统功能框架

U-boot : 启动内核

linux kernel: 启动应用

应用: open,read,write 都是通过C库实现,汇编就相当于swi val,引发中断,通过系统调用接口在异常中断调用不同处理函数(VFS)。

二.字符设备驱动框架

1.编写驱动:open , read, write 等功能函数的实现:

   static int led_drv_open(struct inode *inode, struct file *file){
      printk("led_drv_open\n");
      return 0;

   }

   static int led_drv_write(struct file *file, const char __user *buf, size_t count, loff_t* ppos){
      printk("led_drv_write\n");
      return 0;
   }

2.注册驱动:

  ①构造file_operations结构:  
      static struct file_operation led_drv_fops = {
        .owner = THIS_MODULE,
        .open = led_drv_open,
        .write = led_drv_write,
      }

  ②注册驱动:
    入口函数:int led_drv_init(void){
            register_chrdev(major, "led_drv", &led_drv_fops);  //注册字符设备,major-主设备号 mior-次设备号,app根据设备类型和主设备号调用具体驱动。
            return 0;
         }
    修饰入口函数: module_init(led_drv_init);
    
    出口函数:void led_drv_exit(void){
            unregister_chrdev(major, "led_drv");  
         }
    修饰出口函数: module_exit(led_drv_exit);

Makefile :

  KERN_DIR=/work/system/linux-2.6.22.6  //本地编译过的linux源码目录
  all:
      make -C $(KERN_DIR) M=`pwd` modules
  clean:
      make -C $(KERN_DIR) M=`pwd` modules clean
      rm -rf modules.order
  obj-m  += led_drv.o

  


        

以上是关于Linux学习 :字符设备框架的主要内容,如果未能解决你的问题,请参考以下文章

22.Linux-块设备驱动之框架详细分析(详解)

22.Linux-块设备驱动之框架详细分析(详解)

Linux字符设备驱动框架

linux驱动开发 字符设备驱动框架(自动创建设备节点)

linux内核的块设备驱动框架详解

linux驱动学习——字符设备驱动开发