Skip to content

Linux 内核 ​

Linux 内核子系统源码分析(Linux 6.8)。

中断 / softirq ​

专题页:中断 / softirq

USB 子系统 ​

专题页:USB 子系统

  1. USB 2.0 枚举流程
  2. hub_port_init 调用链
  3. usb_get_descriptor 调用链
  4. 枚举与两轮 Probe
  5. UVC 驱动分析
  6. Gadget 子系统概览 — UDC / composite / configfs 四层架构
  7. Configfs 组装分析 — gadget_info / cdev 脚本拼装与 bind
  8. UDC bind 分析 — udc_bind_to_driver、pending、pullup
  9. DWC2 接口总览 — gadget_ops、ep_ops 与框架交付边界
  10. DWC2 USBTRDTIM 选值 — 按 UTMI+ 位宽给 5 / 9,对照 ST HAL 按 AHB 频率查表
  11. Composite EP0 枚举 — composite_setup、SET_CONFIGURATION
  12. ACM Function 路径 — f_acm.c、gserial_connect 与 ttyGS
  13. Gadget CDC ACM 串口实践 — configfs + ttyGS0 / Host cdc_acm

Media / V4L2 子系统 ​

专题页:Media / V4L2

Pinctrl / GPIO 子系统 ​

专题页:Pinctrl / GPIO 子系统

SPI 子系统 ​

专题页:SPI 子系统

Sound / ALSA ​

专题页:Sound / ALSA

内核以百问 Linux 4.9.88 BSP 为主(文首已注明;上面多数是 6.8)。

  1. ASoC 四层架构 — Machine / Platform / CPU DAI / Codec
  2. /dev/snd 设备节点 — ls /dev/snd 看到的那些文件是干什么的
  3. 声卡播放路径 — aplay → SDMA / SAI / WM8960
  4. 声卡录音路径 — arecord、read、SAI RX
  5. ALSA PCM 状态机 — 状态、start/stop、underrun/overrun
  6. ALSA hw_params 参数协商 — 为什么 48 kHz 能播,96 kHz 就不行
  7. WM8960 kcontrol 构造与使用 — tinymix 里那些音量名字是怎么来的
  8. amixer 改音量、拨开关:内核的不同调用 — 一条只改数字,一条才会接通通路
  9. 从 tinymix 到 WM8960 DAPM 路由 — 那些开关对应芯片里哪条线
  10. DAPM widget 上电:谁判、何时判 — 电源管理

BPF / kprobe ​

专题页:BPF / kprobe

内核以 Ubuntu HWE 5.15 为主(文首已注明;上面多数是 6.8)。

  1. eBPF kprobe:load / attach / 命中 — PROG_LOAD / 插桩 / LINK / 多 BPF 分发
  2. kprobe-on-ftrace 插桩实测 — 入口 NOP↔CALL 与 handler 上下文
  3. 经典 kprobe 插桩实测 — ARM32 undef 断点(非 ftrace)

调试与实践 ​

具体问题的排查记录,和上面的流程分析互补。概览:调试与实践。

基于 VitePress 构建