linux新型字符设备驱动基本框架

本文介绍了Linux驱动程序的基本框架,包括应用程序如何调用驱动,以及驱动的入口和出口函数。在驱动程序中,入口函数涉及设备号的创建、cdev的初始化和添加,以及设备和类的创建。出口函数则负责删除和反注册设备。Linux驱动的主要作用是注册设备节点和提供功能接口。
摘要由CSDN通过智能技术生成

目录

一、应用程序调用驱动程序框架​编辑

二、入口函数

三、出口函数

四、linux驱动主要两个作用


一、应用程序调用驱动程序框架

         (1) 应用程序的 打开、读、写等操作程序执行时,会经过C库,然后触发 svc异常,调用对应的驱动函数;APP读数据时,内核通过copy_to_user操作把数据发送给APP;APP写数据时,内核通过copy_from_user操作接收APP数据;

        (2) 任何时候不能忘记linux驱动的作用:向上给应用程序提供接口(被调用),向下实现应用程序所需要的功能(可能会驱动相关硬件);驱动程序提供的接口函数,与应用程序调用的函数,一一对应(函数名类似,参数一致);

二、入口函数

1、需要用 module_init(xxx_init) 来声明为入口函数,并使用 “__init”来修饰。

2、使用 insmod 或者 modprobe(常用) 命令加载驱动的时候,入口函数(xxx_init)会被调用。

3、入口函数要做的主要事情:

        (1)创建设备号

                ①固定分配:register_chrdev_region();

                ②自动分配:alloc_chrdev_region();

        (2)初始化 cdev :cdev_init();     //核心:file_operations结构体

        (3)添加一个cdev:cdev_add();

        (4)创建类:class_create();

        (5)用设备号和类创建设备:device_create();

三、出口函数

1、需要用 module_exit(xxx_exit) 来声明为出口函数,并使用 “__exit”来修饰。

2、使用 rmmod(常用) 或者 modprobe -r 命令卸载驱动的时候,出口函数(xxx_exit)会被调用。

3、出口函数要做的主要事情:

        (1)删除cdev:cdev_del();

        (2)反注册设备:unregister_chrdev_region();

        (3)注销设备:device_destroy();

        (4)注销类:class_destroy();

四、linux驱动主要两个作用

1、向内核注册,产生设备节点,让应用能看到,从而操作设备节点;

        从内核驱动的角度看,产生设备节点,是通过向内核注册,注册又分为哪几步:

              ①创建设备号

              ②初始化cdev

              ③添加一个cdev

              ④创建类

              ⑤创建设备

  2、提供实现功能的接口函数(file_operations结构体),让应用能调用,从而实现所需功能。

         根据 file_operations 提供的接口,知道函数的作用,然后去操作相应的硬件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值