LUCAS / COLLECTIONS

嵌入式 Linux 系统工程:资源、开发、使用与排障

120 课覆盖系统启动、进程内存、文件存储、并发通信、驱动外设、多媒体网络、开发调试与整机验收,配套 C、Shell、Python 实验和资源速查表。

已发布 120 篇 · 按阅读顺序排列

  1. 嵌入式 Linux 系统工程 001:Linux 系统分层与资源地图

    摄像头程序调用库,库通过系统调用请求内核,驱动再管理硬件。

    阅读全文 →
  2. 嵌入式 Linux 系统工程 002:主机、目标板与交叉开发

    编译发生在主机,程序运行在目标板;交叉编译器的目标三元组描述目标环境。

    阅读全文 →
  3. 嵌入式 Linux 系统工程 003:架构、ABI、大小端与工具链

    指令集决定 CPU 能解码什么,ABI 约定参数、寄存器、数据布局和链接规则。

    阅读全文 →
  4. 嵌入式 Linux 系统工程 004:Shell、管道、重定向与退出码

    标准输入、输出、错误分别是文件描述符 0、1、2。

    阅读全文 →
  5. 嵌入式 Linux 系统工程 005:BusyBox 与 GNU 工具差异

    BusyBox 把多个 applet 编进一个可执行文件,命令是否存在、支持哪些选项都受构建配置影响。

    阅读全文 →
  6. 嵌入式 Linux 系统工程 006:目录结构与虚拟文件系统

    /proc 和 /sys 主要反映内核对象,/dev 提供设备访问入口,/run 常放本次启动的运行状态。

    阅读全文 →
  7. 嵌入式 Linux 系统工程 007:串口、SSH 与开发网络

    串口控制台独立于 IP 网络,适合记录启动早期故障。

    阅读全文 →
  8. 嵌入式 Linux 系统工程 008:建立开发板信息与版本基线

    可复现问题需要把固件、设备树、模型、配置和硬件编号关联起来。

    阅读全文 →
  9. 嵌入式 Linux 系统工程 009:从 Boot ROM 到用户空间

    启动链逐步建立运行条件:早期代码初始化存储和内存,Bootloader 加载内核与设备树,内核初始化驱动并挂载根文件系统,最后启动 PID 1。

    阅读全文 →
  10. 嵌入式 Linux 系统工程 010:U-Boot 环境与内核启动参数

    U-Boot 环境变量和内核参数不是同一套命名空间。

    阅读全文 →
  11. 嵌入式 Linux 系统工程 011:内核配置、编译与模块

    CONFIG 项可以内建、作为模块或关闭。

    阅读全文 →
  12. 嵌入式 Linux 系统工程 012:设备树编译、加载与生效确认

    DTS 描述硬件连接和资源,DTB 是编译结果,运行内核使用的是启动时传入并可能被修改的树。

    阅读全文 →
  13. 嵌入式 Linux 系统工程 013:根文件系统与 initramfs

    initramfs 在内存中提供早期用户空间,可以准备设备后切换到实际根文件系统。

    阅读全文 →
  14. 嵌入式 Linux 系统工程 014:BusyBox init、启动脚本与 systemd

    PID 1 负责用户空间启动和进程回收。

    阅读全文 →
  15. 嵌入式 Linux 系统工程 015:Buildroot 工程构建与定制

    Buildroot 组织工具链、内核、Bootloader 和根文件系统构建。

    阅读全文 →
  16. 嵌入式 Linux 系统工程 016:Yocto 的 layer、recipe 与镜像

    BitBake 按 recipe 和任务图构建,layer 组织元数据,MACHINE 表示目标硬件配置,DISTRO 表达发行策略。

    阅读全文 →
  17. 嵌入式 Linux 系统工程 017:读懂 procfs 的系统与进程信息

    /proc 以文件接口暴露内核状态。

    阅读全文 →
  18. 嵌入式 Linux 系统工程 018:sysfs:设备、属性与拓扑

    /sys/devices 表达设备拓扑,/sys/class 和 /sys/bus 提供不同索引。

    阅读全文 →
  19. 嵌入式 Linux 系统工程 019:设备节点、设备号与动态管理

    字符和块设备节点保存设备号,打开时由内核转到对应驱动。

    阅读全文 →
  20. 嵌入式 Linux 系统工程 020:debugfs、tracefs 与配置依赖

    debugfs 用于调试接口,内容可能随版本变化;tracefs 暴露追踪控制与事件。

    阅读全文 →
  21. 嵌入式 Linux 系统工程 021:内核日志、用户日志与时间线

    dmesg 读取内核环形日志,容量有限且可覆盖;用户程序 stderr 不会自动成为内核日志。

    阅读全文 →
  22. 嵌入式 Linux 系统工程 022:uptime、负载与基础状态

    load average 反映可运行任务及某些不可中断等待任务的平均数量,不是 CPU 百分比。

    阅读全文 →
  23. 嵌入式 Linux 系统工程 023:系统快照与版本对照

    快照应同时记录环境和事件窗口。

    阅读全文 →
  24. 嵌入式 Linux 系统工程 024:工具、权限和内核能力的辨别

    一条命令失败可能发生在 Shell 找命令、工具解析参数、系统调用授权或内核实现四个层次。

    阅读全文 →
  25. 嵌入式 Linux 系统工程 025:进程生命周期与状态

    fork 创建子进程,exec 替换当前进程映像,wait 回收子进程状态。

    阅读全文 →
  26. 嵌入式 Linux 系统工程 026:线程、TID 与共享资源

    同一进程的线程共享地址空间和通常的文件描述符表,但有自己的栈、调度状态和线程 ID。

    阅读全文 →
  27. 嵌入式 Linux 系统工程 027:调度策略、nice 与实时优先级

    nice 影响普通调度任务的相对权重,不能保证截止时间。

    阅读全文 →
  28. 嵌入式 Linux 系统工程 028:CPU 亲和性与多核

    亲和性约束线程可运行的 CPU 集合,不是独占 CPU,也不会自动搬走中断。

    阅读全文 →
  29. 嵌入式 Linux 系统工程 029:上下文切换、抢占与唤醒延迟

    线程从等待变为可运行,到真正获得 CPU 之间存在调度延迟。

    阅读全文 →
  30. 嵌入式 Linux 系统工程 030:信号与有序退出

    信号处理函数会打断正常控制流,只能调用异步信号安全的操作。

    阅读全文 →
  31. 嵌入式 Linux 系统工程 031:僵尸进程与子进程回收

    子进程退出后保留供父进程读取的状态,父进程未 wait 会出现僵尸。

    阅读全文 →
  32. 嵌入式 Linux 系统工程 032:高 CPU、低 CPU 卡顿与 D 状态

    高 CPU 可能是有效计算、忙轮询或异常重试;低 CPU 卡顿可能等待锁、事件、I/O 或配额。

    阅读全文 →
  33. 嵌入式 Linux 系统工程 033:虚拟地址、物理内存与映射

    进程地址空间通过页表映射到物理页,映射可以按需建立,虚拟连续不保证物理连续。

    阅读全文 →
  34. 嵌入式 Linux 系统工程 034:栈、堆、malloc 与 mmap

    malloc 管理用户态分配,可能从堆或匿名映射取得空间;free 将内存归还分配器,不保证立即还给内核。

    阅读全文 →
  35. 嵌入式 Linux 系统工程 035:RSS、PSS 与共享内存统计

    RSS 统计驻留页,共享页可能同时计入多个进程;PSS 将共享页按映射者分摊,适合估算进程群的份额。

    阅读全文 →
  36. 嵌入式 Linux 系统工程 036:页缓存、回收、swap 与内存压力

    Linux 利用空闲内存缓存文件数据,可回收缓存与不可回收占用性质不同。

    阅读全文 →
  37. 嵌入式 Linux 系统工程 037:slab 与内核内存

    内核使用对象缓存管理 inode、dentry 等对象。

    阅读全文 →
  38. 嵌入式 Linux 系统工程 038:CMA、保留内存与厂商缓冲池

    CMA 支持某些连续内存分配需求,reserved-memory 则描述保留区域及用途。

    阅读全文 →
  39. 嵌入式 Linux 系统工程 039:OOM、碎片与分配失败

    分配失败可以来自进程限制、cgroup 限额、地址空间、特定内存区域或连续性要求,未必触发 OOM。

    阅读全文 →
  40. 嵌入式 Linux 系统工程 040:内存泄漏、越界与峰值

    泄漏指失去必要的释放路径,峰值高可能只是并发在途数据多。

    阅读全文 →
  41. 嵌入式 Linux 系统工程 041:文件描述符与打开文件状态

    文件描述符是进程表中的索引,底层打开文件描述保存偏移和状态。

    阅读全文 →
  42. 嵌入式 Linux 系统工程 042:权限、属主、umask 与链接

    访问文件需要沿路径具备目录搜索权限;文件自身可读不代表路径可达。

    阅读全文 →
  43. 嵌入式 Linux 系统工程 043:VFS、挂载点与文件系统

    VFS 为不同文件系统提供统一接口,路径解析经过挂载关系。

    阅读全文 →
  44. 嵌入式 Linux 系统工程 044:块设备、分区、eMMC 与 SD

    块层以扇区组织请求,分区在设备上定义范围;eMMC、SD 控制器内部还可能执行擦写管理和垃圾回收。

    阅读全文 →
  45. 嵌入式 Linux 系统工程 045:MTD、NOR、NAND、UBI 与 UBIFS

    MTD 暴露原始 Flash 的擦除和写入约束,UBI 在 MTD 之上管理逻辑擦除块和坏块,UBIFS 构建文件系统。

    阅读全文 →
  46. 嵌入式 Linux 系统工程 046:SquashFS、OverlayFS 与只读系统

    SquashFS 常用于压缩只读根文件系统,OverlayFS 将只读 lower 与可写 upper 组合。

    阅读全文 →
  47. 嵌入式 Linux 系统工程 047:缓冲写入、fsync 与掉电一致性

    write 成功通常表示数据进入内核处理路径,不一定到达非易失介质。

    阅读全文 →
  48. 嵌入式 Linux 系统工程 048:空间满、inode 耗尽与 I/O 慢

    df 统计文件系统使用,du 汇总可见路径文件,两者口径不同。

    阅读全文 →
  49. 嵌入式 Linux 系统工程 049:阻塞、非阻塞与短读写

    read、write 返回的是本次处理字节数,可能小于请求。

    阅读全文 →
  50. 嵌入式 Linux 系统工程 050:select、poll 与 epoll

    就绪通知表示当前操作有机会不阻塞,并不保证完整消息到达。

    阅读全文 →
  51. 嵌入式 Linux 系统工程 051:pipe、FIFO 与 Unix socket

    pipe 常用于有亲缘进程,FIFO 提供文件系统入口,Unix socket 适合本机双向通信。

    阅读全文 →
  52. 嵌入式 Linux 系统工程 052:共享内存与消息队列

    共享内存共享的是数据存储,不自动提供互斥和完成通知。

    阅读全文 →
  53. 嵌入式 Linux 系统工程 053:mutex、条件变量与信号量

    mutex 保护状态不变量,条件变量用于等待状态变化。

    阅读全文 →
  54. 嵌入式 Linux 系统工程 054:原子操作、内存序与数据竞争

    C 的 volatile 不提供线程同步或原子性。

    阅读全文 →
  55. 嵌入式 Linux 系统工程 055:eventfd、timerfd 与 signalfd

    这些 Linux 接口把事件、定时器和信号接入 fd 事件循环。

    阅读全文 →
  56. 嵌入式 Linux 系统工程 056:死锁、优先级反转与队列背压

    两个线程以相反顺序持有锁会形成等待环。

    阅读全文 →
  57. 嵌入式 Linux 系统工程 057:device、driver、bus 与绑定

    设备描述存在不等于驱动已绑定。

    阅读全文 →
  58. 嵌入式 Linux 系统工程 058:platform、设备树与 probe

    platform 设备常用于不能自行枚举的 SoC 外设。

    阅读全文 →
  59. 嵌入式 Linux 系统工程 059:模块、固件加载与版本匹配

    ko 在内核执行,firmware blob 是设备可能加载的数据或代码,两者不能互换。

    阅读全文 →
  60. 嵌入式 Linux 系统工程 060:MMIO 与资源申请

    寄存器不是普通 RAM,读取可能清状态,写入可能触发操作。

    阅读全文 →
  61. 嵌入式 Linux 系统工程 061:IRQ、软中断与工作队列

    硬中断处理必须快速并遵守上下文限制,线程化中断和 workqueue 可把部分工作移到可调度上下文。

    阅读全文 →
  62. 嵌入式 Linux 系统工程 062:GPIO、pinctrl 与有效电平

    pinctrl 决定引脚复用和电气配置,GPIO 描述逻辑线。

    阅读全文 →
  63. 嵌入式 Linux 系统工程 063:clock、reset、regulator 与生命周期

    外设通常需要供电、时钟和复位顺序。

    阅读全文 →
  64. 嵌入式 Linux 系统工程 064:DMA、IOMMU 与缓存所有权

    CPU 虚拟地址、物理地址和 DMA 地址是不同概念。

    阅读全文 →
  65. 嵌入式 Linux 系统工程 065:UART、termios 与串口使用

    串口 fd 的行为受 termios 控制,规范模式可能等待换行,回显和字符转换会修改字节流。

    阅读全文 →
  66. 嵌入式 Linux 系统工程 066:I²C 设备、事务与访问工具

    Linux I²C 适配器编号不一定与芯片手册控制器编号相同。

    阅读全文 →
  67. 嵌入式 Linux 系统工程 067:SPI、spidev 与传输

    SPI 传输同时涉及发送和接收,设备协议定义指令、地址、dummy 和数据阶段。

    阅读全文 →
  68. 嵌入式 Linux 系统工程 068:GPIO 字符设备与事件

    GPIO line 请求建立所有权和配置,释放请求后电平保持行为取决于硬件与驱动,不能默认永久保持。

    阅读全文 →
  69. 嵌入式 Linux 系统工程 069:PWM、定时器与控制输出

    硬件 PWM 由控制器产生周期,用户态定时 sleep 翻转 GPIO 不能等价替代。

    阅读全文 →
  70. 嵌入式 Linux 系统工程 070:ADC、传感器与 IIO

    IIO 将采样通道、量程、偏移、触发和缓冲组织成接口。

    阅读全文 →
  71. 嵌入式 Linux 系统工程 071:input、按键与触摸事件

    evdev 以类型、代码和值表达事件,SYN_REPORT 划分一组更新。

    阅读全文 →
  72. 嵌入式 Linux 系统工程 072:CAN、SocketCAN 与错误状态

    SocketCAN 将 CAN 控制器接入网络栈,应用使用 CAN socket。

    阅读全文 →
  73. 嵌入式 Linux 系统工程 073:USB 枚举、描述符与端点

    USB 主机枚举设备并读取描述符,再由驱动匹配接口。

    阅读全文 →
  74. 嵌入式 Linux 系统工程 074:USB Host、Gadget 与 UVC

    Host 管理总线,Gadget 把板子呈现为 USB 设备,双角色控制器还涉及角色切换。

    阅读全文 →
  75. 嵌入式 Linux 系统工程 075:PCIe 枚举、BAR、MSI 与 DMA

    PCIe 链路建立、配置空间可读、资源分配、驱动绑定、DMA 成功是逐层推进的。

    阅读全文 →
  76. 嵌入式 Linux 系统工程 076:V4L2 采集与缓冲队列

    典型流式采集经历能力查询、格式协商、申请缓冲、入队、启动、出队和再入队。

    阅读全文 →
  77. 嵌入式 Linux 系统工程 077:Media Controller 与摄像头拓扑

    Media Controller 用 entity、pad 和 link 表达媒体管线;subdev 描述 sensor、接收器等子设备。

    阅读全文 →
  78. 嵌入式 Linux 系统工程 078:ALSA、PCM 与音频欠载

    ALSA PCM 把采样流组织为环形缓冲和 period,frame 包含同一采样时刻的各通道数据。

    阅读全文 →
  79. 嵌入式 Linux 系统工程 079:DRM、KMS 与显示缓冲

    DRM/KMS 用 connector、encoder、CRTC 和 plane 表达显示资源。

    阅读全文 →
  80. 嵌入式 Linux 系统工程 080:厂商视频 SDK 与 NPU 资源

    厂商 SDK 常把采集、处理、编码和推理封装为模块及通道。

    阅读全文 →
  81. 嵌入式 Linux 系统工程 081:网卡、MAC、PHY 与链路状态

    网卡逻辑状态 UP 与物理 carrier 是不同条件。

    阅读全文 →
  82. 嵌入式 Linux 系统工程 082:IP、子网、路由与邻居表

    发送 IP 数据先按路由决定出口及下一跳,再解析相邻链路层地址。

    阅读全文 →
  83. 嵌入式 Linux 系统工程 083:DHCP、DNS 与时间同步

    DHCP 提供地址及租约配置,DNS 负责名字解析,NTP 等协议校准时钟,三者独立。

    阅读全文 →
  84. 嵌入式 Linux 系统工程 084:TCP、UDP 与 socket 缓冲

    TCP 提供有序字节流,应用仍需消息边界和超时协议;UDP 保留数据报边界但不保证送达。

    阅读全文 →
  85. 嵌入式 Linux 系统工程 085:ss、抓包与协议分析

    ss 展示 socket 状态,抓包观察特定位置的网络数据,两者回答不同问题。

    阅读全文 →
  86. 嵌入式 Linux 系统工程 086:吞吐、重传、MTU 与延迟

    吞吐与单包延迟不是同一目标,批处理可能提高前者却增加后者。

    阅读全文 →
  87. 嵌入式 Linux 系统工程 087:Wi-Fi、蜂窝模块与重连

    无线连接包括设备总线、固件、射频关联、认证和 IP 配置多个层次。

    阅读全文 →
  88. 嵌入式 Linux 系统工程 088:防火墙、转发、NAT 与隔离

    本机接收、转发和本机发送经过不同网络处理路径。

    阅读全文 →
  89. 嵌入式 Linux 系统工程 089:交叉编译、sysroot 与 pkg-config

    编译器目标、头文件、链接库和运行时必须一致。

    阅读全文 →
  90. 嵌入式 Linux 系统工程 090:Make、CMake 与可重复构建

    构建系统根据依赖决定重建,依赖遗漏会留下旧产物。

    阅读全文 →
  91. 嵌入式 Linux 系统工程 091:ELF、库与动态加载器

    静态链接把所需代码并入产物,动态链接由运行时加载器解析依赖。

    阅读全文 →
  92. 嵌入式 Linux 系统工程 092:程序无法启动的分层排查

    Shell 执行失败可能来自权限、挂载 noexec、架构、解释器、动态库或脚本 shebang。

    阅读全文 →
  93. 嵌入式 Linux 系统工程 093:配置、日志与错误处理

    配置必须定义类型、范围和默认值,错误输入应在资源申请前拒绝。

    阅读全文 →
  94. 嵌入式 Linux 系统工程 094:服务管理、依赖与恢复

    守护程序应有清晰的前台运行模式、退出状态和停止协议,交由 init 管理。

    阅读全文 →
  95. 嵌入式 Linux 系统工程 095:capabilities 与设备访问

    Linux 将部分特权拆为 capabilities,但文件权限、namespace 和 LSM 仍共同影响访问。

    阅读全文 →
  96. 嵌入式 Linux 系统工程 096:软件包、升级与回退

    升级要同时处理真实性、版本兼容、掉电恢复和配置迁移。

    阅读全文 →
  97. 嵌入式 Linux 系统工程 097:strace 定位系统调用问题

    strace 观察系统调用及信号,可回答程序卡在哪个内核接口、收到什么错误。

    阅读全文 →
  98. 嵌入式 Linux 系统工程 098:GDB 与 gdbserver

    调试符号把地址映射到函数和源行,优化可能内联函数或移除变量。

    阅读全文 →
  99. 嵌入式 Linux 系统工程 099:core dump、符号与回溯

    core 保存进程异常时的部分状态,是否生成受资源限制、core_pattern、权限和服务策略影响。

    阅读全文 →
  100. 嵌入式 Linux 系统工程 100:ASan、UBSan 与内存错误

    ASan 检测多类越界和释放后使用,UBSan 检测部分未定义行为。

    阅读全文 →
  101. 嵌入式 Linux 系统工程 101:perf 与采样分析

    perf 可读取性能事件并采样调用栈,但事件支持取决于 PMU、内核和权限。

    阅读全文 →
  102. 嵌入式 Linux 系统工程 102:ftrace、tracepoints 与时序

    静态 tracepoint 记录内核定义的事件,函数追踪观察调用行为。

    阅读全文 →
  103. 嵌入式 Linux 系统工程 103:eBPF 的用途、条件与替代方案

    eBPF 可在受控内核挂点运行经验证的程序,采集事件并通过 map 等传递结果。

    阅读全文 →
  104. 嵌入式 Linux 系统工程 104:联合定位性能瓶颈

    性能是工作量、资源供给和排队共同作用的结果。

    阅读全文 →
  105. 嵌入式 Linux 系统工程 105:Oops、panic 与内核调用栈

    Oops 报告内核异常,后续行为取决于上下文和策略;panic 则进入不可继续正常运行的处理路径。

    阅读全文 →
  106. 嵌入式 Linux 系统工程 106:hung task、soft lockup 与 hard lockup

    hung task 常报告长时间不可中断等待;soft lockup 和 hard lockup 监测不同层次的 CPU 进展。

    阅读全文 →
  107. 嵌入式 Linux 系统工程 107:锁检查与内核调试配置

    lockdep 检查锁依赖及上下文规则,KASAN 等工具辅助检测内核内存错误。

    阅读全文 →
  108. 嵌入式 Linux 系统工程 108:PREEMPT_RT 与实时延迟

    实时性关注截止时间和最坏延迟。

    阅读全文 →
  109. 嵌入式 Linux 系统工程 109:时钟源、时间戳与对齐

    CLOCK_REALTIME 表示墙上时间,可能被校准;CLOCK_MONOTONIC 适合测量同系统的持续时间。

    阅读全文 →
  110. 嵌入式 Linux 系统工程 110:频率、温度与降频

    CPU 和设备频率由策略、负载、温度及电源条件共同控制。

    阅读全文 →
  111. 嵌入式 Linux 系统工程 111:suspend、runtime PM 与唤醒

    系统休眠面向整机,runtime PM 管理运行期间的单设备空闲。

    阅读全文 →
  112. 嵌入式 Linux 系统工程 112:watchdog、pstore 与故障现场

    硬件 watchdog 监测喂狗行为,不直接理解业务健康。

    阅读全文 →
  113. 嵌入式 Linux 系统工程 113:cgroups、限制与资源压力

    cgroup 把任务组织为层级并控制资源。

    阅读全文 →
  114. 嵌入式 Linux 系统工程 114:namespaces、容器与设备访问

    namespace 隔离可见视图,cgroup 管资源,容器共享宿主内核。

    阅读全文 →
  115. 嵌入式 Linux 系统工程 115:案例:启动和根文件系统失败

    案例输入是构造日志,包含控制台已启动、根设备等待和 init 执行失败三类事件。

    阅读全文 →
  116. 嵌入式 Linux 系统工程 116:案例:摄像头无图、花屏与丢帧

    无图沿供电、控制、出流、接收、ISP、缓冲和应用逐层检查。

    阅读全文 →
  117. 嵌入式 Linux 系统工程 117:案例:NPU 变慢与缓冲分配失败

    先把预处理、排队、设备执行、后处理和输出拆开,再核对模型、频率和输入形状。

    阅读全文 →
  118. 嵌入式 Linux 系统工程 118:案例:网络视频卡顿与帧龄

    视频流的用户体验由采集到呈现的年龄决定,网络吞吐足够也可能积压旧帧。

    阅读全文 →
  119. 嵌入式 Linux 系统工程 119:案例:长期运行的内存与句柄增长

    长期异常需要观察资源斜率和业务周期,而不是只看崩溃瞬间。

    阅读全文 →
  120. 嵌入式 Linux 系统工程 120:整机验收与故障报告

    验收将功能、性能和恢复能力放在明确条件下测试。

    阅读全文 →