字符设备号本质就是一个32位的无符号整型值。高12位为主设备号;低20位为次设备号。

  • 查看设备号
cat /proc/devices

4.1、构造设备号

源码路径: include/linux/kdev_t.h

#define MINORBITS    20
#define MINORMASK   ((1U << MINORBITS) - 1)#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))
#define MINOR(dev)  ((unsigned int) ((dev) & MINORMASK))
#define MKDEV(ma,mi)    (((ma) << MINORBITS) | (mi))

4.2、注册/注销设备号

/*** register_chrdev_region() - register a range of device numbers* @from: the first in the desired range of device numbers; must include*        the major number.* @count: the number of consecutive device numbers required* @name: the name of the device or driver.** Return value is zero on success, a negative error code on failure.*/
int register_chrdev_region(dev_t from, unsigned count, const char *name)
/*** unregister_chrdev_region() - return a range of device numbers* @from: the first in the range of numbers to unregister* @count: the number of device numbers to unregister** This function will unregister a range of @count device numbers,* starting with @from.  The caller should normally be the one who* allocated those numbers in the first place...*/
void unregister_chrdev_region(dev_t from, unsigned count)

4.3、示例代码

#include<linux/module.h>
#include<linux/init.h>
#include<linux/kdev_t.h>
#include<linux/fs.h>MODULE_LICENSE("GPL");
MODULE_AUTHOR("NEONAN");static int major = 230;
static int minor = 0;
static dev_t devno;static int hello_init(void)
{int result;printk("hello_init\n");devno = MKDEV(major, minor);result = register_chrdev_region(devno, 1, "dev_test");if(result < 0){printk("register_chrdev_region fauil\n");return result;}return 0;
}static void hello_exit(void)
{printk("hello_exit\n");unregister_chrdev_region(devno,1);return;
}module_init(hello_init);
module_exit(hello_exit);

编译后,注册该驱动

root@work:/home/work/dirve/dev_t# insmod dev_t.ko
root@work:/home/work/dirve/dev_t# cat /proc/devices
Character devices:...230 dev_test

linux驱动学习——字符设备号相关推荐

  1. 【linux驱动之字符设备驱动基础】

    linux驱动之字符设备驱动基础 文章目录 linux驱动之字符设备驱动基础 前言 一.开启驱动学习之路 二.驱动预备知识 三.什么是驱动? 3.1 驱动概念 3.2 linux 体系架构 3.3 模 ...

  2. linux uart寄存器 代替 printk,Linux驱动学习之设备树(设备树下的LED驱动实验),...

    Linux驱动学习之设备树(设备树下的LED驱动实验), 概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.相当于从驱动代码分离出来的配置文件,比如串口的波特率通过设 ...

  3. Linux驱动之字符设备驱动

    系列文章目录 第一章 Linux入门之驱动框架 第二章 Linux驱动之字符设备驱动 文章目录 系列文章目录 前言 一.认识字符设备驱动 1.基本概念 2.基本概念 二.字符设备旧框架 1.注册和注销 ...

  4. linux用户空间flash驱动,全面掌握Linux驱动框架——字符设备驱动、I2C驱动、总线设备驱动、NAND FLASH驱动...

    原标题:全面掌握Linux驱动框架--字符设备驱动.I2C驱动.总线设备驱动.NAND FLASH驱动 字符设备驱动 哈~ 这几天都在发图,通过这种方式,我们希望能帮大家梳理学过的知识,全局的掌握Li ...

  5. linux驱动之字符设备

    linux驱动之字符设备 linux驱动设备分类 linux驱动分为了三种驱动: 字符设备: 字符设备和应用程序之间是以字节进行进行数据交换的.在进行数据交换的时候数据是以一定顺序进行传输的,传输是实 ...

  6. 【Linux驱动】字符设备驱动

    一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 1.字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面 ...

  7. 驱动学习----字符设备驱动框架

    字符设备驱动框架 1.字符设备驱动简介 2.file_operations 3.驱动模块的加载和卸载 4.字符设备的注册与注销 5.实现设备具体操作函数 6.添加LICENSE和作者信息 7.linu ...

  8. 嵌入式linux驱动之———字符设备驱动(一)

    一.简介: 在Linux内核驱动中,字符设备是最基本的设备驱动.字符设备是能够像字节流(比如文件)一样被访问的设备,就是说对它的读写是以子为单位的.比如串口在进行收发数据时就是一个字节一个字节进行的. ...

  9. Linux驱动之 字符设备 ioctl接口使用

    字符设备ioctl接口使用: Linux驱动编写除了对设备进行读写数据之外,通常还希望可以对设备进行控制. 从应用层传递一些命令参数,并在驱动层实现相应设备操作,这时候就用到了 ioctl函数: 应用 ...

最新文章

  1. 前端质量提升利器-马可代码覆盖率平台
  2. oracle简单命令
  3. 【转】深度理解C# 的执行原理
  4. Python高级数组处理模块numpy用法精要
  5. C# WebBrowser实现网页自动填表
  6. Tomcat架构探究
  7. 【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业 DP
  8. 【问题11】Redis分布式锁-SETNX实现
  9. 恭贺好友入选微软全国IT英雄,庆贺与王达老师达成合作关系
  10. 5.1索引压缩-词项的统计特性(Heaps定律、Zipf定律)
  11. iGoogle创新设计大赛
  12. SVN上传的时候没法显示文件名,只显示后缀名
  13. 黑莓BlackBerry 模拟器上浏览网页
  14. css3中-moz-、-ms-、-webkit-、-o-分别代表什么内核
  15. Very Deep Convolutional Networks for Large-Scale Image Recognition—中英文对照
  16. 老树新芽,在ES6下使用Express
  17. c盘是不是越大越好_Windows系统磁盘分区,C盘划分多大最合适?不是越大越好!...
  18. windows连接代理服务器,总是弹出输入用户名和密码的框的问题
  19. 电脑cpu风扇转一下就停无法开机_win7系统电脑开机cpu风扇转一下就停下来怎么办...
  20. JavaScript实现点击复制的功能

热门文章

  1. 【游戏建模干货】国外角色建模大师的这几步操作,堪称学习经典,赶紧脑补一下吧!
  2. nvidia GPU
  3. 【Andrew Ng深度学习作业】C1W4——Building your Deep Neural Network - Step by Step
  4. 运维之道 | 三剑客之sed命令 - 增删改查排
  5. ddos和cc攻击的区别,防护!!
  6. linux系统部署软件流程图,Dia:一款灵巧的流程图软件
  7. 打算去上海,不知道会如何?仅仅因为这个理由
  8. 关于某个日期快速计算是星期几(基姆拉尔森公式)
  9. htcm7刷linux,HTC ONE M7刷机包 Flyme6 安卓6.0插桩适配 顺畅体验 完整root 6.7.6.5R
  10. QCon: 工程师成长的金字塔思维