RT-Thread Debug分析与调整方案

rt-thread 中可以通过 menuconfig 使能相关宏,配置和使用 debug 功能,即可向工作台输出程序运行信息,方便调试和使用。
但目前的 rt-thread(5.0.0) 关于 debug 存在 rtdebug.h 和 rtdbg.h 这两个文件;存在冗余,并且 rtdbg.h 中实现的 log_e , log_w , log_i , log_d 更优,因此考虑将 rtdebug.h 中的 rt_debug_log 废弃,全部替换为 log_x
问题分析
rtdebug.h 中的 rt_debug_log 具体实现如下:
#define rt_debug_log(type, message)
do
{
if (type)
rt_kprintf message;
}
while (0)
调用示例如下:
rt_debug_log(rt_debug_thread, (startup a thread:%s with priority:%dn,
thread->parent.name, thread->current_priority));
/* rt_debug_thread default is 0 */
可以看出, rt_debug_log 可以通过相关宏,实现对特定内核对象的单独使能调试。
但 rtdbg.h 中的 log_x 是将调试信息分为不同的等级,通过与设定的 dbg_lvl 进行比较,输出不同等级的调试信息。
可以看出 log_x 主要针对的是不同等级, rt_debug_log 针对的是不同对象。那接下来要考虑的重点就是:废弃 rtdebug.h 中 rt_debug_log 的同时,如何使用 log_x 保留单独调试不同内核对象的特性。
解决方案
使用以下解决方案:
#define dbg_tag kernel.thread
#ifdef rt_debug_thread
#define dbg_lvl dbg_log
#else
#define dbg_lvl dbg_warning
#endif
#include
以内核对象 thread 为例,将以上代码添加到对应的 thread.c 文件中,即可使用对应的 log_x,可以注意到,宏判断使用的是 #ifdef rt_debug_thread 而不再是通过判断对应宏值为 0 还是 1,这是因为 rtdebug.h 老版本问题,现在可以通过 kconfig 非常便捷的定义相关宏,因此修改了相应的 kconifg 文件:
/* old version */config rt_debug_thread_config bool enable debugging of thread state changes default nconfig rt_debug_thread int default 1 if rt_debug_thread_config/* old version */==============================================================================
/* new version /
config rt_debug_thread
bool enable debugging of thread state changes
default n
/ new version */
可以看出,修改后更加的简洁明了。
并且之前使用 rt_debug_log 的内核对象的调试信息基本都为 log_d 级别,于是就可以使用 log_d 进行替换。
需要注意,使用 log_x 替换 rt_debug_log 时,要删去换行符,因为 log_x 已经带有换行的效果。
于是我们就通过定义相关的宏,更改了对应内核对象的调试等级,使用 log_x 实现了单独调试不同内核对象的效果。

TSMaster应用笔记2:如何使用XCP模块进行标定
米尔科技KEIL C251开发工具比较
如何利用AI降低电子系统设计的复杂性呢?
这款大众的内饰媲美奥迪A6,但价格与凯美瑞不相伯仲
智能边缘的RTOS容器
RT-Thread Debug分析与调整方案
美制裁77个实体 大疆因“安全”问题屡屡中招
RS-485与RS-232电路的区别与优势
Ubuntu开发国产单片机:Software软件商城安装提速
高性能连接器在医疗设备中扮演着重要角色
集成电路芯片在哪些新兴应用领域有发展趋势?
中兴遭美禁止出售芯片,美方伤敌一千先內损八百
生活中有哪些人工智能
首尔和亿光互掐不休 首尔发起第三次专利诉讼
三星苹果都会游泳, 但是中国手机却都是旱鸭子!
何种ADC架构适合您的应用?
通过促进基质/催化剂相互作用实现氮中心自由基与氮化碳的光催化环化
英伟达除了在显卡领域影响深远,在人工智能地位无可撼动
正弦交流电应用
虹科动态 | 虹科诚邀您参加2021中国商用车自动驾驶大会