美文网首页
字符驱动

字符驱动

作者: 飒风灬 | 来源:发表于2018-04-21 19:22 被阅读0次

//////////////前边主要是说的是杂项设备驱动的注册,下边是字符驱动/////////////////

2018.2.26

申请字符类设备号。

设备号有好多种,今天学的是字符类设备号的申请,字符类设备号分为主设备号,和从设备号,下边的连接里边的东西可以参考一下。

http://blog.sina.com.cn/s/blog_707dde150102wp10.html

设备号申请有两个常用的函数,一个是静态申请register_chrdev_region(),一个是动态申请alloc_chrdev_region(),下边是简单的介绍。

1.头文件

#include 设备函数所在的头文件

#include       MKDEV转义数据设备号类型宏定义

#include 定义字符类设备

2.注册函数说明

静态注册int register_chrdev_region(dev_t from, unsigned count, const char *name)

Form  :要分配设备编号范围的初始值。

Count:连续编号范围 。

*Name:编号关联设备名称

Form用的是  dev_t类型定义,MKDEV(dev_magor, dev_minior);这个函数获得,这个函数有两个参数,一个是主设备号,一个是从设备号。

常见的用法

通过外部传参将参数主从设备号传进去。

打印主从设备号,或得form这个参数,进行设备注册。

动态注册int alloc_chrdev_region(dev_t *dev,unsigned int firstminor,unsigned int count,char *name);

*dev: 返回的设备编号,需要通过MMOR()获取主设备号。

Firstminor: 请求最小的次编号

Count:    请求连续设备编号的总和

*name:    设备名称

简单用法

不写了。

当然还有个行数,设备号卸载函数

unregister_chrdev_region(MKDEV(dev_magor, dev_minior), dev_minor_num);

这个是注销静态申请的,第一个主设备号,第二个连续设备号和。

unregister_chrdev_region(dev_magor,dev_minor_num);

这个是注销动态申请的,第一个主设备号,第二个连续设备号和。

2018.3.2

设备节点已经注册完了,下边写的是字符类设备的注册,在杂项设备中没有涉及到一个class这个类,因为系统已经打包好了,不用我们去管了,但是字符驱动就需要自己去写了。

上边图片就是杂项设备的设备,但是char的都是自己定义了,下边是介绍。

这个是class的结构体

Class类的创建函数   class_create()

第一个参数是owner,一般是 THIS_MODULE

第二个参数苏是name,要定义的class的名称。

下便是使用方式:

struct class *myclass;

myclass = class_create(THIS_MODULE, CLASS_NAME);

开始内存分配void *kmalloc(size_t size, int flags);

头文件#include

Size内存大小

Flags一般常用 GFP_KERNEL

相关文章

  • linux驱动:[2]字符设备驱动memdev(cdev结构解析

    linux驱动:[2]字符设备驱动memdev Linux 内存模拟字符设备 驱动程序 测试平台: Xunlong...

  • 驱动的视频学习

    驱动分类:字符驱动,块设备驱动,网络设备驱动 流,最终还是要调用系统调用函数,是对系统调用的封装 字符设备特点: ...

  • 字符驱动

    //////////////前边主要是说的是杂项设备驱动的注册,下边是字符驱动///////////////// ...

  • Linux设备驱动

    Linux设备文件自动生成 Linux字符设备驱动 Linux块设备驱动 Linux混杂设备驱动 - 按键设备驱动...

  • linux设备驱动第三篇:如何写一个简单的字符设备驱动?

    在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动。本篇借...

  • 2 字符驱动

    1驱动中分配内存kmalloc 分配连续的虚拟地址,用于小内存分配。在include/linux/slab.h 2...

  • Linux字符驱动

    本篇简单介绍如何写一个简单的字符设备驱动,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存。下...

  • 字符设备驱动

    初始化时首先向内核申请主、次设备号,包括动态分配或者静态分配,register_chrdev_region() 对...

  • 字符设备驱动

    设备号 此处仅仅介绍api,详细解析请参考设备号。 设备号的数据类型:dev_ttypedef unsigned ...

  • linux驱动编程——第一个驱动Helloworld

    linux驱动编程——第一个驱动Helloworld 主要概念: linux三大驱动: 字符设备、网络设备、块设备...

网友评论

      本文标题:字符驱动

      本文链接:https://www.haomeiwen.com/subject/cxrakftx.html