自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 初识Linux内核--1

Linux内核启动分为三个阶段:引导加载(BIOS/UEFI初始化、加载内核)、内核初始化(架构设置、子系统初始化)和用户空间启动(init进程)。硬件抽象层通过架构代码、驱动框架、内存管理和中断子系统实现硬件差异屏蔽,提供统一接口。关键实现包括多级页表抽象、内存区域划分、中断号统一管理等,使内核能适配不同硬件平台。

2025-12-15 17:14:43 224

原创 Tracepoint 机制

Linux内核Tracepoint机制是内核预定义的静态探测点,用于高效收集运行时信息。Tracepoint包含名称、开关状态和桩函数,通过debugfs向用户态提供数据输出。相比printk,它将信息存入ringbuffer,并通过钩子函数实现定制化数据采集。开发者可通过/sys/kernel/debug/tracing目录查看所有Tracepoint,使用TRACE_EVENT宏创建包含6个组件的自定义跟踪点,包括名称、原型、参数、数据结构、赋值和输出格式。内核通过DEFINE_TRACE定义trace

2025-11-04 11:14:29 916

原创 kmalloc内存池的设计与实现

​​:数组中的索引(index)通常对应内存块尺寸的2的次幂(如index=3对应8B,2^3=8)。内核在启动初始化时,就通过kmem_cache_create接口预先创建好一系列特定尺寸的slab cache,当内核代码调用kmalloc申请内存时,会根据请求的大小自动选择最合适的slab cache进行分配。内核中除了针对特定数据结构task_struct/mm_struct等的专用slab内存池外,还存在大量对小内存的需求,如8B/16B等,kmalloc内存池体系就是为了高效满足这种需求设计的。

2025-09-30 10:47:05 647

原创 缺页中断处理机制

动态映射区,内核通过vmalloc()分配内存后,会立即分配物理页并修改内核页表,当进程访问这边新vmalloc区域时,发现页表内核部分的对应的项为空,就会触发缺页,此时执行vmalloc_fault,该函数的主要工作就是将主内核页表 中对应的顶级页目录项同步到当前进程的页表内核部分。真正的物理内存分配与映射,是延迟到​​第一次访问​​该区域,从而​​触发缺页中断​​时,由内核根据vma的类型(匿名/文件、私有/共享)和访问类型(读/写),以一种“用到再给”的懒惰策略完成的。

2025-09-29 15:33:14 521

原创 内核伙伴系统设计原理与实现-1

Linux内核伙伴系统原理设计与实现,代码走读

2025-07-18 11:03:11 57

原创 futex内核态代码走查

futex内核态代码流程简述

2025-06-26 16:32:37 85

原创 Linux内核中编译RUST

rust在Linux内核中编译过程

2025-06-18 16:27:52 746

原创 内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc

2025-06-10 19:55:59 236

原创 Linux内核学习小记-1

内存管理子系统内容摘要

2025-06-10 11:41:02 72

原创 内存管理子系统学习记录

内存管理子系统学习记录

2025-05-22 19:17:09 136

原创 内核常见面试问题汇总

汇总面试中常见的内核问题,持续更新中

2025-05-20 16:36:10 178

原创 内核常见问题汇总

常见Linux内核问题汇总,后期会不断更新

2025-04-29 15:29:31 80

原创 EDK2编译报错:BrotliCompress.c:20:10: fatal error: ./brotli/c/common/constants.h: No such file or directo

解决EDK2环境搭建中编译报错

2025-03-21 10:33:48 716 1

原创 Windows虚拟机开启失败

再启动就可以正常启动。

2025-01-17 09:02:02 395

原创 内存管理之匿名页面

匿名页面在刚分配的时候会加入到active LRU链表的头部,在活跃LRU链表移动一段时间后 ,会到达链表的尾部,shrink_active_list()会将该页加入到不活跃LRU链表中,然后shrink_inactive_list()会扫描不活跃链表,然后通过add_to_swap()为该页面分配交换区,再进过pageout()把该页面写到交换分区。匿名页面的建立是在缺页中断分配完成之后,此时已经建立了进程虚拟地址和物理地址之间的映射关系,用户进程访问虚拟地址就可以访问到匿名页面中的内容。

2025-01-14 19:24:17 207

原创 内存管理之页面回收

在LRU算法中新产生的页面被添加到链表的开头,当系统内存紧张时,LRU链表尾部的页面将会离开并被换出,当系统再需要这些页面的时候,会重新置于链表的开头,也是会存在一种情况,频繁被使用的页面,也会不可避免的会被换出。内存紧张时总是优先换出文件映射的文件缓存页面,而不是匿名页,因为大多数情况下,文件混存页面不需要被回写到磁盘,除非页面内容被修改了,也就是脏页,匿名页面总是要在写入交换分区之后,才能被换出。直接内存回收是同步回收,就是执行页面回收的进程就是应用进程本身,会阻塞调用者进程的执行。

2025-01-13 20:53:05 194

原创 Linux内存管理调试

1. 当pages free小于pages min,说明所有内存耗尽,此时说明内存压力过大,会开始触发同步回收,表现为系统卡死,分配内存被阻塞,开始尝试碎片整理、内存压缩,如果都不奏效,则开始执行 OOM Killer,直到pages free大于pages high。2. 当pages free在pages min和pages low之间,说明内存压力较大,kswapd0线程开始回收内存,直到pages free大于pages high。slab相关信息,包括总页面大小,可回收页面和不可回收页面。

2025-01-10 11:34:17 83

原创 xvisor调试记录

记录一次虚拟化方案xvisor启动调试案例

2024-12-10 20:10:36 915

原创 解决grub中编译报错

O 后指定平台架构,是ARM还是x86,像search serial linux等这些,都是mod模块,如果make完,在grub-core中会生成很多.mod文件,如果命令中没有对应的.mod文件,就会报错。1、grub-core的编译规则,在执行完configure后会自动生成,因此需要添加编译规则,不应该在生成的Makefile中添加,需要在Makefile.in中更改;因此添加功能源代码后,需要在这两个文件也要,添加规则进入,不然在编译的时候,会报链接不到接口,报:not define!

2024-11-07 19:46:28 642 1

原创 IMA/EVM开发和测试流程

评估的含义是在进程存取文件之前,内核先判断文件的完整性度量值和预先存入到文件的扩展属性“security.ima”中的值是否一致,如果一致则允许存取操作,不一致则拒绝。EVM 子系统将安全相关的扩展属性的值合在一起作为消息输入,将密钥“evm-key”作为密钥输入,算出当前的 HMAC 值,用这个值和之前存储在扩展属性 security.evm 中的值进行比较,确定文件的安全相关扩展属性的完整性是否被破坏。同样,EVM的扩展属性security.evm的值也有两种形式,一种是HMAC,另一种是数字签名。

2024-10-21 11:26:51 1322

原创 ima-evm-util交叉编译

ima/evm调试中,需要集成evmctl工具,本文提供一种交叉编译方法

2024-09-29 16:34:56 216

原创 cgroup基本原理与使用

在cgroups v2中,虚拟文件系统通常挂载在`/sys/fs/cgroup/`,并且不同控制器的文件不再分散,而是统一到一个cgroup目录下。说明:控制该 cgroup 的内存换出到 swap 的倾向,值在 0 到 100 之间,数值越大表示更倾向于将内存换出到 swap。说明:设置该 cgroup 的内存软限制,允许 cgroup 在有剩余内存时使用更多的内存,但当系统内存紧张时会首先回收超出部分。说明:控制当进程迁移到一个新的 cgroup 时是否将其当前的内存使用量一起迁移。

2024-09-18 11:00:30 395

原创 sysbench下载与交叉编译

sysbench性能测试工具编译与调试

2024-09-09 20:20:17 1445

原创 UEFI启动流程

UEFI引导程序调试过程中引发的思考。

2024-08-24 16:25:15 685

原创 zRAM和zswap

linux内核性能增强

2024-08-24 15:38:18 1334

原创 Linux内核性能增强

内存压缩和调度增强是现代操作系统中的关键技术,它们直接影响系统的响应速度、吞吐量和资源利用效率。

2024-08-15 19:01:26 383

原创 Linux中RT-Mutex实现

本文主要梳理优先级继承的基本原理,优先级继承主要是用来解决优先级反转,可以简单理解为一个进程在当前进程拥有的锁上阻塞时,会继承另一个进程的优先级。举个例子说明,进程A、B、C,其中A优先级最高,B次之,C最小,那么当 A 在 C 拥有的锁上阻塞时,C 将继承 A 的优先级。因此,如果 B 变为可运行状态,它将不会抢占 C,因为此时 C 具有 A 的高优先级。一旦 C 释放锁,它将失去继承的优先级,然后 A 可以继续使用 C 拥有的资源。

2024-07-31 16:58:12 1220

原创 MIT 6.S081操作系统环境搭建

操作系统快速上手

2024-02-23 10:45:50 1110

原创 HDMI EDID获取过程

EDID通过HDMI DDC获取过程

2024-01-29 18:29:43 1342

原创 HDMI EDID中Detailed Timing Definition解析

EDID中Detailed Timing Definition

2024-01-10 18:30:45 1019

原创 UEFI CSM兼容模式原理

CMS学习记录

2023-12-29 14:17:00 3310

原创 UEFI和Legacy简介

Legacy启动模式是指BIOS 固件用来初始化硬件设备的引导过程,Legacy启动模式包含一系列已安。目前UEFI替代Legacy的极大原因就是,UEFI使用GPT的分区引导方案,支持更大的硬盘。Legacy下安装的系统,就会调用Legacy引导模式启动,同理如果检测到是UEFI下安装的系统,则。另外,在UEFI规范中还有个兼容模块—CSM,是 一个特殊模块,可以为不支持 UEFI 的系统和硬。时,Legacy会切换到列表中的下一个设备并不断重复此过程,直到找到引导加载程序,否则返回。

2023-12-28 15:30:33 979

原创 EDID获取与解析

显示器EDID获取与解析方法

2023-12-21 16:29:25 2394 1

原创 UEFI开发 - 编译Option ROM之解决error: Cyclic dependency detected while generating rule

基于UEFI规范进行VBIOS开发

2023-08-30 17:11:04 584

原创 修改无法被git检测到,导致无法提交修改

本地代码仓中新增文件夹,文件夹中包含所有功能代码,执行git status。git add -f 修改的内容。无文件要提交,干净的工作区。就可以进行代码提交了!就会显示出来,然后执行。

2023-08-23 15:55:04 1295

原创 Linux系统中使用printf打印时间戳信息

使用printf打印时间戳信息

2023-05-29 17:32:11 2355

原创 AIS架构之QCarCam API介绍以及代码实战

本文旨在通过调用libais_client相关接口实现同时打开多路摄像头,常见的车载应用场景中,像AVM就是同时打开前、后、左、右4路摄像头,环视应用拿到4路图像数据后,进行融合拼接,呈现出360环视效果。在实现同时打开4路camera之前,首先介绍下常用的QCarCam API。

2023-05-24 16:25:24 4982 13

原创 AIS camera 开发调试记录--持续更新

高通车载相机开发调试记录

2023-05-06 10:34:29 2606 4

原创 QcarCamera-EVS HAL实现(二)

高通车载HAL实现

2023-05-04 09:31:12 962

原创 QcarCamera-EVS HAL实现(一)

高通车载EVS实现

2023-04-24 19:24:57 2136

qemu上运行Linux系统开启并验证IMA功能

busybox制作根文件系统,qemu上运行Linux系统,开启IMA功能,验证IMA功能流程

2024-12-25

Jetpack-Argus-Demo-OneShot-main

orin Argus相机资源分享

2024-07-29

员工转正ppt模板汇总

提供多份转正ppt模板,总共40份,总有一份适合你。

2024-07-28

组件化多模式OS内核概述

一份内核参考资料,对内核研究可参考

2024-07-28

通讯协议规范-命令包格式

提供一份通讯协议规范,包含命令包、格式等,在上下位机调试的时候可参考该文档,制定对应的通讯协议。

2024-07-28

Android EVS流程梳理

EVS流程梳理包括工作原理、快速启动方法、进程间如何通信等

2024-07-28

Automotive Camera Architecture on Hypervisor

高通车机平台Automotive Camera资料

2024-07-28

GPU芯片设计之功耗分析

GPU功耗分析和估算方法,搜集了一些国内外的文章和学术报告,可为GPU芯片设计过程中功耗评估提供参考。

2024-07-28

UEFI兼容Legacy模式

UEFI兼容Legacy模式,CSM工作原理介绍以及UEFI兼容Legacy的实现方法研究

2024-07-28

QCOM车机平台qcarcamera测试单元合集

包括测试单摄、多摄、各个图片格式等,方便sensor点亮后,安卓侧一系列调试。

2024-06-16

sylixos开源代码

sylixos开源代码,实时性操作系统

2024-04-22

qcarcam v4l2 camera hal测试程序

高通车机平台qcarcam v4l2 camera hal测试程序,在Android侧直接编译执行

2024-04-22

RSA加密/解密/数字签名算法实现

RSA加密/解密/数字签名算法实现,本地测试成功,如有疑问欢迎交流,其中签名的填充方式使用的RSASA-PSS填充方式。

2023-09-20

QCOM车机平台qcarcam-test

qcarcam测试demo,可用于测试单摄,多摄等

2024-04-03

UEFI GOP资料分享

两份比较认可的关于GOP的资料分享。

2023-12-28

获取与解析EDID信息

遵循UEFI规范,使用规定的协议获取显示器的EDID信息,并根据EDID标准对其进行解析。

2023-12-21

QCOM车机平台v4l2 camera hal

QCOM车机平台v4l2 camera hal,车载相机hal流程

2023-10-18

intel开源i915显卡驱动代码

intel开源i915显卡驱动代码,包括gop/edid等功能实现,可参考看看

2023-09-26

高通车机Android车载影像系统-EVS

EVS1.0和EVS2.0 hal实现,可直接编译使用,通过控制rc文件设置开机启动或是其他阶段启动。

2023-09-20

Android v4l2 camera apk

可实现Android平台下,camera设备预览等功能,简要功能如下: 1、兼容两种buffer获取方式mmap和userptr; 2、可实现实时预览,方便驱动调试; 3、兼容多个Android版本;

2022-11-22

JAVA版树莓派UNL2003驱动28BYJ-48步进电机完整程序

树莓派驱动步进电机程序 通过UNL2003来驱动28BYJ-48步进电机 包括硬件连接说明、程序操作说明等。

2022-11-21

空空如也

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

TA关注的人

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