dynamic debug Dynamic debugDynamic debug(dyndbg) 功能,就是允许用户空间通过 debugfs 导出的文件节点 /sys/kernel/debug/dynamic_debug/control,动态的、在运行时控制 Linux 内核 KERN_DEBUG 类型日志的开启和关闭。 开启配置12CONFIG_DYNAMIC_DEBUG= 2024-11-07 debug #debug
kernel boot Linux内核Kernel启动过程内核启动的基本流程 启动加载程序 (Bootloader)启动加载程序(如GRUB、LILO、syslinux等)负责将内核映像从存储设备加载到内存中,并准备好内核启动所需的环境。 加载内核映像:启动加载程序将压缩的内核映像(如vmlinuz)从硬盘加载到内存中。内核映像通常是一个gzip或其他格式压缩的二进制文件。 加载initrd/initram 2024-11-05 boot #boot
中断 中断和异常中断(interrupt)通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步(synchronous)中断和异步(asynchronous)中断: 同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。 异步中断是由其他硬件设备依照CPU时钟信号随机产生 2024-10-31 irq #irq
进程 进程 进程是程序执行时的一个实例,从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的实体 当一个进程创建时,它几乎与父进程相同。它接受父进程地址空间的一个(逻辑)拷贝,并从进程创建系统调用的下一条指令开始执行与父进程相同的代码。尽管父子进程可以共享含有程序代码(正文)的页,但是它们各自有独立的数据拷贝(栈和堆),因此子进程对一个内存单元的修改对父进程是不可见的(反之亦然) 2024-10-31 进程 #进程
scsi子系统 scsi子系统硬件模型 上图为scsi子系统的硬件拓扑图: soc芯片内部有host(0),host(1)…host(k)这些有scsi功能的控制器 这些host分别连接着片外的scsi设备device(0)…device(k)外设 每个device内部有若干个channel,每个channel下面有若干个id,每个id下面有若干个lun 这些lun就是可以接受scsi命令的实体,例如 2024-10-21 scsi #scsi
kgdb KGDBkgdb是Linux内核提供的用于调试内核的源码级调试工具,支持断点设置,单步调试等源码调试常用功能,类似于在用户空间用gdb调试应用程序。kgdb从形式上来说类似于gdb server,你需要两台设备,一台主机,用于运行普通的gdb程序,一台被调试设备,需要安装所需调试的内核或者驱动,同时运行kgdb。kgdb与主机通过串口通讯,所以要在内核的启动参数里指定kgdb所需使用的串口设备号。 2024-09-05 debug #debug
ftrace 什么是ftrace ftrace是 Linux 内核中一个功能强大的跟踪框架,用于跟踪和分析内核及其模块的执行情况。它提供了一系列工具和功能,帮助开发者调试内核、分析性能瓶颈、查看系统调用、函数调用、上下文切换等信息。 ftrace 的主要功能: 函数跟踪 (function tracing): 可以跟踪内核中每个函数的调用情况,包括函数进入、退出的时间和执行时间。 例如,可以跟踪某个特定 2024-08-22 debug #debug
I2C调试 I2C调试busybox devmem在Linux系统,如果我们想要访问某个寄存器,就需要写一个驱动程序,在驱动中映射寄存器地址,转为虚拟地址后就可以访问。但有时候,我们只是单纯想知道某个寄存器的值,不想这么麻烦,怎么办呢?Linux早就想到这一点了,于是提供了一个工具devmem,通过devmem就可以直接读写寄存器,devmem是一个命令,在shell中输入devmem命令就可以非常方便的读 2024-07-17 debug #debug #i2c
ioctl ioctl在驱动程序的ioctl函数体中,实现了一个switch-case结构,每一个case对应一个命令码,case内部是驱动程序实现该命令的相关操作。 ioctl的实现函数要传递给file_operations结构体中对应的函数指针,函数原型为 123#include <linux/ioctl.h>long (*unlocked_ioctl) (struct file * fp, 2024-07-10 ioctl #ioctl
S3 问题根因分析技术文档 S3 问题根因分析技术文档问题背景 x86 1070 5.10 联想昭阳k4e-iml 待机自动唤醒 首先我们看一下日志 我们可以看到在准备Disabling non-boot CPUs 的时候检测到wakeup事件了(wake up pending),abort CPU freeze 一般这个wakeup事件产生可能是某些设备下电的时候出现异常,或者此时外部设备来了一个中断,打断S3的操作 2024-07-10 Power Management #bug #Power Management