驱动学习之驱动的设备文件

首先需要明白的一点是:一个硬件对应一个驱动,对应一个设备文件(/dev/),用来描述这个设备,将来应用程序就是通过这个设备文件来找到这个驱动。

1:设备号 = 主设备号+次设备号

主设备号标识的是设备的驱动告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务,次设备号则是具体唯一标识是哪个设备。

在linux中,通过mknod创建设备文件:mknod /dev/xxx  c  主设备号 次设备号  ,可以通过ls -l来查看xxx设备文件的信息。其中/dev/xxx:设备文件的全路径;  c:表示是设备文件

mknod /dev/test c 250 0

这样就创建了一个设备文件,其主设备号是250(insmod时系统自动分配的,系统自动分配的主设备号是从大到小分配的(这个查看register_chrdev的实现代码可以知道)这个主设备号就是register_chrdev时返回的设备那个主设备号,也可以自己指定),次设备号是0。

时间: 2024-10-12 02:26:59

驱动学习之驱动的设备文件的相关文章

Linux嵌入式驱动学习之路⑩字符设备驱动-my_led

首先贴上代码: 字符设备驱动代码: /** *file name: led.c */#include <linux/sched.h> #include <linux/signal.h> #include <linux/spinlock.h> #include <linux/errno.h> #include <linux/random.h> #include <linux/poll.h> #include <linux/init

Linux驱动学习之驱动开发准备工作

一.开启驱动开发之路 1.驱动开发的准备工作 (1)正常运行linux系统的开发板.要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的.原因在于在安装模块的时候会进行安全性校验 (2)内核源码树,其实就是一个经过了配置编译之后的内核源码.我们需要内核源码编译自己的模块 (3)nfs挂载的rootfs,主机ubuntu中必须搭建一个nfs服务器.这对于驱动开发前期是不可或缺的,能够提高我们的开发效率. 2.驱动开发的步骤 (1)驱动源码编写.Makefile编写.编译 (2)

驱动学习之驱动体验

1:什么是linux驱动 从本质上讲,驱动就是属于内核层面的程序代码,是直接和硬件打交道的.与裸机中直接操作寄存器去操作硬件的不同之处在于,裸机中操作的是物理内存,而我们在驱动中操作的是虚拟内存,驱动中还可以调用内核中提供的很多接口函数来简化我们操作硬件的过程. 2:linux设备驱动的分类 根据设备本身的读写操作特征的差别,linux驱动主要分为三类 (1)字符设备驱动 字符设备驱动的特点是软件在驱动设备是以字节为单位进行的,如LED.LCD.串口.蜂鸣器等 (2)块设备 块设备是相对于字符设

驱动学习之驱动和应用的接口

在前面讲过,驱动层是应用层是分离,驱动层的代码不能使用再应用层,应用层也不能直接操作驱动代码,那么应用层和驱动层之间是如何来实现数据间的交换的能,方法就是通过相应的接口函数. (1)copy_from_user unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) {    might_sleep();      if (access_ok(VERIFY_READ, from, n))  

写作驱动学习

写作驱动学习 在软件开发领域有这样的几个名词 BDD.测试驱动开发(Test-driven development)是极限编程中倡导的程序开发方法,以其倡导先写测试程序,然后编码实现其功能得名 TDD.行为驱动开发(Behavior-Driven Development)是一种敏捷软件开发的技术,它鼓励软件项目中的开发者.QA和非技术人员或商业参与者之间的协作. DDD.领域驱动设计(Domain-Driven Design)的一个核心的原则是使用一种基于模型的语言. 而最近我处在于一个尴尬的位

Linux 设备文件的创建和mdev

引子 本文是嵌入式企鹅圈开篇--<linux字符设备驱动剖析>的姐妹篇,在上述文章里面我们具体描写叙述了字符设备驱动框架涉及的驱动注冊.通过设备文件来訪问驱动等知识.并明白通过device_create接口并结合mdev来创建设备文件.但没有展开这个知识点. 本文将从代码级去理解Linux设备类和设备文件的创建过程. 通过这两篇文章,我们将能够对linux字符设备驱动的机制和脉络有全面的认识. 下面程序分析没有缩进,编辑了好几次都不行,耐心点才干跟踪完整个代码:-) 一.设备类相关知识 设备类

0915-----Linux设备驱动 学习笔记----------一个简单的字符设备驱动程序

0.前言 研究生生活一切都在步入正轨,我也开始了新的学习,因为实在不想搞存储,所以就决定跟师兄学习设备驱动,看了两星期书,终于有点头绪了,开始记录吧! 1.准备工作 a)查看内核版本 uname -r b)安装内核源码树(http://www.cnblogs.com/Jezze/archive/2011/12/23/2299871.html) 在www.linux.org上下载源码编译,这里是.xz格式,需要安装解压工具,xz-utils: 解压方法示例:xz -d linux-3.1-rc4.

linux 驱动学习(一)简单的字符设备驱动程序

linux 系统将设备分为三种类型:字符设备.块设备和网络接口设备. 文章将先给出字符设备驱动程序,参照程序记录知识点,可能会不全,以后会慢慢加 .知识点记录完成后,会贴出字符设备驱动程序的测试程序并记录测试过程. 注释版 1 #include "linux/kernel.h" //内核头文件,含有一些内核常用函数的原形定义 2 #include "linux/module.h" //包含大量加载模块需要的函数和符号的定义 3 #include "linu

字符设备驱动体验,字符设备驱动学习

字符设备驱动学习 在Linux系统中,驱动程序通常采用内核模块的程序结构来进行编码.因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块. 一.编译安装字符设备驱动程序 memdev文件中:在这个文件里和真实的硬件无关,只是虚构了一个数组 1 #include <linux/module.h> 2 #include <linux/fs.h> 3 #include <linux/init.h> 4 #include <linux/cdev.h> 5