欢迎来到嵌入式开发笔记
发表于|更新于|Linux嵌入式
|总字数:108|阅读时长:1分钟
欢迎来到 嵌入式开发笔记。
这里用于记录 Linux、驱动开发、系统移植、C/C++、设备树以及嵌入式开发中的实践与思考。
内容方向
- Linux 内核与驱动开发
- U-Boot、设备树与系统移植
- C/C++ 编程实践
- 嵌入式问题定位与调试
代码示例
1 | #include <stdio.h> |
文章作者: hyckleri
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 嵌入式开发笔记!
相关推荐

2026-07-15
Linux sk_buff 深度解析(七):VLAN、隧道、分片与重组
写在前面sk_buff 是 Linux 网络栈最核心、也最容易被误解的数据结构之一。它并不是“装着一个完整网络包的结构体”,而是贯穿驱动、协议栈、队列、Socket、Netfilter、tc、BPF 与硬件 offload 的控制对象和所有权载体。 解释 VLAN metadata、inner/outer header、encapsulation、隧道 GSO/checksum,以及 IPv4/IPv6 分片队列和 frag_list 重组后的非线性布局。 本文以本地 Linux 5.10.209 源码为主线;涉及演进时对照 Linux 6.1.99,涉及网卡驱动时结合 Firefly RK3588 SDK Linux 5.10.198。本文是源码分析,不把尚未执行的 QEMU、tracepoint 或开发板实验写成已验证结论。 阅读前先建立四个问题阅读任何 skb 代码路径,都建议反复追问: 当前 skb->data 指向哪一层协议头,linear 与 non-linear 数据分别在哪里? 哪些字段刚被修改,下一层为什么依赖这些字段? ...

2026-07-15
Linux sk_buff 深度解析(五):GRO、GSO、Checksum 与多核流调度
写在前面sk_buff 是 Linux 网络栈最核心、也最容易被误解的数据结构之一。它并不是“装着一个完整网络包的结构体”,而是贯穿驱动、协议栈、队列、Socket、Netfilter、tc、BPF 与硬件 offload 的控制对象和所有权载体。 把 GRO/GSO/TSO、checksum 四态以及 RSS/RPS/RFS/XPS 放在同一性能模型下,解释 skb 元数据如何替代重复解析和拷贝。 本文以本地 Linux 5.10.209 源码为主线;涉及演进时对照 Linux 6.1.99,涉及网卡驱动时结合 Firefly RK3588 SDK Linux 5.10.198。本文是源码分析,不把尚未执行的 QEMU、tracepoint 或开发板实验写成已验证结论。 阅读前先建立四个问题阅读任何 skb 代码路径,都建议反复追问: 当前 skb->data 指向哪一层协议头,linear 与 non-linear 数据分别在哪里? 哪些字段刚被修改,下一层为什么依赖这些字段? 当前谁持有 skb shell、hea...

2026-07-15
Linux sk_buff 深度解析(八):Socket 内存、零拷贝、丢包与版本演进
写在前面sk_buff 是 Linux 网络栈最核心、也最容易被误解的数据结构之一。它并不是“装着一个完整网络包的结构体”,而是贯穿驱动、协议栈、队列、Socket、Netfilter、tc、BPF 与硬件 offload 的控制对象和所有权载体。 从 socket truesize/owner、MSG_ZEROCOPY、error queue、drop reason 讲到 Linux 5.10 与 6.1 的 skb 演进,并总结 RK3588 BSP 的验证边界。 本文以本地 Linux 5.10.209 源码为主线;涉及演进时对照 Linux 6.1.99,涉及网卡驱动时结合 Firefly RK3588 SDK Linux 5.10.198。本文是源码分析,不把尚未执行的 QEMU、tracepoint 或开发板实验写成已验证结论。 阅读前先建立四个问题阅读任何 skb 代码路径,都建议反复追问: 当前 skb->data 指向哪一层协议头,linear 与 non-linear 数据分别在哪里? 哪些字段刚被修改,下一层为什么依赖这些字段? 当前谁持...

2026-07-15
Linux sk_buff 深度解析(四):从 sendmsg 到 TX completion
写在前面sk_buff 是 Linux 网络栈最核心、也最容易被误解的数据结构之一。它并不是“装着一个完整网络包的结构体”,而是贯穿驱动、协议栈、队列、Socket、Netfilter、tc、BPF 与硬件 offload 的控制对象和所有权载体。 打通 UDP/TCP sendmsg、IPv4 output、qdisc、ndo_start_xmit、stmmac DMA 映射与 TX clean,重点解释队列和驱动的 skb 所有权契约。 本文以本地 Linux 5.10.209 源码为主线;涉及演进时对照 Linux 6.1.99,涉及网卡驱动时结合 Firefly RK3588 SDK Linux 5.10.198。本文是源码分析,不把尚未执行的 QEMU、tracepoint 或开发板实验写成已验证结论。 阅读前先建立四个问题阅读任何 skb 代码路径,都建议反复追问: 当前 skb->data 指向哪一层协议头,linear 与 non-linear 数据分别在哪里? 哪些字段刚被修改,下一层为什么依赖这些字段? 当前谁持有 skb shell、he...

2026-07-15
Linux sk_buff 深度解析(三):从网卡 DMA 到 Socket 的 RX 路径
写在前面sk_buff 是 Linux 网络栈最核心、也最容易被误解的数据结构之一。它并不是“装着一个完整网络包的结构体”,而是贯穿驱动、协议栈、队列、Socket、Netfilter、tc、BPF 与硬件 offload 的控制对象和所有权载体。 以 RK3588 stmmac 为驱动实例,追踪 DMA page 构造 skb、NAPI/GRO/RPS、IPv4、TCP/UDP 到 Socket 接收队列的完整所有权变化。 本文以本地 Linux 5.10.209 源码为主线;涉及演进时对照 Linux 6.1.99,涉及网卡驱动时结合 Firefly RK3588 SDK Linux 5.10.198。本文是源码分析,不把尚未执行的 QEMU、tracepoint 或开发板实验写成已验证结论。 阅读前先建立四个问题阅读任何 skb 代码路径,都建议反复追问: 当前 skb->data 指向哪一层协议头,linear 与 non-linear 数据分别在哪里? 哪些字段刚被修改,下一层为什么依赖这些字段? 当前谁持有 skb shell、...

2026-07-15
Linux sk_buff 深度解析(二):非线性数据、引用计数与生命周期
写在前面sk_buff 是 Linux 网络栈最核心、也最容易被误解的数据结构之一。它并不是“装着一个完整网络包的结构体”,而是贯穿驱动、协议栈、队列、Socket、Netfilter、tc、BPF 与硬件 offload 的控制对象和所有权载体。 深入 linear、frags、frag_list、users、dataref、page ref,串联 sk_buff 的分配、clone、copy、COW 与分层释放。 本文以本地 Linux 5.10.209 源码为主线;涉及演进时对照 Linux 6.1.99,涉及网卡驱动时结合 Firefly RK3588 SDK Linux 5.10.198。本文是源码分析,不把尚未执行的 QEMU、tracepoint 或开发板实验写成已验证结论。 阅读前先建立四个问题阅读任何 skb 代码路径,都建议反复追问: 当前 skb->data 指向哪一层协议头,linear 与 non-linear 数据分别在哪里? 哪些字段刚被修改,下一层为什么依赖这些字段? 当前谁持有 skb shell、head、frag page 以及 s...
公告
Linux嵌入式软件开发一枚,记录嵌入式学习心得