查看Linux系统版本
bash
uname -a
查看Kernel版本和编译信息
bash
cat /proc/version
查看内存信息
bash
cat /proc/meminfo
查看系统分区信息
bash
cat /proc/partitions
查看CPU信息
bash
cat /proc/cpuinfo
查看CPU支持的频率(x可改为0,1,2,3...)
bash
cat /sys/devices/system/cpu/cpux/cpufreq/scaling_available_frequencies
查看CPU支持的策略(x可改为0,1,2,3...)
bash
cat /sys/devices/system/cpu/cpux/cpufreq/scaling_available_governors
查看DDR支持的频率
bash
cat /sys/class/devfreq/dmc/available_frequencies
查看内核日志
bash
dmesg
查看CPU温度
bash
cat /sys/class/thermal/thermal_zone0/temp
查看CPU当前频率(x可改为0,1,2,3...)
bash
cat /sys/devices/system/cpu/cpux/cpufreq/scaling_cur_freq
查看GPU使用率(fb000000为GPU地址,不同SoC地址不同)
bash
cat /sys/devices/platform/fb000000.gpu/devfreq/fb000000.gpu/load
查看DDR当前频率
bash
cat /sys/class/devfreq/dmc/cur_freq
查看DDR带宽占用率
bash
cat /sys/devices/platform/dmc/devfreq/dmc/load
查看GPU当前频率(fb000000为GPU地址,不同SoC地址不同)
bash
cat /sys/class/devfreq/fb000000.gpu/cur_freq
查看NPU当前频率(fdab0000为NPU地址,不同SoC地址不同)
bash
cat /sys/class/devfreq/fdab0000.npu/cur_freq
查看NPU使用率(fdab0000为NPU地址,不同SoC地址不同)
bash
cat /sys/class/devfreq/fdab0000.npu/load
查看系统CLK信息
bash
cat /sys/kernel/debug/clk/clk_summary
查看CPU/GPU/DDR/NPU的频率电压表
bash
cat /sys/kernel/debug/opp/opp_summary
查看GPIO复用情况
bash
cat /sys/kernel/debug/pinctrl/pinctrl/pinmux-pins
查看GPIO占用状态
bash
cat /sys/kernel/debug/gpio
防止Android系统进入二级休眠
bash
echo "test" > /sys/power/wake_lock
强制系统进入二级休眠
bash
echo mem > /sys/power/state
保持PM_DOMAINS常开
bash
echo 1 > /sys/module/pm_domains/parameters/always_on
保持CLK常开
bash
echo 1 > /sys/module/clk_gate/parameters/always_on
查看电源域(Power Domain)信息
bash
cat /sys/kernel/debug/pm_genpd/pm_genpd_summary
关闭CPU核(x可改为0,1,2,3...)
bash
echo 0 > /sys/devices/system/cpu/cpux/online
开启CPU核(x可改为0,1,2,3...)
bash
echo 1 > /sys/devices/system/cpu/cpux/online
手动清除DDR缓存占用
bash
echo 3 > /proc/sys/vm/drop_caches
频率控制
CPU定频
bash
# 无大小核平台只要操作policy0
# 切换到userspace模式
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
# 设置1.2GHz
echo 1200000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
# 大小核平台需要操作多个policy
# 小核cpu0~cpu3设置
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo 1200000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
# 大核cpu4~cpu5设置
echo userspace > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
echo 1800000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_setspeed
# 大核cpu6~cpu7设置
echo userspace > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
echo 1800000 > /sys/devices/system/cpu/cpufreq/policy6/scaling_setspeed
GPU定频
bash
# 切换到userspace模式(fb000000.gpu需根据平台修改)
echo userspace > /sys/class/devfreq/fb000000.gpu/governor
# 设置400MHz
echo 400000000 > /sys/class/devfreq/fb000000.gpu/userspace/set_freq
# 查看当前频率
cat /sys/class/devfreq/fb000000.gpu/cur_freq
NPU定频
bash
# 切换到userspace模式(fdab0000.npu需根据平台修改)
echo userspace > /sys/class/devfreq/fdab0000.npu/governor
# 设置1GHz
echo 1000000000 > /sys/class/devfreq/fdab0000.npu/userspace/set_freq
# 查看当前频率
cat /sys/class/devfreq/fdab0000.npu/cur_freq
DDR定频
bash
# 切换到userspace模式
echo userspace > /sys/class/devfreq/dmc/governor
# 查看可用频率
cat /sys/class/devfreq/dmc/available_frequencies
# 设置1.56GHz
echo 1560000000 > /sys/class/devfreq/dmc/userspace/set_freq
# 查看当前频率
cat /sys/class/devfreq/dmc/cur_freq
性能模式设置
bash
# CPU性能模式
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
# DDR性能模式
echo performance > /sys/devices/platform/dmc/devfreq/dmc/governor
(debugfs默认是关闭的,需要手动开启下 mount -t debugfs none /sys/kernel/debug)
U-Boot
U-Boot作为引导程序,其调试依赖一系列专用指令。这些指令可快速定位硬件交互、固件加载、设备树配置等问题。U-Boot调试的核心指令,涵盖内存操作、外设调试、系统状态查询等场景。

串口快捷操作
开机时长按以下组合键可触发特定功能,为调试和烧写提供便利:
ctrl+c:进入U-Boot命令行模式(调试核心入口)
ctrl+d:进入loader烧写模式(固件烧录)
ctrl+b:进入maskrom烧写模式(底层硬件烧录)
ctrl+f:进入fastboot模式(快速调试与升级)
内存操作
是U-Boot调试的基础,用于验证地址读写、固件加载地址正确性等场景。
读取内存数据
功能:按指定单位(字节/字/长字/四字)读取并打印内存地址内容。
用法:md [.b, .w, .l, .q] 地址 [数据数量]
• .b:1字节;
• .w:2字节;
• .l:4字节;
• .q:8字节
查看0x76000000开始的16个长字数据(验证内存数据完整性):
bash
md.l 0x76000000 0x10
76000000: fffffffe ffffffff ffffffff ffffffff ................
76000010: ffffffdf ffffffff feffffff ffffffff ................
写入内存数据
功能:向指定内存地址批量写入数据。
用法:mw [.b, .w, .l, .q] 地址 数据 [数量]
向0x76000000写入长字数据0xffff1234并验证:
bash
mw.l 0x76000000 0xffff1234
md.l 0x76000000 1 # 验证写入结果
76000000: ffff1234 ................
通过设备树读寄存器
功能:基于设备树兼容属性(compatible)直接读取硬件寄存器,无需手动计算地址。
用法:iomem <compatible关键词> <起始偏移> <结束偏移>
读取RK3568平台GRF寄存器0x00-0x1c内容(快速定位寄存器配置问题):
bash
iomem -grf 0x0 0x1c
rockchip,rk3568-grf:
fdc60000: 00000000 00000000 00000000 00001111
fdc60010: 00001111 00001111 00000000 00001110
I2C设备调试
I2C是外设常用通信协议,指令可直接操作I2C设备(如传感器、PMIC)
切换I2C总线
功能:指定当前操作的I2C总线编号。
用法:i2c dev [总线编号]
切换到I2C总线0(后续操作默认在此总线上执行):
bash
i2c dev 0
Setting bus to 0
读取I2C设备寄存器
功能:读取指定I2C设备的寄存器数据。
用法:i2c md <设备地址> <寄存器地址> [.0, .1, .2] [数据数量]
设备地址:7位I2C地址(无需左移)
读取I2C设备(地址0x1b)寄存器0x2e开始的32字节(验证传感器数据是否正常):
bash
i2c md 0x1b 0x2e 0x20
002e: 11 0f 00 00 11 0f 00 00 01 00 00 00 09 00 00 0c ................
003e: 00 0a 0a 0c 0c 0c 00 07 07 0a 00 0c 0c 00 00 00 ................
写入I2C设备寄存器
功能:向I2C设备指定寄存器写入数据。
用法:i2c mw <设备地址> <寄存器地址> <数据> [数量]
向I2C设备(地址0x1b)寄存器0x2e写入0x10并验证:
bash
i2c mw 0x1b 0x2e 0x10
i2c md 0x1b 0x2e 1 # 验证写入结果
002e: 10 ................
GPIO调试
GPIO用于硬件交互(如按键、LED、外设复位),指令可直接控制引脚状态。
查看GPIO状态
功能:显示GPIO的输入/输出模式、电平值及关联设备。
用法:gpio status [-a] [<bank> | <pin>]
• -a:显示所有GPIO;
• <bank>:指定GPIO组(如gpio0);
• <pin>:指定引脚(如gpio05)
查看RK3568平台GPIO05状态(验证外设控制引脚是否正常):
bash
gpio status gpio05
Bank gpio0:
gpio05: output: 0 [x] vcc5v0-otg-regulator.gpio # 输出低电平,关联OTG电源
控制GPIO状态
功能:设置GPIO为输入、输出高低电平或切换状态。
用法:
• gpio input <pin>:设为输入
• gpio set <pin>:输出高电平
• gpio clear <pin>:输出低电平
• gpio toggle <pin>:切换电平
控制GPIO05电平(验证外设复位逻辑):
bash
gpio set gpio05 # 输出高电平
gpio: pin gpio05 (gpio 5) value is 1
gpio toggle gpio05 # 切换为低电平
gpio: pin gpio05 (gpio 5) value is 0
设备树(DTB)调试
设备树描述硬件配置,指令用于验证和修改节点配置,确保硬件设备正确被系统识别和使用。
指定设备树地址
功能:设置当前操作的设备树(DTB)在内存中的地址,后续所有设备树操作都将基于此地址进行。
用法:fdt addr [-c] <地址> [<长度>]
• -c:指定操作的是控制设备树
• <地址>:设备树在内存中的起始地址
• <长度>:可选参数,指定设备树的大小
指定设备树地址为0x08300000,后续设备树操作将基于此地址(如不执行,以默认地址操作):
bash
fdt addr 0x08300000
打印设备树内容
功能:递归打印指定路径的设备树节点及其属性,用于验证节点是否正确加载和配置。
用法:fdt print <路径> [属性]
• <路径>:设备树节点的绝对路径
• [属性]:可选参数,指定需要打印的特定属性
打印uart2节点(路径为/serial@fe650000)的配置信息,验证串口硬件配置:
bash
fdt print /serial@fe650000
No FDT memory address configured. Default at 0x08300000
serial@fe650000 {
compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
reg = <0x00000000 0xfe650000 0x00000000 0x00000100>;
interrupts = <0x00000000 0x00000075 0x00000004>;
clocks = <0x00000023 0x0000011f 0x00000023 0x0000011c>;
clock-names = "baudclk", "apb_pclk";
reg-shift = <0x00000002>;
reg-io-width = <0x00000004>;
dmas = <0x00000046 0x00000002 0x00000046 0x00000003>;
pinctrl-names = "default";
pinctrl-0 = <0x00000107>;
status = "disabled";
phandle = <0x000001e6>;
};
修改设备树属性
功能:修改设备树中指定节点的属性值,常用于动态调整硬件配置(如启用/禁用设备)。
用法:fdt set <路径> <属性> <值>
• <路径>:设备树节点的绝对路径
• <属性>:需要修改的属性名称
• <值>:属性的新值
启用uart2节点(将status属性从"disabled"修改为"okay"):
bash
fdt set /serial@fe650000 status okay
修改后再次打印节点信息,验证配置是否生效:
bash
fdt print /serial@fe650000
serial@fe650000 {
compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
reg = <0x00000000 0xfe650000 0x00000000 0x00000100>;
interrupts = <0x00000000 0x00000075 0x00000004>;
clocks = <0x00000023 0x0000011f 0x00000023 0x0000011c>;
clock-names = "baudclk", "apb_pclk";
reg-shift = <0x00000002>;
reg-io-width = <0x00000004>;
dmas = <0x00000046 0x00000002 0x00000046 0x00000003>;
pinctrl-names = "default";
pinctrl-0 = <0x00000107>;
status = "okay"; // 已成功修改为启用状态
phandle = <0x000001e6>;
};
通过fdt set可以灵活调整设备树配置,无需重新编译DTB文件即可测试不同的硬件参数设置,修改之后执行boot即可使用最新的配置开机运行,注意是单次有效,重启后修改无效。
MMC/SD设备调试
MMC(eMMC/SD卡)是主要存储介质,指令用于验证存储设备功能。
查看MMC设备信息
功能:显示当前MMC设备的制造商、容量、速度等信息。
用法:mmc info
查看eMMC设备信息(验证存储设备是否正常识别):
bash
mmc info
Device: sdhci@fe310000
Manufacturer ID: 15
OEM: 100
Name: BJTD4
Timing Interface: HS200
Tran Speed: 200000000
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 29.1 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 29.1 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 4 MiB ENH
切换MMC设备
功能:指定当前操作的MMC设备(如eMMC为0,SD卡为1)。
用法:mmc dev <设备编号>
切换到SD卡(设备1):
bash
mmc dev 1
switch to partitions #0, OK
mmc1 is current device
读写/擦除MMC数据
功能:直接操作MMC块数据,验证存储介质可靠性。
用法:
• mmc read <内存地址> <块编号> <块数量>
• mmc write <内存地址> <块编号> <块数量>
• mmc erase <块编号> <块数量>
读取MMC第0块数据到内存0x70000000(验证存储数据完整性):
bash
mmc read 0x70000000 0 1
md.l 0x70000000 1 # 查看读取结果
70000000: 00000000 ................
USB调试
USB用于外接设备(U盘、网卡等),指令用于调试USB功能。
进入RockUSB烧写模式
功能:启动RockUSB协议,通过USB烧写固件(支持eMMC/Nand等介质)。
用法:rockusb <USB控制器> <设备类型> <设备[:分区]>
通过USB控制器0烧写eMMC设备0:
bash
rockusb 0 mmc 0
RKUSB: LUN 0, dev 0, hwpart 0, sector 0x0, count 0x3a3e000
初始化/重置USB控制器
功能:usb start初始化控制器并扫描设备;usb reset重置控制器并重新扫描。
用法:
• usb start [控制器编号]
• usb reset [控制器编号]
初始化USB控制器0并扫描设备:
bash
usb start
starting USB...
USB0: USB EHCI 1.00
scanning bus 0 for devices... 2 USB Device(s) found
scanning usb for storage devices... 1 Storage Device(s) found
查看/切换USB设备
用法:
• usb tree:显示USB设备层级关系(验证设备枚举)
• usb dev <编号>:切换当前USB存储设备
• usb info:查看当前USB设备信息
查看USB设备树并切换设备:
bash
usb tree
USB device tree:
1 Hub (0x0000:0x0000)
|
+- 2 Mass Storage (0x1234:0x5678) # U盘设备
usb dev 2 # 切换到该U盘
switched to usb storage device 2
系统状态调试
用于排查启动卡死、驱动异常等问题,查看系统整体状态。
查看设备驱动绑定状态
功能:显示设备与驱动的绑定关系及探针(probe)状态,验证驱动是否加载。
用法:dm tree
查看驱动加载状态([ + ]表示探针成功):
bash
dm tree
Class Probed Driver Name
serial [ + ] ns16550_serial |-- serial@11030000 # 串口驱动加载成功
mmc [ + ] rockchip_rk3288_dw_mshc |-- dwmmc@30020000*
内存块管理信息
功能:
• bidram_dump:显示系统总内存及预留块(如ATF、OPTEE占用)
• sysmem_dump:显示内核可见内存及固件(U-Boot、kernel)占用块
用法:命令行调用或开机按ctrl+m打印
排查内存重叠问题(如KERNEL与RAMDISK地址冲突):
bash
sysmem_dump_all:
memory.total = 0x7e000000 (2016 MiB)
allocated.rgn[0].name = "U-Boot" 0x71dd6140 - 0x80000000
allocated.rgn[1].name = "KERNEL" 0x80080000 - 0x88000000
U-Boot的调试指令并非默认全部开启,需在编译配置阶段通过Kconfig选项启用对应功能。
进入配置界面,在U-Boot源码目录执行:
bash
make menuconfig
核心配置项(路径:Command line interface)
内存操作 CONFIG_CMD_MEM
I2C调试 CONFIG_CMD_I2C 依赖CONFIG_DM_I2C、平台I2C驱动
GPIO调试 CONFIG_CMD_GPIO 依赖CONFIG_DM_GPIO、CONFIG_ROCKCHIP_GPIO
设备树调试 CONFIG_CMD_FDT
MMC调试 CONFIG_CMD_MMC 依赖CONFIG_DWMMC、平台MMC驱动
USB调试 CONFIG_CMD_USB 依赖CONFIG_CMD_USB_STORAGE(存储支持)
驱动状态 CONFIG_CMD_DM
配置生效
①保存配置(默认存为.config)
②生成defconfig,替换系统的defconfig
bash
make savedefconfig
mv defconfig configs/rk3568_defconfig
③重新编译U-Boot,并烧录新镜像后即可使用配置的指令