Linux内核机制及驱动分析
文章平均质量分 93
本个专栏以分析Linux内核源码中的各个机制为主,后期会结合各种驱动框架,有兴趣的小伙伴可以一起探讨!
文艺小少年
这个作者很懒,什么都没留下…
展开
-
Linux驱动学习--文件系统学习(三)常用文件系统整理
一、引言二、Linux中常用的磁盘文件系统------>ext系列文件系统------>swap文件系统------>vfat文件系统------>NFS文件系统------>ISO 9660文件系统三、文件系统核心设计------>sysfs介绍------>sysfs重要目录分析------>动态设备节点四、虚拟文件系统一、引言最近自己在重新做最小文件系统,启动的时候不小心挂错了一个虚拟文件系统,导致最后启动的时候找不到conso原创 2020-10-30 10:59:48 · 296 阅读 · 0 评论 -
Linux驱动学习--中断机制及softirq、tasklet整理
目录一、引言二、linux中断机制的介绍------> 相关结构体------> 操作步骤三、softirq------> 内核中的softirq四、Tasklet一、引言前一章分析了内核中延迟执行的一些机制,这章来讲讲linux中常用的中断机制,会侧重介绍softirq、tasklet这两个机制二、linux中断机制的介绍对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable原创 2020-10-29 11:08:19 · 290 阅读 · 0 评论 -
Linux驱动学习--等待队列、工作队列整理
目录一、引言二、驱动框架------> dts节点------> HDMI DDC 驱动------> HDMI HDCP驱动------> HDMI CEC驱动------> HDMI 主设备驱动一、引言最近在深入看阻塞相关东西,发现内核里有几个重要的机制,有点混淆,这章就来详细分析下。等待队列、工作队列、Tasklet都是linux驱动很重要的机制,二、等待队列(waitqueue)linux驱动中,阻塞一般就是用等待队列来实现,将进程停止在此处并睡原创 2020-10-28 20:28:20 · 359 阅读 · 0 评论 -
Linux驱动学习--文件系统学习(二)inode相关介绍
一、引言二、inode 和 block 概述三、inode------>inode的大小------>inode号码------>目录文件------>inode的使用一、引言之前简单介绍了一下linux中的文件系统,这章来分析一下inode相关的东西二、inode 和 block 概述文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次原创 2020-09-25 11:44:42 · 163 阅读 · 0 评论 -
Linux驱动学习--文件系统学习(一)文件系统框架简单介绍
目录一、引言二、数据传输流程------>PCM_read------>声卡驱动一、引言最近打算系统的整理一下文件系统相关的东西二、linux的文件系统在LINUX系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。这样带来优势也是显而易见原创 2020-09-25 10:53:46 · 297 阅读 · 0 评论 -
Linux驱动学习--内存管理(二)内存映射机制的简单介绍
目录一、引言二、linux的内存分布------> a、内核空间的内存分布------> b、内核空间的内存申请------> c、虚拟地址与物理地址的转换------> d、用户空间与内核空间传输数据一、引言之前分析了linux中内存管理的相关机制,今天来整理一下物理、虚拟地址的转换二、linux的内存分布一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分——用户空间和内核空间,大小分别为0-3G,3-4G。用户进程通常情况下,只能访问用户空原创 2020-09-23 10:41:27 · 234 阅读 · 0 评论 -
Linux内核学习之--模块与设备
一、引言本章讨论内核的四种成分设备类型:为了统一普通设备的操作做的分类模块:Linux内核中按照需求加载和卸载目标源码的机制内核对象:内核数据结构中支持面向对象的简单操作,还维护对象之间的父子关系sysfs:表示系统中设备树的一个文件系统二、设备类型Unix系统中,所有设备被分为以下三类块设备字符设备网络设备块设备blkdev,通常可再’/dev/block’目录下查看,寻...原创 2020-04-13 22:32:20 · 309 阅读 · 0 评论 -
常见接口、设备、文件系统类型扫盲
二、常见接口USB、MIPI、CSI、DVP 摄像头接口我们常用的电脑摄像头接口是USB接口,而常见的智能手机上的摄像头是MIPI接口,还有一部分的摄像头(比如说某些支持DVP接口的硬件)是DVP接口。USB是串行通用串行总线(Universal Serial Bus)的简称MIPI是移动行业处理器接口(Mobile Industry Processor Interface)的简称 使...原创 2020-04-12 00:00:55 · 1796 阅读 · 0 评论 -
Linux日常使用整理------杂货/linux-C-API
一、引言好久没发博客啦,这段时间公司的项目有点忙(加上自己有点懒~)。这几天刚刚忙完,所以想着来整理下这段时间的日常使用命令吧,会比较杂,但都是一些很好的命令,大家也可以多多补充哈!二、git/repo的使用之前整理过一篇关于git、repo的文章,这里就简单补充一点reporepo是一个基于git的android源码管理工具,其实就是将很多git库集中成了一个大库,其中的子库包括:ke...原创 2020-04-08 11:55:25 · 274 阅读 · 0 评论 -
Linux内核学习之七--中断和中断处理
一、引言让硬件在需要的时候向内核发出信号,让处理器与外部硬件设备更好的协同工作二、中断中断使得硬件发出通知给处理器。其本质上是一种特殊的电信号。硬件设备生成中断的时候并不考虑与处理器时钟同步,所以内核可能随时因为新到来的中断而被打断。...原创 2020-03-22 16:00:51 · 272 阅读 · 0 评论 -
Linux内核学习之六--内核数据结构
一、引言本章会介绍内核中常用的几种数据结构链表队列映射二叉树二、数据结构1、链表链表中所包含的元素都是动态创建并添加的,在内存中无需使用连续内存区普通链表:一个一个往下链接双向链表:拥有两个指针,分别指向上/下一个节点环形链表:首尾相连链表代码头文件在<linux/list.h>中,定义为list_head的双向链表,只含有指针,不含有数据,使用时内嵌在我们的结...原创 2020-03-16 22:30:41 · 233 阅读 · 0 评论 -
Linux内核学习之五--系统调度
引言系统调用的作用:1、内核为用户进程与内核进程的交互提供了一组接口,让用户程序受限的访问硬件设备。2、提供了进程间通讯的机制3、提供了申请操作系统其他资源的能力系统调用再用户程序和内核间扮演了使者的角色,应用程序发出各种请求,内核负责满足,这个机制能保障系统运行可靠,避免应用程序权限过大API C库应用程序通过用户空间实现的应用编程接口(API),而不是通过系统调用来编写,有些AP...原创 2020-03-15 14:42:24 · 214 阅读 · 0 评论 -
Linux内核学习之四--进程调度
进程调度概念:调度程序负责决定将哪个进程投入运行,和时运行,运行多长时间。系统中可运行的进程数比处理器的个数多,所有注定某一时刻某些进程不能运行,调度程序就是从一组可运行状态的进程中选择一个来执行。多任务多任务操作系统,能够同时并发的交互执行多个进程。而位于内存的进程不一定处于可执行状态,有可能被阻塞,这也是多操作系统的功能,使多个进程处于堵塞或睡眠状态。抢占式与非抢占式多任务系统抢...原创 2020-03-14 23:10:07 · 183 阅读 · 0 评论 -
Linux内核学习之三--进程管理
进程/线程的概念进程:包含代码段,其他资源,内存地址空间和多个执行线程。是处于执行期的程序以及相关资源的总称线程:进程中活动的对象进程提供两种虚拟机制:虚拟处理器:实际为多个进程共享一个处理器,虚拟成每个进程独享一个处理器,第四章介绍虚拟内存:让进程认为自己拥有整个地址空间,线程之间共享虚拟内存。十二章介绍操作新进程创建:linux中的系统调用函数:fork(),复制一个现有进程来创...原创 2020-03-10 21:30:52 · 187 阅读 · 0 评论 -
Linux内核学习之一、二章简单了解linux
第一章第一章前面简单介绍了Unix和linux的起源,不是很感兴趣,就跳过啦。之后引出了操作系统的概念操作系统发:在整个系统中负责完成最基本功能和系统管理的部分,包括:1、启动引导程序2、内核3、设备驱动程序4、命令行shell或其他种类的用户界面5、基本的文件管理工具和系统工具系统态/用户态定义系统态:内核独立于普通应用程序,处于内核态,统称为内核空间。用户态:应用程序在用...原创 2020-03-08 15:42:02 · 677 阅读 · 0 评论 -
Linux驱动学习--内存管理(一)虚拟/物理地址空间介绍
目录一、引言进程与内存一、引言Linux的内存管理,作为四大子系统之一,十分重要,之前断断续续看过一部分,今天就来好好的整理下二、进程与内存每个进程中的内存分布所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。下面来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区**代码段:**代码段是用来存放原创 2020-08-30 14:49:49 · 512 阅读 · 0 评论 -
Linux驱动学习--PCI设备驱动
目录一、引言二、PCI总线介绍三、PCI设备驱动组成四、查看本机上的PCI设备一、引言PCI总线在linux中应用的十分广泛,本文就来简单介绍一下二、PCI总线描述1、PCI总线结构PCI是CPU和外围设备通信的高速传输总线。普通PCI总线带宽一般为132MB/s(在32bit/33Mhz下)或者264MB/s(在32bit/66Mhz下)。PCI总线体系结构是一种层次式的体系结构,PCI桥设备占据着重要的地位,它将父总线与子总线连接在一起,从而使整个系统看起来像一颗倒置的树形结构。P原创 2020-08-30 12:00:38 · 1592 阅读 · 4 评论 -
Linux驱动学习--ioctl操作接口
目录一、引言https://blog.csdn.net/qq_19923217/article/details/82698787二、操作接口一、引言花课余时间来系统整理下常用的几个高级字符设备的操作接口二、操作接口ioctlioctl 是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能,通常以增设 ioctl() 命令的方式实现。在文件 I/O 中,ioctl 扮演着重要角色,本文将以驱动开发为侧重点,从用原创 2020-08-08 22:06:36 · 271 阅读 · 0 评论 -
Linux内核编程学习--GDB调试
目录一、引言二、GDB的基本使用----->gdb基本调试命令----->gdb断点调试命令----->gdb检查修改运行中的代码三、GDB的进阶使用四、转储文件(core)----->core文件的配置----->使用转储文件进行GDB调试一、引言最近在项目开发中遇到了栈内存错误的问题,最后花了半天,查找下来为栈溢出了,所以今天来回顾一下adb工具的使用二、GDB的基本使用GDB的介绍GDB(GNU Debugger)是GCC的调试工具。其功能强大原创 2020-08-08 17:05:24 · 400 阅读 · 0 评论 -
Linux内核编程学习--定时器和时间管理及进程休眠
目录一、引言二、原创 2020-07-26 11:43:16 · 604 阅读 · 0 评论 -
Linux内核编程学习--syslog等调试技术
目录1、引言一、引言调试内核中的各种bug,相比应用程序,更加困难,因为整个内核十分庞大,难跟踪,还容易导致系统崩溃,破坏了现场,所以本篇文章来简单介绍下在linux中的调试方式二、调试方式1、调试配置通常位于 ‘kernel hacking’ 菜单中,其中有很多debug开关,不过我目前没用过,就之后再分析了2、打印调试printk与printf不同的是,printk专用于内核,附加了日志级别,编译时预处理器会将它和消息文本拼接在一起printk(KERN_WARNING "3w-sa原创 2020-07-26 10:20:44 · 489 阅读 · 0 评论 -
Linux内核驱动设备学习之一--驱动设备的简单认识
一、引言今天决定新开一个专题来和大家一起学习Linux中的设备驱动,之前也学过一些驱动模型,但没有很系统的学习过,所以这次就来系统的学习下啦!这张先来简单认识下Linux中的设备驱动二、设备驱动程序的作用1、分层大多数编程问题都可以分为两部分:1、需要提供什么功能(机制)2、如何使用这些功能(策略)很明显,linux中的驱动程序只提供机制,而不提供策略。这样可让策略的实现完全脱离...原创 2020-07-25 21:29:08 · 209 阅读 · 0 评论 -
Linux内核编程学习--几种同步机制的介绍
目录一、引言二、内核同步------> a、RCU------> b、spinlock 自旋锁------> c、信号量与互斥体------> d、顺序锁------> e、读写锁三、总结一、引言在Linux内核编程中,很非常多的机制,本篇文章就来介绍下Linux中的同步机制二、内核同步先介绍一个概念:临界区就是访问和操作共享数据的代码段。多个执行线程并发访问同一个资源通常是不安全的,我们需要保证整个临界区的运行不被打断,所以在运行临界区的时候,通常原创 2020-07-25 21:22:02 · 940 阅读 · 0 评论