自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux 内核 sysfs 属性读取机制

Linux 内核通过 sysfs 将设备属性以文件形式暴露给用户空间。当执行 cat /sys/... 时,内核根据文件节点的私有指针定位到 struct attribute,再通过 container_of() 从通用 attribute 还原为 device_attribute,调用其 show() 回调生成数据。该过程依赖 kobject 与 device 的嵌套关系、sysfs_ops 统一分发机制及驱动注册的回调函数,实现从用户读取到内核数据返回的完整链路。

2026-10-29 18:33:34 37

原创 无锁环形缓冲区原理与机制

本文系统阐述无锁环形缓冲区的设计原理,重点解析SPSC模型下的数据结构、空满判定、内存顺序约束及并发机制。通过对比留空槽与计数器方案,说明容量利用率的权衡;结合生产者-消费者协作逻辑,强调release/acquire语义在保障数据可见性中的核心作用。以Linux kfifo 为例,揭示其基于逻辑计数与位运算的高效实现,并指出无锁特性依赖于单生产者/单消费者约束。最后指出内核日志缓冲区虽具环形特征,但采用专用实现,非简单复用通用FIFO。

2026-10-29 18:26:00 179

原创 Linux Pinctrl 子系统框架

Linux Pinctrl子系统是管理SoC引脚复用的核心框架,主要包括引脚复用(Pin Multiplexing)和引脚配置(Pin Configuration)两大功能。系统分为四层架构:消费者驱动层、Pinctrl核心层、驱动层和硬件层。核心数据结构包括pinctrl_dev(控制器设备)、pinctrl_desc(控制器描述符)等,通过操作函数集(pinctrl_ops、pinmux_ops、pinconf_ops)实现对硬件寄存器的操作。

2026-01-30 01:08:19 512

原创 GPIO子系统

Linux GPIO子系统摘要: Linux GPIO子系统提供了统一管理GPIO(通用输入/输出)接口的框架,采用分层架构设计:硬件层→控制器驱动→核心层→驱动层→用户空间。新API使用gpio_desc描述符而非整数编号,支持自动资源管理。核心数据结构包括gpio_desc(描述单个GPIO)、gpio_device(代表GPIO控制器)和gpio_chip(硬件操作接口)。子系统支持设备树配置,通过of_node等结构实现硬件抽象。

2026-01-30 01:06:43 582

原创 Linux VFS 深度解析 (五):超级块(super_block)与文件系统挂载

本文深入解析 Linux VFS 中的超级块(super_block)核心机制。作为已挂载文件系统实例的代表,super_block 连接 VFS 与具体文件系统,包含设备信息、文件系统类型、操作函数表等关键数据。文章详细剖析了 super_block 的结构定义、文件系统注册机制(file_system_type)、挂载/卸载流程(mount/umount),以及 VFS 四大对象(super_block、dentry、inode、file)间的协同关系。

2026-01-30 00:57:52 1059

原创 Linux VFS 深度解析 (四):路径名查找

Linux VFS 路径名查找机制解析 摘要:本文深入剖析Linux VFS中路径名查找(namei)的核心机制。路径查找是将路径字符串转换为内核数据结构的关键过程,涉及两种优化模式:RCU-walk(无锁快速路径)和REF-walk(传统加锁方式)。系统通过nameidata结构体维护查找状态,处理符号链接、挂载点穿越等复杂场景,同时兼顾性能与并发安全。核心挑战包括纳秒级热点路径访问、符号链接处理、权限检查等,VFS通过精巧的设计实现高效稳定的路径解析。

2026-01-30 00:30:00 712

原创 Linux VFS 深度解析(三):struct file(文件对象)

Linux VFS 深度解析(三):struct file(文件对象)摘要 struct file 是 Linux VFS 中表示进程打开文件实例的核心数据结构,与表示磁盘文件的 inode 不同,它记录了文件打开时的运行时状态。关键点包括: 本质区别:inode 表示持久化文件元数据,struct file 表示打开实例(含偏移量、访问模式等) 生命周期:从 open() 到 close(),内存中动态创建销毁 多实例性:同一文件可被多次打开,每个打开操作创建独立 struct file 核心字段:

2026-01-30 00:27:59 900

原创 Linux VFS 深度剖析(二):目录项缓存 dentry

本文基于 Linux 4.19 内核源码,深入剖析了 VFS 中的目录项缓存(dentry)机制。dentry 作为路径解析的核心数据结构,负责缓存路径名到 inode 的映射关系,加速文件访问。文章详细分析了 struct dentry 的组成结构,包括文件名存储、目录树关联、引用计数等关键字段,并解释了 dentry 与 inode 的多对一关系。通过示意图展示了 dcache 在 VFS 路径解析中的作用,以及短文件名优化、负缓存等特性。最后还介绍了 dentry 的状态转换和 LRU 回收机制。

2026-01-25 01:54:25 467

原创 Linux VFS 深度剖析(一):索引节点 inode

本文深入剖析了Linux VFS中的核心数据结构struct inode。inode是Unix/Linux文件系统的关键概念,存储文件的元数据(权限、所有者、大小、时间戳等),但不包含文件名和内容。文章详细解析了inode在VFS架构中的位置及其与dentry、super block的关系,重点分析了struct inode的结构定义,包括文件属性组、VFS操作表、状态同步机制、哈希链表管理、引用计数等关键字段,并对应说明了这些字段与stat命令输出的关系。通过内核源码(Linux 4.19)展示了inod

2026-01-25 01:52:33 601

原创 三极管完整知识总结

三极管知识摘要 三极管(BJT)是一种电流控制器件,分为NPN和PNP两种类型。NPN型三极管电流从集电极流向发射极,导通条件是基极电压比发射极高0.7V;PNP型电流方向相反,导通条件是基极电压比发射极低0.7V。三极管有三种工作状态:截止状态(C-E断路)、放大状态(线性放大信号)和饱和状态(C-E完全导通)。典型应用包括LED驱动、继电器控制和信号放大等,使用时需注意基极电阻计算以确保工作状态正确。

2026-01-15 01:45:19 737

原创 深入理解 Linux VFS 文件系统框架

本文以debugfs为例,深入分析Linux VFS文件系统的五层架构设计。重点剖析file_system_type、super_block、dentry、inode和file五大核心数据结构的关系与实现机制。通过解读debugfs这一精简的内存文件系统,展示VFS如何统一管理不同文件系统,为理解更复杂的文件系统实现奠定基础。文章详细介绍了各数据结构的关键字段、注册流程和回调机制,揭示了Linux文件系统的核心抽象层设计思想。

2026-01-15 01:36:17 1040 1

原创 C++元编程完全指南

C++元编程核心摘要 元编程是C++中利用模板在编译期进行计算和类型操作的强大技术。本文介绍了从基础模板到高级元编程技术的完整知识体系。

2025-12-17 01:18:10 870

原创 CAN协议完全指南

本文全面介绍了CAN总线协议的基础知识与应用。主要内容包括:CAN协议的基本概念与多主站、广播式通信特点;物理层结构采用差分信号传输,需两端120Ω终端电阻;显性位(逻辑0)与隐性位(逻辑1)的电气特性及其在仲裁机制中的关键作用;标准帧与扩展帧的报文格式详解;独特的非破坏性仲裁机制实现高效通信;以及错误检测、节点状态管理等可靠性保障措施。文章还涵盖了CAN在汽车电子、工业自动化等领域的典型应用场景,并比较了不同CAN标准的特性差异。通过清晰的图表和实例说明,帮助读者深入理解CAN总线的工作原理与技术优势。

2025-12-17 00:46:22 1015

原创 C++左值与右值深度解析

C++左值与右值深度解析:本文系统讲解C++中的左值(lvalue)和右值(rvalue)概念及其应用。左值具有明确内存地址,可持久存在;右值表示临时对象或即将销毁的值。文章详细剖析左值和右值的特征、分类标准,并深入讲解引用机制(左值引用、右值引用)、移动语义和完美转发等现代C++特性。通过实际应用场景和代码示例,帮助读者掌握这些核心概念,提升代码效率和表达能力。同时指出常见陷阱和最佳实践,全面覆盖从基础到高级的知识点。

2025-12-14 21:51:31 1025

原创 Linux平台设备驱动模型详解

摘要 本文以Rockchip RK3568芯片的PWM驱动为例,深入分析Linux平台设备驱动模型。通过研究drivers/pwm/pwm-rockchip.c源码,阐述了平台设备、总线、驱动程序之间的关系,重点探讨了设备树节点到平台设备的转换机制、设备与驱动的匹配绑定流程,揭示了平台总线的软件实现本质。文章详细解析了PWM驱动的核心数据结构、功能函数及关键机制,包括寄存器锁定、原子性更新等特性,为理解Linux平台设备驱动开发提供了实践参考。 关键词:Linux驱动、平台设备、设备树、PWM驱动

2025-12-14 00:04:22 1328

原创 如何自己搭建团队服务器

本文介绍了在Ubuntu 22.04系统上搭建团队开发环境的完整流程。主要内容包括:1) 系统基础环境配置,包括磁盘挂载与配额管理;2) Samba文件共享服务安装与权限设置;3) 自动化用户管理脚本实现;4) ROS2开发环境部署建议;5) 常见问题解决方案与优化建议。文章提供了详细的命令操作步骤和配置示例,涵盖用户创建、存储配额、文件共享等核心功能,特别强调通过脚本自动化实现批量用户管理,并给出了系统维护和安全管理的实用建议。附录还包含关键命令速查表,方便日常运维管理。

2025-06-30 09:43:27 458

制作mipsel-linux交叉编译工具.doc

制作mips架构的交叉编译工具文档

2020-08-04

uboot代码详细分析.rar

uboot代码详细分析 包括uboot代码启动流程,移植,内存布局 想学习uboot的很值得看,很推荐学习!!!

2020-08-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除