码迷,mamicode.com
首页 > 系统相关 > 详细

Linux学习 :字符设备框架

时间:2016-09-12 19:04:04      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

一.系统功能框架

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学习 :字符设备框架

标签:

原文地址:http://www.cnblogs.com/blogs-of-lxl/p/5865613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!