LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

随笔分类 -  Linux常见模块

kfence作用、使用、示例
摘要:1 KFENCE 是什么? - 定位:Linux 内核的轻量级内存错误检测工具,由 Google 于 2020 年提出并合并到内核主线(5.12+)。- 核心目标:在生产环境中长期运行,以极低开销实时检测内存错误。- 设计理念:基于 “抽样检测”(Sampling)而非全量检查,平衡性能与安全性。 阅读全文

posted @ 2025-07-12 23:59 ArnoldLu 阅读(99) 评论(0) 推荐(0)

Linux Crypto(1):框架总览
摘要:1 Linux Crypto分层概览 Linux Crypto 子系统分为三层: 层级描述包含组件 使用者层 调用加密服务的实体(内核模块或用户空间程序) 内核使用者:IPsec、dm-crypt、fscrypt用户空间:OpenSSL, cryptsetup, AF_ALG 核心框架层 提供统一A 阅读全文

posted @ 2025-07-05 23:59 ArnoldLu 阅读(86) 评论(0) 推荐(0)

借助ftrace生成系统启动进程/线程树
摘要:当一个稍微复杂系统启动时,需要研究这过程都创建了哪些进程/线程,用于分析优化启动速度、降低内存开销。 当系统启动后,通过pstree、top等只能获得进程的snapshot。了解ftrace的events之后,可以知道这里面提供了从系统开始创建进程/线程的事件。 下面在cmdline中打开task_ 阅读全文

posted @ 2025-06-21 23:59 ArnoldLu 阅读(154) 评论(0) 推荐(0)

RISC-V Linux下Trap日志解析
摘要:作为日常RISC-V Linux Trap问题定位参考。 1 Trap输出日志解析 [ 220.441130] dddd[2177]: unhandled signal 11 code 0x1 at 0x000000a8 in dddd[10000+37000] 表示进程 dddd(进程ID为217 阅读全文

posted @ 2025-05-24 23:59 ArnoldLu 阅读(191) 评论(0) 推荐(0)

device-mapper(1):概述
摘要:device-mapper是一种块设备虚拟化技术,下面分别介绍device-mapper的背景、在Linux块设备框架结构中位置、内核配置、相关文件、核心数据结构、相关module初始化、支持的Target。 1 dm说明 Device Mapper(设备映射器) 是 Linux 内核中的一个块设备 阅读全文

posted @ 2025-05-02 23:59 ArnoldLu 阅读(709) 评论(0) 推荐(0)

Linux NVMEM子系统:概述以及RK3588 OTP实例
摘要:NVMEM子系统为Non-Volatile类型存储提供统一内核处理框架。 1 NVMEM概述 NVMEM子系统为eeprom,otp,efuse类型设备提供统一的访问接口。一般都基于regmap实现读写。 NVMEM子系统初始化: nvmem_init bus_register--注册NVMEM总线 阅读全文

posted @ 2024-05-26 23:59 ArnoldLu 阅读(1736) 评论(0) 推荐(0)

squashfs配置和使用
摘要:Squashfs的设计是专门为一般的只读文件系统的使用而设计,它可应用于数据备份,或是系统资源紧张的电脑上使用。 最初版本的Squashfs采用 gzip 的数据压缩。版本 2.6.34 之后的Linux内核增加了对 LZMA[1] 和 LZO [2]压缩算法的支持,版本 2.6.38 的内核增加了 阅读全文

posted @ 2024-05-10 23:59 ArnoldLu 阅读(2399) 评论(0) 推荐(0)

Linux extcon概要记录
摘要:关键词:extcon、uevent等。 1 extcon介绍 extcon是External Connector的简称,用于抽象外部连接器,比如说Audio Jack、USB MicroB/TypeC接口等。 extcon驱动的主要功能是识别外部连接器状态变化,并将状态变化通知到与外部连接器相关的其 阅读全文

posted @ 2024-05-04 23:59 ArnoldLu 阅读(1137) 评论(0) 推荐(0)

Linux IIO子系统概述(结合STM32 ADC/DAC驱动)
摘要:关键词:IIO、ADC、DAC、Trigger等等。 IIO(Industrial I/O)主要用于数字量和模拟量转换的IO接口设备。这些设备种类繁多,内部一般都会有一个ADC或者DAC。SOC对这些设备操作可以通过I2C/SPI,或者直接访问寄存器进行。 IIO子系统主要管理抽象这些类别设备: 模 阅读全文

posted @ 2024-02-07 23:59 ArnoldLu 阅读(3107) 评论(0) 推荐(0)

Linux线程proc信息解析
摘要:每个线程对应的/proc/xxx有助于分析线程的各种资源占用情况。之前零零散散做了一些分析,这里总结记录一下。 /proc/183/ |-- auxv |-- cgroup |-- clear_refs |-- cmdline--执行进程的命令行,包括启动参数等等。 |-- comm--进程名称。 阅读全文

posted @ 2024-02-06 23:59 ArnoldLu 阅读(753) 评论(0) 推荐(0)

Linux watchdog子系统概述
摘要:关键词:watchdog、pretimeout、governor、softdog等等。 watchdog子系统是内核为保证系统正常运行,将系统从死循环或者死锁等状态中退出并重启的一种机制。 内核中支持基于hrtimer的softdog和基于硬件的watchdog。硬件看门狗从dts读取配置,创建同样 阅读全文

posted @ 2024-02-03 15:33 ArnoldLu 阅读(3836) 评论(0) 推荐(1)

Linux RTC子系统概述
摘要:关键词:rtc、date、hwclock、Alarm、WakeAlarm、AIE、PIE、UIE等等。 1 rtc子系统框架 rtc子系统分为三部分: rtc core:负责rtc设备注册注销;对用户空间提供rtc字符设备文件,以及rtc类sysfs接口。 rtc driver:将rtc设备注册到r 阅读全文

posted @ 2024-01-21 23:59 ArnoldLu 阅读(854) 评论(0) 推荐(0)

Linux pwm子系统概述
摘要:关键词:pwm,period,duty_cycle,polarity,enable等。 1 pwm子系统框架 pwm子系统比较简单: pwm core:提供pwm_chip的添加删除,pwm_class类pwm_chip/pwm_device的sysfs创建。 pwm driver:根据pwm co 阅读全文

posted @ 2024-01-20 23:59 ArnoldLu 阅读(856) 评论(0) 推荐(0)

Linux input子系统概述
摘要:关键词:input、evdev、mousedev、joydev、rfkill、tslib、evtest等等。 input子系统处理Linux下输入设备。外设接收到输入事件,发送到input core;input core根据事件类型,将事件交给对应的input handler处理,上报用户空间;用户 阅读全文

posted @ 2024-01-19 23:59 ArnoldLu 阅读(1391) 评论(0) 推荐(0)

LED/GPIO/pinctrl子系统(3):pinctrl子系统概述
摘要:关键词:pinctrl、pinmux、pinconf等。 pinctrl可以归结为两类设置:一类是功能选择,比如是普通的GPIO或者专用功能引脚;另一类是上拉、下拉、驱动能力、速率等配置。 pinctrl子系统主要完成如下工作: 初始化pin contrroller,并为其每个pin命名和枚举。 处 阅读全文

posted @ 2024-01-07 23:59 ArnoldLu 阅读(1817) 评论(0) 推荐(0)

LED/GPIO/pinctrl子系统(2):GPIO子系统概述
摘要:关键词:gpiolib、pinctrl、gpio-keys等。 在了解pinctrl基础上,分析GPIO子系统按照如下几方面进行: GPIO总体框架、gpiolib主要文件、menuconfig配置GPIO。 了解gpiolib的主要数据结构和API(GPIO Controller和Consumer 阅读全文

posted @ 2024-01-06 23:59 ArnoldLu 阅读(854) 评论(0) 推荐(1)

LED/GPIO/pinctrl子系统(1):基于GPIO的LED子系统概述
摘要:关键词:led、gpio、led trigger(heartbeat/netdev/timer)等等。 本系列文档以LED为起点,结合GPIO LED首先了解LED子系统;然后梳理背后的GPIO子系统;进而梳理GPIO子系统背后的pinctrl子系统。 LED子系统为设备提供指示灯、闪光灯等功能,对 阅读全文

posted @ 2023-12-30 23:59 ArnoldLu 阅读(1761) 评论(0) 推荐(0)

Linux NAND Flash建立分区表的几种方式
摘要:关键词:cmdline parser、dts parser、cmdline、mtdparts等等。 MTD支持三种创建分区表的方式: cmdline:通过bootargs传入。 dts:在dts中编写。 struct mtd_partition结构体代码:代码中固定配置。 他们的优先级是:分区结构体 阅读全文

posted @ 2023-12-16 23:59 ArnoldLu 阅读(2019) 评论(0) 推荐(0)

Linux ARM32内嵌DTB实现
摘要:大多数方案是将dtb独立,uboot启动kernel时通过r2传递dtb的地址。kernel读取到__atags_pointer,后续解析dtb内容。 内核保留了.dtb.init.rodata用于保存dtb内容,借此实现ARM32下dtb内嵌功能。 1 ARM 32启动__atags_pointe 阅读全文

posted @ 2023-12-15 23:59 ArnoldLu 阅读(442) 评论(0) 推荐(0)

Linux下固件加载器Firmware Loader
摘要:某些Linux外设需要固件才能正常工作,或者调试过程中需要更换固件。为解决设备驱动程序从内核态或者用户态加载固件到外设中,Linux提供了Firmware Loader子系统。 如果固件比较稳定,可以通过builtin方式加载。如果需要经常变动,可放入文件系统指定目录中。如果都无法找到需要根据uev 阅读全文

posted @ 2023-12-02 23:59 ArnoldLu 阅读(1819) 评论(0) 推荐(0)

导航