
Linux 内核
文章平均质量分 95
小猪佩奇TONY
求知若渴,虚心若愚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux 内核学习(12) --- Linux workqueue
work queue即工作队列,也是中断下半部的一种work queue将下半部工作推迟给一个内核线程去执行 ==>总是会在进程的上下文执行,重要的是workqueue允许重新调度甚至睡眠如果推迟的工作需要睡眠,则使用workqueue,否则使用softirq或taskletsworkqueue适用于需要分配大量的内存,获得一个信号量,或者执行阻塞的I/O的情况工作队列创建的内核线程称为工作者线程(),工作队列子系统创建了一个缺省的工作者线程来处理这些推后的工作,一般都是使用缺省的工作线程。原创 2025-06-21 15:47:32 · 1004 阅读 · 0 评论 -
Linux 内核学习(11) --- Linux 链表结构
链表是一种数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针链表可以动态增长或者缩小,适合频繁的插入和删除操作,常见的链表类型有单向链表和双向链表在 linux 内核开发中,开发者无需自己实现链表或者使用第三方库,内核内置了双向链表实现定义在中。原创 2025-06-12 21:41:09 · 1378 阅读 · 0 评论 -
Linux 内核学习(10) --- Linux sysfs 节点创建
在/sysint retval;if (!kobj)name表示目录名称parent表示父目录,NULL为默认在/sys目录下创建。原创 2025-06-11 21:28:53 · 437 阅读 · 0 评论 -
Linux 内核学习(9) --- Linux sysfs 文件系统
sysfs是一个基于RAM的文件系统,从Linux 2.6内核开始引入,用于导出内核对象()的数据,属性到用户空间,以文件目录的形式为用户空间提供对这些数据,属性访问的支持从驱动开发的角度看,sysfs为用户提供了除了devfs和procfs之外的另外一种访问内核数据的方式,使用sysfs,编译内核的时候要定义,并且通过的方式将其挂载到/sys目录sysfs是一个特殊的文件系统,并没有一个实际存放文件的介质,sysfs的来源是kobject的层级结构,读取一个sysfs的文件,就是动态从kobject。原创 2025-05-25 16:01:08 · 869 阅读 · 0 评论 -
Linux 内核学习(8) --- 字符设备操作函数
<\ //30sizeof_IOC0_IOC_IOC_IOC_IOCsizeof_IOCsizeof_IOCsizeof>>>>>>>>type:一般为 magincNumbernr:一般为递增的序列号size:传输数据的sizecmd是一个类型的整形数,大小为 32bitcmd的高位 2Bit cmd[31:30] 是数据的传输方向,可以是_IOC_READ_IOC_WRITE或者和_IOC_NONEcmd[29:16]最多是 14 bit,表示数据的大小。原创 2025-05-25 15:06:24 · 783 阅读 · 0 评论 -
Linux 内核学习(7) --- 字符设备驱动
Linux 中主要有三类设备的驱动程序,分别是字符设备驱动程序,块设备驱动程序和网络设备驱动程序字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等,字符设备的驱动程序结构如下图所示:字符设备可以通过文件节点来访问,设备文件和普通文件差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道,当然也存在数据区特性的字符设备,访问它们可以前后移动访问位置,比如就是这样一个设备,app可以用mmap或者lseek访问获取整个图像主设备号和次设备号。原创 2025-05-07 21:51:17 · 885 阅读 · 0 评论 -
Linux 内核学习(6) --- Linux 内核基础知识
可以在系统上电或者复位的时候以某种方法执行,执行方法包括:被BIOS引导执行,直接 NorFlash 执行,NAND Flash 代码被 MCU自动拷贝进入内部或者外部 RAM直接执行能将U盘,磁盘,光盘,NAND/Nor Flash ROM SD卡中存储介质,甚至串口网口中的操作系统加载到 RAM,并且将控制权交给内核源代码执行内核镜像不是完全直接可以执行的代码,而是一个压缩过的zImage 小内核bzImage big 大内核。原创 2025-05-07 21:29:42 · 1440 阅读 · 0 评论 -
Linux 内核学习(5) --- Linux 内核底半部机制
当产生一个中断时,会进入中断处理程序,但中断处理程序必须快速、异步、简单的对硬件做出迅速响应并完成那些时间要求很严格的操作,因此,对于那些其他的、对时间要求相对宽松的任务,就应该推后到中断被激活以后再去运行这样,整个中断处理流程就被分为了两个部分:第一个部分是中断处理程序上半部(),内核通过对它的异步执行完成对硬件中断的即时响应(完成清楚中断标志等操作)下半部() 下半部的任务主要是执行与中断相关的工作,这些工作没有被中断服务程序本身完成下半部并不需要指明一个确切时间,只要把这些任务推迟一点,让它们在系原创 2025-01-26 22:00:21 · 1063 阅读 · 0 评论 -
Linux 内核学习(4) --- devfreq 动态调频框架
现在的Soc由众多的子模块构成,比如CNNDSPISPCPU等,在不同的场景下,并非所有的模块都要保持最高的性能,因此,SoC设计的时候会划分一些电压域,这些电压域内的模块,可以根据具体需要调整电压和频率,从而达到既能实现功能,又能降低功耗的目的不过频率电压并不是随意搭配的,一般情况下,高频对应着高压,低频对应着低压,这是由于晶体管的电器特性决定的Linux内核用对这些设备支持的频率和电压进行描述和管理,CPU的DVFS也就是cpufreq也是基于OPP实现的,但是仅仅支持CPU。原创 2025-01-26 12:20:27 · 967 阅读 · 0 评论 -
Linux 内核学习(3) --- 内核中断机制
不可以使用耗时很长的函数,因为中断会关闭调度,中断的优先级高于任何任务的优先级,长时间的中断处理会影响到系统的响应速度,使整个系统的任务无法政策运行,造成很多的任务超时,容易导致很多不可预知的后果。因为中断会关闭调度,中断的优先级高于任何任务的优先级,长时间的中断处理会影响到系统的响应速度,使整个系统的任务无法政策运行,造成很多的任务超时,容易导致很多不可预知的后果。读取到的内容从左到右,分别为:1、逻辑中断号,2、中断在各CPU发生的次数,3、中断所属设备类名称,4、硬件中断号,5、中断处理函数。原创 2025-01-01 23:01:22 · 1099 阅读 · 0 评论 -
Linux 内核学习(2) --- regulator 框架
Regulator 指的是稳定器(调压器),有电压稳定器及电流稳定器两种,能够自动维持恒定电流或者电压,其中,电压稳定器在电路中比较常见。从设备驱动的角度来看,regulator的控制比较简单,主要有 enable/disable/ 输出电压或电流大小的控制。Linux利用 regulator framework 对regulator进行管理和控制。由调节器供电的设备被称为消费者(它们消耗调节器提供的电力。大多数调节器可以启用和禁用他们的输出,一些也可以控制他们的输出电压或电流。原创 2024-04-13 10:23:45 · 2778 阅读 · 1 评论 -
Linux 内核学习(1) --- 时钟子系统
使用clk_hw结构向 CCF 框架注册一个时钟设备,返回一个struct clk结构,其中clk_hw结构中 包含了结构,结构包含对时钟操作的具体函数集合为了简化操作,CCF将clock设备抽象为六中不同的类型,并且做了相应的接口封装,比如,对于Gate类型的设备,直接使用等类型的函数就可以进行注册CCF 框架会为每个注册的都分配一个结构,其中包含了操作函数的结构体结构,本质就是关联到init_data中的clk_opsconsumer通过clk_get等函数 获取的struct clk。原创 2024-04-10 11:38:15 · 2603 阅读 · 0 评论