RT-Thread 提供了一套功能强大的 Shell 调试命令,是开发和调试过程中最常用的工具。

一、基础系统状态查看命令

这类命令用于快速了解系统的整体运行状态,是调试的第一步。

1. list_thread (简写:ps)

功能:查看系统中所有线程的状态、优先级、栈使用情况等核心信息。
用法

msh > ps

典型输出

thread     pri  status      sp     stack size max used left tick  error
---------- ---  ------- ---------- ----------  ------  ---------- ---
tshell      20  running  0x000007a0 0x00001000    22%   0x0000000a 000
idle        31  ready    0x00000380 0x00000100    39%   0x0000000a 000
led_thread   10  suspend  0x000005c0 0x00000800    18%   0x00000000 000

关键字段解释

  • pri:线程优先级(数值越小优先级越高);
  • status:状态(running/ready/suspend等);
  • stack size/max used:栈总大小/已使用比例(超过100%表示栈溢出,是高频bug);
  • left tick:剩余时间片。
2. list_timer

功能:查看系统中所有定时器的状态(是否激活、超时时间、回调函数等)。
用法

msh > list_timer
3. list_sem / list_mutex / list_event / list_mailbox

功能:分别查看信号量、互斥锁、事件集、邮箱等IPC通信机制的状态,排查线程同步问题。
用法

msh > list_sem  # 查看信号量
msh > list_mutex # 查看互斥锁

二、内存调试命令

内存泄漏、内存越界是嵌入式开发的高频问题,这类命令是核心调试手段。

1. meminfo

功能:查看系统堆内存的使用情况(总大小、已用、空闲、最大空闲块)。
用法

msh > meminfo

典型输出

total memory: 131072
used memory : 12304
free memory : 118768
max free block: 118768

调试价值:如果 used memory 持续增长,大概率存在内存泄漏

2. heap (需开启 RT_USING_HEAP_DEBUG 宏)

功能:更详细的堆内存调试,显示每个内存块的分配地址、大小、调用栈(需开启栈回溯)。
用法

msh > heap
3. free (RT-Thread 中一般用 meminfo,部分版本兼容)

功能:简化版内存查看,快速确认空闲内存。

三、硬件/外设调试命令

1. pin

功能:直接操作GPIO引脚(读取/设置电平),快速验证硬件连接。
用法

msh > pin read PA0      # 读取PA0引脚电平
msh > pin write PA1 1   # 设置PA1引脚为高电平
msh > pin mode PA2 output # 设置PA2为输出模式
2. uart

功能:查看串口配置、测试串口收发。
用法

msh > uart list         # 列出所有注册的串口设备
msh > uart test uart1   # 测试uart1的收发功能
3. i2c / spi (需开启对应组件)

功能:调试I2C/SPI总线,读取外设寄存器,验证通信是否正常。
用法

msh > i2c scan i2c0    # 扫描i2c0总线上的设备地址
msh > i2c read i2c0 0x50 0x00 2 # 从i2c0设备0x50的0x00寄存器读取2字节

四、高级调试命令

1. backtrace (简写:bt,需开启 RT_USING_BACKTRACE)

功能:打印当前线程的函数调用栈,定位程序崩溃(如HardFault)的原因。
用法

msh > bt  # 打印当前线程调用栈
msh > bt tid1 # 打印指定线程ID的调用栈
2. reset

功能:软复位系统,快速重启设备(无需断电),调试时替代物理复位。
用法

msh > reset
3. version

功能:查看RT-Thread版本、编译器版本,确认开发环境一致性。
用法

msh > version

五、命令使用小贴士

  1. 命令补全:输入命令前几个字符按 Tab 键,Shell会自动补全(需开启 RT_USING_FINSH_CMD_COMPLETE);
  2. 命令帮助:对不熟悉的命令,加 -h--help 查看用法(如 ps -h);
  3. 命令简写:大部分命令支持简写(如 list_threadpslist_timerlt),可通过 help 查看所有支持的简写。

总结

RT-Thread调试的核心命令可归纳为三类:

  1. 系统状态类ps(线程)、meminfo(内存)、list_sem(IPC),用于快速定位系统层面问题;
  2. 硬件调试类pin(GPIO)、i2c/uart(外设),验证硬件和驱动通信;
  3. 高级定位类bt(调用栈)、heap(内存调试),解决崩溃、内存泄漏等复杂问题。

这些命令覆盖了80%以上的调试场景,掌握后能大幅提升RT-Thread开发和问题定位效率。

六、补充命令列表归类


一、系统与初始化类

命令

功能

典型用法

init_btn

初始化按键相关硬件/驱动

init_btn(无参数,执行初始化)

reboot

软重启系统

reboot

version

查看 RT-Thread 版本、编译器信息

version

help

列出所有可用命令及说明

help[命令] -h(如 ps -h

clear

清空终端屏幕

clear


二、线程与系统状态类

命令

功能

典型用法

ps / list_thread

查看所有线程的优先级、状态、栈使用等

pslist_thread

list_sem

查看系统中所有信号量

list_sem

list_event

查看系统中所有事件集

list_event

list_mutex

查看系统中所有互斥锁

list_mutex

list_mailbox

查看系统中所有邮箱

list_mailbox

list_msgqueue

查看系统中所有消息队列

list_msgqueue

list_timer

查看系统中所有定时器

list_timer

list_device

查看系统中注册的所有设备

list_device

list_fd

查看文件描述符列表

list_fd


三、内存调试类

命令

功能

典型用法

free

查看系统堆内存使用情况(总/已用/空闲)

free

list_memheap

列出系统中所有内存堆

list_memheap

list_mempool

列出系统中所有内存池

list_mempool

memheap_trace

转储内存跟踪信息(用于排查泄漏/越界)

memheap_trace


四、文件系统操作类

命令

功能

典型用法

ls

列出当前目录下的文件/文件夹

lsls /sdcard

cp

复制文件

cp src_file dst_file

mv

移动/重命名文件

mv old_name new_name

cat

查看文件内容

cat readme.txt

rm

删除文件/链接

rm file.txt

cd

切换工作目录

cd /sdcard

pwd

打印当前工作目录路径

pwd

mkdir

创建文件夹

mkdir test_dir

mkfs

格式化磁盘(指定文件系统类型)

mkfs sd0 elm

mount

挂载设备到指定路径

mount /dev/sd0 /sdcard elm

umount

卸载已挂载的设备

umount /sdcard

df

查看磁盘分区使用情况

df


五、AT 组件与测试类

命令

功能

典型用法

at

AT 组件命令行交互(服务器/客户端模式)

at serverat client dev_name

cmb_test

命令行测试(用于测试 DIVBYZERO/UNALIGNED/ULOG_ASSERT 等异常)

`cmb_test <DIVBYZERO

stat

查看设备状态

stat can_device(示例:查看 CAN 设备状态)

sram_test

片上 SRAM 读写测试

sram_test

utest_list

列出所有单元测试用例

utest_list

utest_run

运行指定单元测试用例

utest_run -thread test_case [loop_num]


六、时间与日期类

命令

功能

典型用法

date

获取/设置系统日期和时间(支持本地时区)

date(查看);date 2026 03 17 14 30 00(设置)

ntp_sync

通过 NTP 协议同步系统时间

ntp_sync [host_name](默认使用公共 NTP 服务器)


七、外设与硬件调试类

命令

功能

典型用法

adc

ADC 功能测试/读取电压

adc(执行采样);adc_vol_sample(电压转换采样)

lcd_test_init

LCD 屏幕初始化与测试

lcd_test_init

wdt_sample

看门狗驱动示例

wdt_sample

usb_init

USB CDC 设备初始化

usb_init

currentinfo / currentrent

查看电流相关信息(功耗调试)

currentinfo

rt_led_timer_ini

LED 定时器示例初始化

rt_led_timer_ini


八、网络与通信类

命令

功能

典型用法

ifconfig

查看所有网络接口信息(IP/MAC/状态)

ifconfig

ping

测试网络连通性

ping www.baidu.com

dns

查看/设置 DNS 服务器

dns(查看);dns set 8.8.8.8

netstat

查看 TCP/IP 连接状态

netstat

mqtt_start

启动 MQTT 客户端

mqtt_start

mqtt_stop

停止 MQTT 客户端

mqtt_stop

mqtt_publish

发布消息到指定 MQTT 主题

mqtt_publish topic "message"

mqtt_subscribe

订阅 MQTT 主题

mqtt_subscribe topic

mqtt_unsubscribe

取消订阅 MQTT 主题

mqtt_unsubscribe topic

mqtt_emqx

连接 EMQX MQTT broker 示例

mqtt_emqx

tcpserv

TCP 服务端示例

tcpserv

tcpclient

TCP 客户端示例

tcpclient

udpserv

UDP 服务端示例

udpserv

udpclient

UDP 客户端示例

udpclient

netdev_set_defau

设置默认网络接口设备

netdev_set_defau eth0

modbus_slave_sample

Modbus 从机示例

modbus_slave_sample

tcpsrv

TCP 服务端示例(别名)

tcpsrv


九、串口与文件传输类

命令

功能

典型用法

ry

YMODEM 协议接收文件(默认串口 console)

ry [uart0]

sy

YMODEM 协议发送文件(默认串口 console)

sy file_path [uart0]


十、其他工具类

命令

功能

典型用法

echo

输出字符串到终端

echo "hello rt-thread"

tail

打印文件最后 N 行内容

tail log.txt 10(打印最后10行)

hello

输出 "hello world"(示例命令)

hello

list

列出所有命令(同 help 效果)

list


Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐