电子说
在瑞芯微(RK)ARM64平台嵌入式Linux开发、内核调试与硬件外设测试中,Linux内核源码自带的tools目录是官方标配的工具集合,涵盖性能分析、设备调试、系统管理、硬件测试等全场景能力。
本文完整拆解Linux Kernel 6.1 tools目录所有模块功能,并给出RK平台ARM64架构交叉编译的标准指令,一站式解决内核工具使用与编译问题,适合内核开发者、嵌入式工程师直接参考使用。
一、tools目录核心定位
tools是Linux内核源码的核心工具目录,集成了内核开发、系统调试、性能分析、设备测试、虚拟化管理等各类专用工具,是内核开发者、系统管理员、性能优化工程师的必备工具库,可直接用于开发调试与生产环境运维。
二、tools目录结构与模块总览
Linux Kernel 6.1的tools目录共包含35个功能模块,各模块分工明确,核心功能如下:
|
模块 |
主要功能 |
|
accounting |
系统记账和资源使用跟踪工具 |
|
arch |
架构相关工具和库 |
|
bootconfig |
启动配置工具 |
|
bpf |
BPF相关工具和实用程序 |
|
build |
构建系统工具 |
|
cgroup |
控制组管理工具 |
|
counter |
计数器工具 |
|
debugging |
调试工具 |
|
edid |
显示器EDID数据文件 |
|
firewire |
IEEE-1394流量嗅探工具 |
|
firmware |
固件管理工具 |
|
gpio |
GPIO管理和测试工具 |
|
hv |
Hyper-V客户端工具 |
|
iio |
工业I/O工具 |
|
include |
共享头文件 |
|
io_uring |
io_uring相关工具 |
|
kvm |
KVM虚拟化工具 |
|
laptop |
笔记本电脑相关工具 |
|
leds |
LED管理工具 |
|
lib |
共享库 |
|
memory-model |
内存模型定义 |
|
objtool |
ELF对象分析工具 |
|
pci |
PCI设备测试工具 |
|
pcmcia |
PCMCIA工具 |
|
perf |
性能分析工具 |
|
power |
电源管理工具 |
|
rcu |
RCU相关工具 |
|
scripts |
构建和辅助脚本 |
|
spi |
SPI设备测试工具 |
|
testing |
测试工具集 |
|
thermal |
热管理工具 |
|
time |
时间相关工具 |
|
tracing |
系统跟踪工具 |
|
usb |
USB设备测试工具 |
|
virtio |
virtio相关工具 |
三、tools目录全模块详细分析
1. accounting
系统资源使用跟踪工具,用于监控和分析进程的资源消耗情况。
•getdelays.c:测量进程等待各种资源的时间
•procacct.c:处理进程会计信息
2. arch
特定架构的工具和库,当前主要包含x86架构相关工具。
•x86/lib:x86架构库文件,包含指令分析工具
3. bootconfig
内核启动参数管理工具,用于配置内核启动项。
•main.c:启动配置工具主实现
4. bpf
BPF(Berkeley Packet Filter)核心工具集,内核核心功能模块。
•bpftool:BPF程序管理与调试工具
•runqslower:运行队列延迟检测工具
•bpf_asm.c:BPF汇编器
•bpf_dbg.c:BPF调试工具
5. build
构建系统配套工具与测试组件。
•feature:特性检测工具
•tests:构建系统测试用例
6. cgroup
控制组资源管理与监控工具,用于cgroup资源管控。
7. counter
系统计数器管理、监控工具。
8. debugging
内核问题诊断、调试工具集,用于定位解决内核故障。
9. edid
显示器EDID配置文件,定义不同分辨率显示器参数。
•包含800x600.S、1024x768.S、1920x1080.S等分辨率文件
10. firewire
IEEE-1394(FireWire)流量嗅探工具,nosy嗅探器用户端组件。
•decode-fcp.c:FireWire控制协议解码
•nosy-dump.c:FireWire流量捕获与分析
11. firmware
设备固件处理工具,用于固件格式转换与管理。
•ihex2fw.c:Intel HEX格式转固件格式
12. gpio
GPIO通用输入输出管理、测试工具,嵌入式开发高频使用。
•lsgpio.c:列出系统GPIO设备
•gpio-event-mon.c:监控GPIO事件
•gpio-hammer.c:GPIO压力测试
•gpio-watch.c:监控GPIO状态变化
13. hv
Hyper-V虚拟机Linux客户端工具。
•hv_fcopy_daemon.c:文件复制守护进程
•hv_kvp_daemon.c:键值对守护进程
•hv_vss_daemon.c:卷影复制服务守护进程
•lsvmbus:列出VMBus设备
14. iio
工业I/O设备管理工具。
•lsiio.c:列出系统IIO设备
15. include
tools目录共享头文件集合。
•asm:汇编相关头文件
•linux:Linux内核相关头文件
•nolibc:无库依赖头文件
•tools:工具专属头文件
•uapi:用户空间API头文件
16. io_uring
Linux 5.1引入的高性能I/O接口配套工具。
•liburing.h:io_uring库头文件
•queue.c:队列管理
•setup.c:初始化配置
•syscall.c:系统调用封装
17. kvm
KVM虚拟化监控工具。
•kvm_stat:类top工具,展示KVM运行统计
18. laptop
笔记本电脑专属工具。
•dslm:数字传感器链路管理器
•freefall:加速度计磁盘保护程序
19. leds
LED设备管理工具。
•uledmon.c:LED状态监控
20. lib
tools目录通用共享库,提供基础能力支撑。
•api:通用API库
•bpf:BPF专用库
•perf:性能分析库
•subcmd:子命令处理库
•symbol:符号处理库
•thermal:热管理库
•traceevent:跟踪事件库
•通用函数:bitmap.c、list_sort.c、rbtree.c等
21. memory-model
内存一致性测试模型定义。
•lock.cat:内存模型定义文件
22. objtool
ELF对象文件分析、修改工具。
•check.c:ELF文件检查
•elf.c:ELF文件处理
•objtool.c:工具主实现
•orc_dump.c:ORC unwind信息转储
•orc_gen.c:ORC unwind信息生成
23. pci
PCI设备测试工具。
•pcitest.c:PCI设备测试程序
24. pcmcia
PCMCIA设备配套工具。
•crc32hash.c:CRC32哈希计算
25. perf
Linux核心性能分析工具,tools目录最复杂模块。
核心功能:性能事件采集、系统调用跟踪、硬件计数器监控、函数调用图分析、内存访问分析、调度器行为分析
核心工具:
•perf record:记录性能事件
•perf report:性能数据解析
•perf top:实时热点函数
•perf stat:性能计数器统计
•perf trace:系统调用跟踪
•perf script:性能数据脚本处理
26. power
电源管理工具集。
•acpi:ACPI工具
•cpupower:CPU电源管理
•pm-graph:电源管理图形分析
•x86:x86专属工具(turbostat、x86_energy_perf_policy)
27. rcu
RCU(Read-Copy Update)行为分析工具。
•[extract-stall.sh](extract-stall.sh):提取RCU Stall信息
•[rcu-cbs.py](rcu-cbs.py):RCU回调分析
28. scripts
内核构建、辅助执行脚本集合。
29. spi
SPI设备测试工具。
•spidev_test.c:SPI设备测试
•spidev_fdx.c:SPI全双工测试
30. testing
内核测试工具与框架。
•cxl:CXL测试
•ktest:内核测试框架
•kunit:内核单元测试
•memblock:内存块测试
•nvdimm:非易失性内存测试
•vsock:vsock测试
31. thermal
热管理监控与调优工具。
•lib:热管理库
•tmon:热监控调优
•thermometer:温度捕获
•thermal-engine:热监控引擎
32. time
时间相关测试工具。
•[udelay_test.sh](udelay_test.sh):微延迟测试
33. tracing
系统实时跟踪工具。
•rtla:实时延迟分析
34. usb
USB设备测试与共享工具。
•usbip:网络USB设备共享
•testusb.c:USB设备测试
•ffs-test.c:功能文件系统测试
35. virtio
虚拟化设备接口标准virtio配套工具。
四、tools目录原生构建与安装
tools目录通过Makefile统一管理构建流程,原生本地编译命令如下:
•make tools/
•make tools/
•make tools/all:构建所有工具
•make tools/install:构建并安装所有工具
•make tools/
•make tools/clean:清理所有工具编译产物
五、RK平台ARM64交叉编译实战
瑞芯微RK3568/RK3588等ARM64平台,不可使用原生顶层编译命令,需采用以下标准指令交叉编译,以GPIO工具为例:
1. 编译前提
•执行目录:Linux Kernel 6.1源码根目录
•安装ARM64交叉编译工具链
|
Bash |
2. RK平台标准编译指令
# 清理旧编译产物make -C tools/gpio clean CROSS_COMPILE=aarch64-linux-gnu-# 编译生成ARM64架构GPIO工具make -C tools/gpio CROSS_COMPILE=aarch64-linux-gnu-# 自定义目录输出产物make -C tools/gpio install CROSS_COMPILE=aarch64-linux-gnu- DESTDIR=./rk_gpio_output
3. 通用编译模板
tools目录所有模块均可套用以下指令:
make -C tools/[模块名] CROSS_COMPILE=aarch64-linux-gnu-
4. 编译产物
编译完成后,在tools/gpio/目录生成可直接在RK开发板运行的工具:
•lsgpio
•gpio-event-mon
•gpio-hammer
•gpio-watch

六、总结
Linux Kernel 6.1的tools目录是内核官方提供的全能工具集,覆盖嵌入式开发、内核调试、性能分析、硬件测试全场景,在RK ARM64平台开发中,必须使用-C进入子目录+指定交叉编译器的方式编译,才能生成适配开发板的可执行文件。
熟练掌握tools目录的功能与编译方法,可大幅提升RK平台内核开发、硬件调试、系统运维的效率。
附:Linux Kernel 6.1 tools目录 功能脑图

本文适用于瑞芯微RK3568/RK3588等ARM64平台内核开发与调试,核心编译指令可直接复制使用。
全部0条评论
快来发表一下你的评论吧 !