当前位置: 首页 > article >正文

RT-Thread msh命令实战:从日志过滤到自定义命令,一个嵌入式工程师的调试效率提升指南

RT-Thread msh命令实战从日志过滤到自定义命令一个嵌入式工程师的调试效率提升指南调试嵌入式系统时串口终端是我们最亲密的战友。但当ulog日志如瀑布般倾泻而下淹没你输入的msh命令时那种抓狂的感觉每个RT-Thread开发者都深有体会。本文将带你解锁msh的高级用法从精准控制日志输出到打造个性化命令集让你的调试效率提升一个数量级。1. msh基础理解RT-Thread的命令行核心msh(Module Shell)是RT-Thread内置的轻量级命令行解释器它不仅仅是一个简单的命令输入窗口更是系统调试和控制的神经中枢。在RT-Thread 4.0及更高版本中msh默认以线程形式运行优先级为20。常见问题排查如果msh无响应首先检查ps命令输出确认没有更高优先级的线程(如优先级10的main线程)长期占用CPU通过free命令检查内存是否耗尽基础命令速查表命令功能描述使用示例clear清空终端屏幕clearversion显示RT-Thread版本信息versionlist列出系统所有设备与资源listps显示当前运行的线程状态psfree查看内存使用情况freepinGPIO控制工具pin mode PA1 output2. 驯服ulog精准控制日志输出的艺术ulog是RT-Thread强大的日志系统但失控的日志输出会让调试变成噩梦。掌握以下技巧让你在需要信息时获得细节在交互时保持终端清爽。2.1 日志级别控制金字塔ulog采用分级日志系统级别从高到低如下#define LOG_LVL_ASSERT 0 #define LOG_LVL_ERROR 3 #define LOG_LVL_WARN 4 #define LOG_LVL_INFO 6 #define LOG_LVL_DEBUG 7实用技巧开发阶段设置为LOG_LVL_DEBUG获取完整信息生产环境建议LOG_LVL_WARN及以上关键模块可单独设置更详细级别2.2 模块级精准过滤使用ulog_tag_lvl命令可以针对特定模块进行日志控制# 关闭wifi模块所有日志 ulog_tag_lvl wifi 0 # 开启wifi模块调试级日志 ulog_tag_lvl wifi 7 # 设置wifi模块仅显示警告及以上日志 ulog_tag_lvl wifi 4对应的API函数调用方式// 完全静默wifi模块日志 ulog_tag_lvl_filter_set(wifi, LOG_FILTER_LVL_SILENT); // 启用wifi模块全部日志级别 ulog_tag_lvl_filter_set(wifi, LOG_FILTER_LVL_ALL); // 设置wifi模块日志级别为WARNING ulog_tag_lvl_filter_set(wifi, LOG_LVL_WARNING);2.3 全局日志级别控制当需要快速切换整体日志级别时ulog_lvl命令是你的瑞士军刀# 关闭所有日志输出 ulog_lvl 0 # 开启全部日志(DEBUG级别) ulog_lvl 7 # 仅显示WARNING及以上级别日志 ulog_lvl 4对应的API调用ulog_global_filter_lvl_set(LOG_FILTER_LVL_SILENT); // 关闭所有 ulog_global_filter_lvl_set(LOG_FILTER_LVL_ALL); // 开启所有 ulog_global_filter_lvl_set(LOG_LVL_WARNING); // 警告及以上调试技巧在交互式调试时可以先用ulog_lvl 0关闭日志完成命令输入后再恢复原级别避免日志干扰输入。3. 打造你的专属命令集msh真正的威力在于可扩展性。通过自定义命令你可以将常用操作封装成简单指令大幅提升开发效率。3.1 命令导出基础MSH_CMD_EXPORT任何函数只需通过MSH_CMD_EXPORT宏导出就能成为msh命令void hello(void) { rt_kprintf(hello RT-Thread!\n); } MSH_CMD_EXPORT(hello, say hello to RT-Thread);编译后输入hello就会看到问候信息。MSH_CMD_EXPORT的第二个参数是命令描述会显示在help输出中。3.2 带参数命令开发实战实际应用中我们经常需要传递参数。下面是一个传感器读取命令的完整示例static void read_sensor(int argc, char** argv) { if (argc 2) { rt_kprintf(Usage: sensor temp|humi|all [interval_ms]\n); return; } int interval 1000; // 默认1秒 if (argc 3) { interval atoi(argv[2]); } if (!rt_strcmp(argv[1], temp)) { rt_kprintf(Reading temperature every %dms...\n, interval); // 实际温度读取代码 } else if (!rt_strcmp(argv[1], humi)) { rt_kprintf(Reading humidity every %dms...\n, interval); // 实际湿度读取代码 } else if (!rt_strcmp(argv[1], all)) { rt_kprintf(Reading all sensors every %dms...\n, interval); // 全部传感器读取代码 } else { rt_kprintf(Invalid sensor type!\n); } } MSH_CMD_EXPORT(read_sensor, sensor data reading tool);使用示例sensor temp # 默认1秒间隔读取温度 sensor humi 2000 # 2秒间隔读取湿度 sensor all 500 # 0.5秒间隔读取所有传感器3.3 高级技巧命令自动补全RT-Thread支持msh命令自动补全功能。要实现这一点只需确保命令名称是唯一的。例如如果你有sensor_read和sensor_config两个命令输入sensor后按Tab键会自动补全。4. 调试效率提升的进阶技巧4.1 命令组合与脚本化msh支持简单的命令组合利用重定向和管道可以完成复杂任务# 将线程信息保存到文件 ps /threads.txt # 过滤特定线程信息 ps | grep uart4.2 常用命令快捷方式为常用操作创建别名可以节省大量时间static void my_clear(void) { rt_kprintf(\033[2J\033[H); // ANSI清屏序列 rt_kprintf(System ready.\n); } MSH_CMD_EXPORT(cl, clear screen with status);现在输入cl就能快速清屏并显示就绪信息。4.3 调试信息增强在自定义命令中加入丰富的调试信息static void sysinfo(int argc, char** argv) { rt_kprintf(----- System Information -----\n); rt_kprintf(RT-Thread Version: %s\n, rt_version); rt_kprintf(CPU Usage: %d%%\n, get_cpu_usage()); rt_kprintf(Memory: %d/%d KB used\n, get_used_mem(), get_total_mem()); rt_kprintf(Uptime: %d seconds\n, rt_tick_get()/RT_TICK_PER_SECOND); rt_kprintf(-----------------------------\n); } MSH_CMD_EXPORT(sysinfo, show enhanced system information);4.4 安全注意事项生产环境应移除或限制调试命令敏感操作(如重启、配置更改)需要添加权限检查长时间运行的命令应添加超时机制内存敏感型设备要注意命令的内存占用在最近的一个智能家居网关项目中通过合理设计msh命令集我们的现场调试时间缩短了约40%。特别是自定义的netstat命令能够一键显示所有网络连接状态成为排查网络问题的利器。

相关文章:

RT-Thread msh命令实战:从日志过滤到自定义命令,一个嵌入式工程师的调试效率提升指南

RT-Thread msh命令实战:从日志过滤到自定义命令,一个嵌入式工程师的调试效率提升指南 调试嵌入式系统时,串口终端是我们最亲密的战友。但当ulog日志如瀑布般倾泻而下,淹没你输入的msh命令时,那种抓狂的感觉每个RT-Thre…...

别再乱设False Path了!异步电路CDC Signoff中Max Delay约束的实战避坑指南

异步电路CDC Signoff中Max Delay约束的实战避坑指南 在数字芯片设计的后端实现流程中,异步时钟域(CDC)的时序收敛一直是个令人头疼的问题。不同于同步电路STA中清晰的setup/hold检查,CDC验证需要工程师对跨时钟域数据传输的本质有深刻理解。本文将聚焦一…...

.NET集成ChatGPT:rodion-m开源库生产级应用指南

1. 项目概述与核心价值如果你正在用 .NET 技术栈开发应用,并且想集成类似 ChatGPT 的对话能力,那么rodion-m/ChatGPT_API_dotnet这个开源库绝对值得你花时间研究。它不是一个简单的 API 封装器,而是一个为 .NET 开发者量身定制的、生产就绪的…...

技术面试监控系统:日志收集与性能分析终极指南

技术面试监控系统:日志收集与性能分析终极指南 【免费下载链接】interview Everything you need to prepare for your technical interview 项目地址: https://gitcode.com/gh_mirrors/int/interview GitHub 加速计划(int/interview)是…...

体验 Taotoken 官方价折扣与稳定直连带来的高性价比模型调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 体验 Taotoken 官方价折扣与稳定直连带来的高性价比模型调用 对于个人开发者和小型团队而言,在项目开发中集成大模型能…...

TranslucentTB实战避坑:深度解决Microsoft.UI.Xaml.2.8缺失问题终极指南

TranslucentTB实战避坑:深度解决Microsoft.UI.Xaml.2.8缺失问题终极指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 嘿&a…...

终极gh_mirrors/docume/documentation前端架构教程:设计模式与最佳实践

终极gh_mirrors/docume/documentation前端架构教程:设计模式与最佳实践 【免费下载链接】documentation Architectural methodology for frontend projects 项目地址: https://gitcode.com/gh_mirrors/docume/documentation gh_mirrors/docume/documentation…...

SDR设备怎么选?从30美元的RTL-SDR到700刀的USRP,我的踩坑心得与选购指南

SDR设备选购实战指南:从入门到专业的深度解析 去年夏天,我在阳台上架设天线试图接收气象卫星信号时,突然意识到一个残酷的事实——我那台30美元的RTL-SDR接收器在L波段的表现简直像台老式收音机。这次失败促使我开始了长达半年的SDR设备评测之…...

kill-doc终极教程:如何一键下载全网免费文档的完整指南

kill-doc终极教程:如何一键下载全网免费文档的完整指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了…...

MetaScreener:基于多模型集成的系统综述文献智能筛选工具

1. 项目概述:一个为系统综述“减负”的智能筛选工具 如果你做过系统综述或者范围综述,肯定对文献筛选这个环节又爱又恨。爱的是,这是研究的基石;恨的是,它耗时、枯燥、且容易出错。想象一下,从数据库里导出…...

打破平台壁垒:如何在Windows上免费运行iOS应用的终极指南

打破平台壁垒:如何在Windows上免费运行iOS应用的终极指南 【免费下载链接】ipasim iOS emulator for Windows 项目地址: https://gitcode.com/gh_mirrors/ip/ipasim 你是否曾梦想在Windows电脑上运行心仪的iOS应用?是否因为缺乏苹果设备而无法测试…...

如何快速成为全栈Web开发者:免费资源与游戏化学习的终极指南

如何快速成为全栈Web开发者:免费资源与游戏化学习的终极指南 【免费下载链接】Become-A-Full-Stack-Web-Developer Free resources for learning Full Stack Web Development 项目地址: https://gitcode.com/gh_mirrors/be/Become-A-Full-Stack-Web-Developer …...

Windows平台iOS模拟器开发实战:ipasim打破苹果硬件限制的完整指南

Windows平台iOS模拟器开发实战:ipasim打破苹果硬件限制的完整指南 【免费下载链接】ipasim iOS emulator for Windows 项目地址: https://gitcode.com/gh_mirrors/ip/ipasim 你是否曾因缺乏苹果设备而无法在Windows上测试iOS应用?ipasim开源项目为…...

GitHub site-policy最佳实践:如何为你的项目定制开源政策框架

GitHub site-policy最佳实践:如何为你的项目定制开源政策框架 【免费下载链接】site-policy Collaborative development on GitHubs site policies, procedures, and guidelines 项目地址: https://gitcode.com/gh_mirrors/si/site-policy GitHub site-polic…...

Adobe创意插件一键安装神器:告别繁琐安装流程的跨平台解决方案

Adobe创意插件一键安装神器:告别繁琐安装流程的跨平台解决方案 【免费下载链接】ZXPInstaller Open Source ZXP Installer for Adobe Extensions 项目地址: https://gitcode.com/gh_mirrors/zx/ZXPInstaller 还在为Adobe扩展安装而烦恼吗?每次下载…...

实时面试副驾驶:基于AI的隐形辅助工具设计与实战

1. 项目概述:实时面试副驾驶 最近在准备面试的朋友,或者经常需要参加线上会议、远程答辩的同学,有没有遇到过这样的场景:面试官抛出一个复杂的技术问题,你大脑瞬间一片空白,或者对方语速太快,你…...

ScalaCheck快速入门:如何在5分钟内编写你的第一个属性测试

ScalaCheck快速入门:如何在5分钟内编写你的第一个属性测试 【免费下载链接】scalacheck Property-based testing for Scala 项目地址: https://gitcode.com/gh_mirrors/sc/scalacheck ScalaCheck是一款强大的Scala属性测试工具,它通过自动生成测试…...

告别每次输密码!保姆级教程:在MobaXterm里配置SSH密钥实现一键登录Linux服务器

告别每次输密码!保姆级教程:在MobaXterm里配置SSH密钥实现一键登录Linux服务器 每次连接Linux服务器都要输入密码,不仅效率低下,还存在安全隐患。作为一款集成了多种实用功能的终端工具,MobaXterm提供了便捷的SSH密钥管…...

免费Windows实时语音转文字工具:TMSpeech离线字幕完整指南

免费Windows实时语音转文字工具:TMSpeech离线字幕完整指南 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 你是否曾在会议中走神错过重要信息?是否因听力障碍难以跟上语音对话?或…...

强力提升设计协作效率:Sketch MeaXure 智能标注工具完全指南

强力提升设计协作效率:Sketch MeaXure 智能标注工具完全指南 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 还在为设计稿标注而烦恼吗?你是否经常遇到设计到开发之间的沟通断层?Sket…...

RAG-Challenge-2多公司比较问答:查询路由与答案聚合技术

RAG-Challenge-2多公司比较问答:查询路由与答案聚合技术 【免费下载链接】RAG-Challenge-2 Implementation of my RAG system that won all categories in Enterprise RAG Challenge 2 项目地址: https://gitcode.com/gh_mirrors/ra/RAG-Challenge-2 RAG-Cha…...

PlantUML Editor终极指南:代码驱动UML设计的完整解决方案

PlantUML Editor终极指南:代码驱动UML设计的完整解决方案 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 你是否厌倦了用鼠标拖拽来绘制UML图?是否希望像写代码一样…...

终极指南:Switch大气层1.7.1稳定版完整安装与优化教程

终极指南:Switch大气层1.7.1稳定版完整安装与优化教程 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 想要解锁Nintendo Switch的全部潜能吗?大气层(Atm…...

利用 Taotoken 统一 API 简化多智能体系统的模型管理

利用 Taotoken 统一 API 简化多智能体系统的模型管理 在构建一个包含多种职能智能体的复杂系统时,一个常见的工程挑战是模型管理。不同的智能体可能根据其任务特性,需要调用不同的大语言模型。如果每个智能体都直接对接多个原厂 API,开发团队…...

Thorium浏览器:超越Chrome的开源性能怪兽,为何成为技术爱好者的新宠?

Thorium浏览器:超越Chrome的开源性能怪兽,为何成为技术爱好者的新宠? 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different rep…...

避坑指南:用51单片机驱动HC-SR04超声波模块,这5个细节没处理好,测距肯定不准!

51单片机驱动HC-SR04超声波模块的五大实战避坑指南 超声波测距在嵌入式开发中应用广泛,但很多开发者在使用51单片机驱动HC-SR04模块时,常常会遇到测距不准、数据跳变甚至完全无法工作的问题。本文将深入剖析五个最容易被忽视的关键细节,这些细…...

ReactiveViewModel 高级应用:跨平台开发与 UI 状态管理

ReactiveViewModel 高级应用:跨平台开发与 UI 状态管理 【免费下载链接】ReactiveViewModel Model-View-ViewModel, using ReactiveCocoa 项目地址: https://gitcode.com/gh_mirrors/re/ReactiveViewModel ReactiveViewModel 是一个基于 Model-View-ViewMode…...

如何利用ChatPaper自动识别研究论文核心章节:3步掌握AI论文结构分析功能

如何利用ChatPaper自动识别研究论文核心章节:3步掌握AI论文结构分析功能 【免费下载链接】ChatPaper Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结专业翻译润色审稿审稿回复 项目地址: https://gitcode.co…...

agent-skills中的JWT认证:无状态身份验证的实用技巧

agent-skills中的JWT认证:无状态身份验证的实用技巧 【免费下载链接】agent-skills Production-grade engineering skills for AI coding agents. 项目地址: https://gitcode.com/GitHub_Trending/agentskill/agent-skills agent-skills是一个专注于提供生产…...

3分钟解锁QQ音乐加密格式:让Mac用户的音乐重获自由播放权

3分钟解锁QQ音乐加密格式:让Mac用户的音乐重获自由播放权 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默…...