linux驱动学习——字符设备号
字符设备号本质就是一个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驱动学习——字符设备号相关推荐
- 【linux驱动之字符设备驱动基础】
linux驱动之字符设备驱动基础 文章目录 linux驱动之字符设备驱动基础 前言 一.开启驱动学习之路 二.驱动预备知识 三.什么是驱动? 3.1 驱动概念 3.2 linux 体系架构 3.3 模 ...
- linux uart寄存器 代替 printk,Linux驱动学习之设备树(设备树下的LED驱动实验),...
Linux驱动学习之设备树(设备树下的LED驱动实验), 概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.相当于从驱动代码分离出来的配置文件,比如串口的波特率通过设 ...
- Linux驱动之字符设备驱动
系列文章目录 第一章 Linux入门之驱动框架 第二章 Linux驱动之字符设备驱动 文章目录 系列文章目录 前言 一.认识字符设备驱动 1.基本概念 2.基本概念 二.字符设备旧框架 1.注册和注销 ...
- linux用户空间flash驱动,全面掌握Linux驱动框架——字符设备驱动、I2C驱动、总线设备驱动、NAND FLASH驱动...
原标题:全面掌握Linux驱动框架--字符设备驱动.I2C驱动.总线设备驱动.NAND FLASH驱动 字符设备驱动 哈~ 这几天都在发图,通过这种方式,我们希望能帮大家梳理学过的知识,全局的掌握Li ...
- linux驱动之字符设备
linux驱动之字符设备 linux驱动设备分类 linux驱动分为了三种驱动: 字符设备: 字符设备和应用程序之间是以字节进行进行数据交换的.在进行数据交换的时候数据是以一定顺序进行传输的,传输是实 ...
- 【Linux驱动】字符设备驱动
一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 1.字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面 ...
- 驱动学习----字符设备驱动框架
字符设备驱动框架 1.字符设备驱动简介 2.file_operations 3.驱动模块的加载和卸载 4.字符设备的注册与注销 5.实现设备具体操作函数 6.添加LICENSE和作者信息 7.linu ...
- 嵌入式linux驱动之———字符设备驱动(一)
一.简介: 在Linux内核驱动中,字符设备是最基本的设备驱动.字符设备是能够像字节流(比如文件)一样被访问的设备,就是说对它的读写是以子为单位的.比如串口在进行收发数据时就是一个字节一个字节进行的. ...
- Linux驱动之 字符设备 ioctl接口使用
字符设备ioctl接口使用: Linux驱动编写除了对设备进行读写数据之外,通常还希望可以对设备进行控制. 从应用层传递一些命令参数,并在驱动层实现相应设备操作,这时候就用到了 ioctl函数: 应用 ...
最新文章
- 前端质量提升利器-马可代码覆盖率平台
- oracle简单命令
- 【转】深度理解C# 的执行原理
- Python高级数组处理模块numpy用法精要
- C# WebBrowser实现网页自动填表
- Tomcat架构探究
- 【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业 DP
- 【问题11】Redis分布式锁-SETNX实现
- 恭贺好友入选微软全国IT英雄,庆贺与王达老师达成合作关系
- 5.1索引压缩-词项的统计特性(Heaps定律、Zipf定律)
- iGoogle创新设计大赛
- SVN上传的时候没法显示文件名,只显示后缀名
- 黑莓BlackBerry 模拟器上浏览网页
- css3中-moz-、-ms-、-webkit-、-o-分别代表什么内核
- Very Deep Convolutional Networks for Large-Scale Image Recognition—中英文对照
- 老树新芽,在ES6下使用Express
- c盘是不是越大越好_Windows系统磁盘分区,C盘划分多大最合适?不是越大越好!...
- windows连接代理服务器,总是弹出输入用户名和密码的框的问题
- 电脑cpu风扇转一下就停无法开机_win7系统电脑开机cpu风扇转一下就停下来怎么办...
- JavaScript实现点击复制的功能
热门文章
- 【游戏建模干货】国外角色建模大师的这几步操作,堪称学习经典,赶紧脑补一下吧!
- nvidia GPU
- 【Andrew Ng深度学习作业】C1W4——Building your Deep Neural Network - Step by Step
- 运维之道 | 三剑客之sed命令 - 增删改查排
- ddos和cc攻击的区别,防护!!
- linux系统部署软件流程图,Dia:一款灵巧的流程图软件
- 打算去上海,不知道会如何?仅仅因为这个理由
- 关于某个日期快速计算是星期几(基姆拉尔森公式)
- htcm7刷linux,HTC ONE M7刷机包 Flyme6 安卓6.0插桩适配 顺畅体验 完整root 6.7.6.5R
- QCon: 工程师成长的金字塔思维