首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核设备驱动之proc文件系统笔记整理

/proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动态地生成文件的内容。...也可以通过写/proc文件修改内核参数 /proc目录下的文件分析 /proc/$pid关于进程$pid的信息目录。每个进程在/proc 下有一个名为其进程号的目录。.../proc/devices 列出字符和块设备的主设备号,以及分配到这些设备号的设备名称 /proc/dma 显示当前使用的DMA通道。.../proc/filesystems 列出了可供使用的文件系统类型,通常是编入内核文件系统类型,但可以通过模块加入新的类型 /proc/interrupts 显示使用的中断号,中断名称,以及这些中断从系统启动后产生的次数...供uptime使用 /proc/version 内核版本 (2)自行实现一个/proc文件 需包含头文件,函数定义在/fs/proc/generic.c a.在/proc

3.5K21
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核设备驱动之虚拟文件系统笔记整理

/******************** * 虚拟文件系统VFS ********************/ (1)VFS介绍 虚拟文件系统VFS作为内核的子系统,为用户空间程序提供了文件系统的相关接口...在文件系统安装时,内核会调用alloc_super()函数从磁盘读取文件系统超级块,并将其信息填充到内存中的超级块对象中。...一个文件在内存中只有一个索引节点对象,特殊文件(比如管道和设备文件)也有其对应的索引节点。...d.文件对象file 文件对象表示进程已经打开文件。这个对象在open的时候创建,在close的时候销毁。 因为多个进程可以同时打开和操作一个文件,所以一个文件可能在内存中有多个file对象。...我们要实现一个char类型的字符设备,也就是要实现file_operations中支持的函数。

2.1K20

Linux 内核Linux 内核体系架构 ( 进程调度 | 内存管理 | 中断管理 | 设备管理 | 文件系统 )

全部硬件资源 , 实际上 , 进程 不会 长时间独占 某个资源 , 操作系统 , 利用 进程调度器 , 令 多个进程 并发执行 ; Linux 内核 没有 严格区分 进程 与 线程 ; 进程管理 :...包括 进程创建 , 销毁 , 线程组管理 , 内核线程管理 , 队列等待 ; 进程调度 位于 下图 Linux 内核整体架构图 中的 内核空间 ; 二、内存管理 ---- 内存管理 涉及到 物理内存管理...是最多的 , 设备树 PCI 总线设备 设备模型 Kobject ACPI 网络设备驱动 块设备驱动 字符设备驱动 设备管理 位于 下图 Linux 内核整体架构图 中的 内核空间 ; 五、文件系统...---- 文件系统应用场景 : F2FS EXT 2/3/4 XFS Linux 内核 为了支持各种文件系统 , 抽象出一个 虚拟文件系统 VFS , 这是一个文件系统的软件层 , 这样 Linux...内核可以很方便的集成各种文件系统 ; 文件系统 位于 下图 Linux 内核整体架构图 中的 内核空间 ;

1.8K30

韦东山:6000字长文告诉你如何学习嵌入式linux

1.4 在Linux中点灯、使用LCD 在Linux中,不允许应用开发人员直接去操作硬件,比如你想点个灯,不好意思,你无法直接访问寄存器;你需要通过驱动程序来访问寄存器。 为什么?...还是以LED为例,应用程序和驱动程序的协作如下图所示: 在Linux中,“一切皆文件”,要访问某个硬件,也是要打开文件、读写文件。...③ Linux内核 Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。...所以Linux内核要有这些Flash、SD卡里设备的驱动能力。 不仅如此,Linux内核还有进程调度能力、内存管理等功能。 所以:Linux内核 = 驱动集合 + 进程调度 + 内存管理等。...先学一些基础技能 要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的: ① 基本设备的访问,比如LCD、输入设备 ② 进程、线程、进程通信、线程同步与互斥 ③ 休眠-唤醒、POLL机制、

3.2K50

读书笔记|Linux内核设计与实现

应用程序使用库提供的open,read,write函数打开我们的设备文件。 库根据open,read,write函数传入的参数执行"swi"指令,这条指令引发CPU异常,进入内核。...Linux设备驱动作为一个linux内核模块存在,模块都有2个接口函数,模块初始化函数和模块退出函数。 上面提到的驱动程序的注册。一般是由模块初始化函数来实现的。...模块退出函数则用于取消内核注册,释放资源。 可见只有运行了驱动的这个模块初始化函数之后,驱动程序才能够被注册,内核才能找到设备驱动。 那么什么时候模块初始化函数才获得运行呢?...驱动程序内核的一部分,工作在内核态,应用程序工作在用户态。这样就存在数据空间访问的问题:无法通过指针直接将二者的数据地址进行传递。...进程管理 描述进程的数据结构,进程的创建,fork、clone等方法创建进程,进程的关系,进程结束;进程调度;进程树; 进程就是运行的程序;进程除了可执行的代码段,还包括打开文件,挂起的信号,内核内部数据

99120

如何学习嵌入式Linux_韦东山

1.4 在Linux中点灯、使用LCD 在Linux中,不允许应用开发人员直接去操作硬件,比如你想点个灯,不好意思,你无法直接访问寄存器;你需要通过驱动程序来访问寄存器。 为什么?...还是以LED为例,应用程序和驱动程序的协作如下图所示: 在Linux中,“一切皆文件”,要访问某个硬件,也是要打开文件、读写文件。...Linux内核Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。...所以Linux内核要有这些Flash、SD卡里设备的驱动能力。 不仅如此,Linux内核还有进程调度能力、内存管理等功能。 所以:Linux内核 = 驱动集合 + 进程调度 + 内存管理等。...先学一些基础技能 要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的: 基本设备的访问,比如LCD、输入设备 进程、线程、进程通信、线程同步与互斥 休眠-唤醒、POLL机制、信号 网络编程

1.4K30

韦东山:6000字长文教你如何学习嵌入式开发

还是以LED为例,应用程序和驱动程序的协作如下图所示: 在Linux中,“一切皆文件”,要访问某个硬件,也是要打开文件、读写文件。...③ Linux内核 Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。...先学一些基础技能 要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的: ① 基本设备的访问,比如LCD、输入设备 ② 进程、线程、进程通信、线程同步与互斥 ③ 休眠-唤醒、POLL机制、...③ Linux内核 Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。...先学一些基础技能 要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的: ① 基本设备的访问,比如LCD、输入设备 ② 进程、线程、进程通信、线程同步与互斥 ③ 休眠-唤醒、POLL机制、

2K1915

Rust for Linux | 用 Rust 写 Linux 内核模块

虽然设备驱动程序不一定都是内核模块,并且内核模块也不一定就是设备驱动程序,但是内核模块这种特性似乎注定是为设备驱动程序而生。...以内核模块存在的驱动程序,其文件数据组织形式上是ELF(Executable and Linkable Format)格式,更具体来说,内核模块是一种普通的可重定位目标文件(比如 demodev.ko)...我们现在编写的是一个字符设备。字符设备是通过设备文件访问的,设备文件通常位于 /dev。这是约定俗成的。编写驱动程序时,将设备文件放在当前目录下即可。只需确保将其放在/dev中作为生产驱动程序即可。...SETP4: 注册一个 misc 设备 回想一下前面内核模块的生命周期,接下来我们需要将驱动程序注册到子系统。 我们要将设备注册的是misc子系统,它是 Linux 中最小的子系统。...代码:https://github.com/wedsonaf/linux/commits/lf-session 《Linux 设备驱动程序》和 《深入 Linux 设备驱动程序内核机制》 在线免费阅读

14.5K22

驱动开发(WDM)

修改函数地址即可自定义设备驱动 三种驱动程序 总线驱动程序(负责和具体的硬件设备交互),单个 I/O 总线设备,并提供与设备无关的单槽功能,创建设备对象=>PDO 功能驱动程序设备功能的具体实现),驱动单个设备...,创建设备对象=>FDO 筛选器驱动,筛选设备的 I/O 请求、设备类或总线(使用ObReferenceObjectByHandle打开设备修改驱动关联的函数),创建设备对象=>DO API Io,IO...管理 Ex,内存分配 Ke,内核对象调用函数,不能分页 Rtl,字符串内存操作 Zw、NT,文件和注册表操作 Ps,进程、线程 内核用户层数据交换 DO_BUFFERED_IO,内存小,效率低 DO_DIRECT_IO...对象名称 对象管理器ObReferenceObject引用+1 IRP irp的目标是driverObject的成员FileObject,指向各个设备文件 startio(设备忙排队等待)和多线程 irp...命令添加模块(.ko),在不需要的时候用rmmod命令卸载模块 linux的三个基本构件是:引导系统(boot loader), linux内核,根文件系统,包含3个基本构件可以生成镜像img文件,busybox

1.3K31

深度:一文看懂Linux内核Linux内核架构和工作原理详解

1 Linux内核的作用是将应用程序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。...内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。...▲ Linux内核体系结构 Linux内核的主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构的相关代码。...内核中网络源代码可以在 ./linux/net 中找到。 (6)设备驱动程序 Linux 内核中有大量代码都在设备驱动程序中,它们能够运转特定的硬件设备。...想象一下,如果您可以升级到Windows服务包,而不需要重新启动…… 内核模块 如果Windows已经安装了所有可用的驱动程序,而您只需要打开所需的驱动程序怎么办?

1.6K30

Linux入门、深入

结构              加载驱动程序了解设备驱动程序的概念              了解Linux字符设备驱动程序结构              能够编写字符设备驱动程序编写Skull驱动 ...            编写键盘驱动              编写I/O驱动              分析一个看门狗驱动程序              对比Linux2.6内核与2.4内核中字符设备驱动的不同...              Linux设备驱动程序设备驱动程序工作原理              典型的块设备驱动程序分析              块设备的读写请求队列了解Linux设备驱动程序结构...              能够编写简单的块设备驱动程序比较字符设备与块设备的异同              编写MMC卡驱动程序              分析一个文件系统             ...对比Linux2.6内核与2.4内核中块设备驱动的不同              11、文件系统              虚拟文件系统              文件系统的建立

2.9K61

一文让你深度了解Linux内核架构和工作原理

内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。...Linux内核体系结构Linux内核的主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构的相关代码。...在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU 寄存器)。在用户空间,通常使用进程 这个术语,不过 Linux 实现并没有区分这两个概念(进程和线程)。...内核中网络源代码可以在 ./linux/net 中找到。(6)设备驱动程序Linux 内核中有大量代码都在设备驱动程序中,它们能够运转特定的硬件设备。...想象一下,如果您可以升级到Windows服务包,而不需要重新启动……内核模块如果Windows已经安装了所有可用的驱动程序,而您只需要打开所需的驱动程序怎么办?这本质上就是内核模块为Linux所做的。

76710

嵌入式Linux上机实验_基于IMX6ULL

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...IMX6ULL LCD驱动程序 驱动源码:Linux-4.9.88\drivers\video\fbdev\mxsfb.c 设备树: arch/arm/boot/dts/imx6ull.dtsi...要做的事情 去除内核自带的驱动程序 加入我们编写的驱动程序设备文件 重新编译内核设备树 上机测试:使用编译出来的内核设备树启动板子 2....去除内核自带的驱动程序 修改内核文件:drivers/video/fbdev/Makefile,把内核自带驱动程序mxsfb.c对应的那行注释掉,如下: #obj-$(CONFIG_FB_MXS)...加入新驱动程序设备树 复制驱动程序: 把11_lcd_drv_imx6ull_ok\lcd_drv.c放到内核源码目录drivers/video/fbdev 备份内核自带设备文件:arch/arm

1.1K50

linux内核编程指南_UNIXLINUX

block:块设备驱动程序I/O调度。 crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。 documentation:内核各部分的通用解释和注释。...drivers:设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c等。 fs:所支持的各种文件系统,如EXT、FAT、NTFS、JFFS2等。...完全处于TASK_UNINTERRUPTIBLE状态的进程甚至都无法被“杀死”,所以Linux 2.6.26之后的内核也存在一种TASK_KILLABLE的状态,它等于“TASK_WAKEKILL|TASK_UNINTERRUPTIBLE...3.虚拟文件系统 如图3.7所示, 图3.7 Linux虚拟文件系统 Linux虚拟文件系统隐藏了各种硬件的具体细节,为所有设备提供了统一的接口。...如图3.8所示,在Linux中网络接口可分为网络协议和网络驱动程序,网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备通信,每一种可能的硬件设备都有相应的设备驱动程序

1.9K20

应用软件开发的基础知识-操作系统

do_open() 系统调用处理程序将打开指定的文件,并将文件描述符返回给用户进程。最后,操作系统内核将当前进程切换回用户态。用户进程可以使用文件描述符来访问打开文件。...内核空间内核空间是操作系统运行的区域,应用程序无法直接访问内核空间。内核空间中的内存由操作系统管理,应用程序无法直接分配或释放内核空间中的内存。...多线程编程:多线程编程是指在一个进程中同时运行多个线程的过程。多线程编程可以提高程序的并发性和响应速度。Linux IOLinux IO 是 Linux 操作系统中用于处理输入输出请求的机制。...Linux IO 主要包括以下几个部分:设备驱动程序设备驱动程序是用于与特定设备进行通信的软件。设备驱动程序设备的硬件接口转换为操作系统可以理解的接口。...内核空间 IO 子系统:内核空间 IO 子系统是操作系统用于处理 IO 请求的核心组件。内核空间 IO 子系统负责将 IO 请求发送到设备驱动程序,并将设备驱动程序的响应返回给应用程序。

32620

Linux内核简介

Linux进程 Linux创建新进程的机制 Linux线程 内核线程 地址空间与特权级别 虚拟地址与物理地址 特权级别(Linux的两种状态)...系统调用 设备驱动程序、块设备和字符设备 网络 文件系统 模块和热插拔 注:本文为《深入Linux内核架构》 的学习笔记 理解Linux内核最好预备的知识点: 懂C语言 懂一点操作系统的知识...内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。...设备驱动程序、块设备和字符设备 设备驱动程序的任务:是在于支持应用程序经由设备文件设备通信。换言之,使得能按恰当的方式在设备上读取/写入数据。...网络 网卡也可以通过设备驱动程序控制。 但在内核中,网卡不能以设备文件访问。因为网络通信期间数据打包到各种协议层,内存处理数据必须针对协议层处理,才能有效将数据对接应用程序。

61620

Linux 内核Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )

文章目录 一、Linux 内核特性 1、Linux 内核组织形式 2、Linux 进程调度 3、Linux 内核线程 4、Linux 内核多平台虚拟内存管理 5、Linux 虚拟文件系统 6、Linux...进程调度 Linux 进程调度 简单 , 高效 , Linux 采用了 动态优先级 的调度方式 ; 3、Linux 内核线程 Linux 支持 内核线程 , 即 守护进程 , 其 运行效率 高于 普通线程...Linux 内核很容易移植到新的硬件平台中 ; 5、Linux 虚拟文件系统 Linux 虚拟文件系统 , 英文全程 Virtual File System , 简称 VFS ; 虚拟文件系统 ( VFS...) 为 逻辑文件系统 ( FAT32 , NFTS , EXT2/3/4 ) 提供 统一的标准接口 , 也为 硬件设备 提供了 标准接口 ; 6、Linux 内核模块机制 Linux 模块机制 可以使得...Linux 内核能够 保持独立 , 并且 很容易 进行扩充 , 可以任意 添加 / 卸载 内核模块 ; 如 : 新增加了一个设备 , 设备驱动程序就是一个内核模块 , 可以 动态的安装该设备驱动程序内核模块

66320
领券