Linux Kernel 6.1 tools目录全解析 | RK平台ARM64交叉编译实战指南

电子说

1.4w人已加入

描述

 

在瑞芯微(RKARM64平台嵌入式Linux开发、内核调试与硬件外设测试中,Linux内核源码自带的tools目录是官方标配的工具集合,涵盖性能分析、设备调试、系统管理、硬件测试等全场景能力。

本文完整拆解Linux Kernel 6.1 tools目录所有模块功能,并给出RK平台ARM64架构交叉编译的标准指令,一站式解决内核工具使用与编译问题,适合内核开发者、嵌入式工程师直接参考使用。

一、tools目录核心定位

toolsLinux内核源码的核心工具目录,集成了内核开发、系统调试、性能分析、设备测试、虚拟化管理等各类专用工具,是内核开发者、系统管理员、性能优化工程师的必备工具库,可直接用于开发调试与生产环境运维。

二、tools目录结构与模块总览

Linux Kernel 6.1tools目录共包含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/libx86架构库文件,包含指令分析工具

3. bootconfig

内核启动参数管理工具,用于配置内核启动项。

main.c:启动配置工具主实现

4. bpf

BPFBerkeley Packet Filter)核心工具集,内核核心功能模块。

bpftoolBPF程序管理与调试工具

runqslower:运行队列延迟检测工具

bpf_asm.cBPF汇编器

bpf_dbg.cBPF调试工具

5. build

构建系统配套工具与测试组件。

feature:特性检测工具

tests:构建系统测试用例

6. cgroup

控制组资源管理与监控工具,用于cgroup资源管控。

7. counter

系统计数器管理、监控工具。

8. debugging

内核问题诊断、调试工具集,用于定位解决内核故障。

9. edid

显示器EDID配置文件,定义不同分辨率显示器参数。

包含800x600.S1024x768.S1920x1080.S等分辨率文件

10. firewire

IEEE-1394FireWire)流量嗅探工具,nosy嗅探器用户端组件。

decode-fcp.cFireWire控制协议解码

nosy-dump.cFireWire流量捕获与分析

11. firmware

设备固件处理工具,用于固件格式转换与管理。

ihex2fw.cIntel HEX格式转固件格式

12. gpio

GPIO通用输入输出管理、测试工具,嵌入式开发高频使用。

lsgpio.c:列出系统GPIO设备

gpio-event-mon.c:监控GPIO事件

gpio-hammer.cGPIO压力测试

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:汇编相关头文件

linuxLinux内核相关头文件

nolibc:无库依赖头文件

tools:工具专属头文件

uapi:用户空间API头文件

16. io_uring

Linux 5.1引入的高性能I/O接口配套工具。

liburing.hio_uring库头文件

queue.c:队列管理

setup.c:初始化配置

syscall.c:系统调用封装

17. kvm

KVM虚拟化监控工具。

kvm_stat:类top工具,展示KVM运行统计

18. laptop

笔记本电脑专属工具。

dslm:数字传感器链路管理器

freefall:加速度计磁盘保护程序

19. leds

LED设备管理工具。

uledmon.cLED状态监控

20. lib

tools目录通用共享库,提供基础能力支撑。

api:通用API

bpfBPF专用库

perf:性能分析库

subcmd:子命令处理库

symbol:符号处理库

thermal:热管理库

traceevent:跟踪事件库

通用函数:bitmap.clist_sort.crbtree.c

21. memory-model

内存一致性测试模型定义。

lock.cat:内存模型定义文件

22. objtool

ELF对象文件分析、修改工具。

check.cELF文件检查

elf.cELF文件处理

objtool.c:工具主实现

orc_dump.cORC unwind信息转储

orc_gen.cORC unwind信息生成

23. pci

PCI设备测试工具。

pcitest.cPCI设备测试程序

24. pcmcia

PCMCIA设备配套工具。

crc32hash.cCRC32哈希计算

25. perf

Linux核心性能分析工具,tools目录最复杂模块。

核心功能:性能事件采集、系统调用跟踪、硬件计数器监控、函数调用图分析、内存访问分析、调度器行为分析

核心工具

perf record:记录性能事件

perf report:性能数据解析

perf top:实时热点函数

perf stat:性能计数器统计

perf trace:系统调用跟踪

perf script:性能数据脚本处理

26. power

电源管理工具集。

acpiACPI工具

cpupowerCPU电源管理

pm-graph:电源管理图形分析

x86x86专属工具(turbostatx86_energy_perf_policy

27. rcu

RCURead-Copy Update)行为分析工具。

[extract-stall.sh](extract-stall.sh):提取RCU Stall信息

[rcu-cbs.py](rcu-cbs.py)RCU回调分析

28. scripts

内核构建、辅助执行脚本集合。

29. spi

SPI设备测试工具。

spidev_test.cSPI设备测试

spidev_fdx.cSPI全双工测试

30. testing

内核测试工具与框架。

cxlCXL测试

ktest:内核测试框架

kunit:内核单元测试

memblock:内存块测试

nvdimm:非易失性内存测试

vsockvsock测试

31. thermal

热管理监控与调优工具。

lib:热管理库

tmon:热监控调优

thermometer:温度捕获

thermal-engine:热监控引擎

32. time

时间相关测试工具。

[udelay_test.sh](udelay_test.sh):微延迟测试

33. tracing

系统实时跟踪工具。

rtla:实时延迟分析

34. usb

USB设备测试与共享工具。

usbip:网络USB设备共享

testusb.cUSB设备测试

ffs-test.c:功能文件系统测试

35. virtio

虚拟化设备接口标准virtio配套工具。

四、tools目录原生构建与安装

tools目录通过Makefile统一管理构建流程,原生本地编译命令如下:

make tools/:构建指定工具

make tools/_install:构建并安装指定工具

make tools/all:构建所有工具

make tools/install:构建并安装所有工具

make tools/_clean:清理指定工具编译产物

make tools/clean:清理所有工具编译产物

五、RK平台ARM64交叉编译实战

瑞芯微RK3568/RK3588ARM64平台,不可使用原生顶层编译命令,需采用以下标准指令交叉编译,以GPIO工具为例:

1. 编译前提

执行目录:Linux Kernel 6.1源码根目录

安装ARM64交叉编译工具链

Bash
sudo apt install gcc-aarch64-linux-gnu

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

六、总结

Linux Kernel 6.1tools目录是内核官方提供的全能工具集,覆盖嵌入式开发、内核调试、性能分析、硬件测试全场景,在RK ARM64平台开发中,必须使用-C进入子目录+指定交叉编译器的方式编译,才能生成适配开发板的可执行文件。

熟练掌握tools目录的功能与编译方法,可大幅提升RK平台内核开发、硬件调试、系统运维的效率。

附:Linux Kernel 6.1 tools目录 功能脑图

 

Linux

本文适用于瑞芯微RK3568/RK3588ARM64平台内核开发与调试,核心编译指令可直接复制使用。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分