10 2022 档案
摘要:一文搞懂 | Linux 时钟子系统 Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,都需要从某个或某几个时钟源头而来,最终开枝散叶,形成一颗时钟树。可通过 cat
阅读全文
摘要:在《一文读懂 HugePages的原理》一文中介绍了 HugePages(大内存页)的原理和使用,现在我们来分析一下 Linux 内核是怎么实现 HugePages 分配的。 本文使用 Linux 内核 2.6.23 版本 HugePages分配器初始化 在内核初始化时,会调用 hugetlb_in
阅读全文
摘要:在介绍 HugePages 之前,我们先来回顾一下 Linux 下 虚拟内存 与 物理内存 之间的关系。 物理内存:也就是安装在计算机中的内存条,比如安装了 2GB 大小的内存条,那么物理内存地址的范围就是 0 ~ 2GB。 虚拟内存:虚拟的内存地址。由于 CPU 只能使用物理内存地址,所以需要将虚
阅读全文
摘要:当USB设备插上主机时,主机就通过一系列的动作来对设备进行枚举配置(配置是属于枚举的一个态,态表示暂时的状态),这些态如下: 1、接入态(Attached):设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入; 2、供电态(Powered):就是给设备供电,分为设备接入时的默认供电值,配
阅读全文
摘要:基本结构 #导入库 from bcc import BPF #使用BPF()执行bpf代码 BPF(text=""" #C语言代码段 """ ) #对bpf的处理代码 C语言代码编写 不需要写main函数,目前知道可以写两种函数,以“kprobe__”开头的函数和自定义函数。bpf函数至少要包含一个
阅读全文
摘要:bcc代码——Hello,world 1、简单监控clone()系统调用,将相关的信息打印出来 #!/usr/bin/python from bcc import BPF BPF(text=""" int kprobe__sys_clone(void *ctx){ bpf_trace_printk(
阅读全文
摘要:前言 端点在实际的USB通讯过程种的具体作用与含义十分重要,但是有些难以理解,自己整理一些知识作为备忘。 (注:1、文中的EP表示Endpoint; 一、端点概念。 端点(Endpoint),是主机与设备之间通讯数据的接收或来源。主机与设备之间通信时最终会总用于设备上的各个端点,它是主机与设备间通信
阅读全文