看RTT的debug

/* DEBUG level */
#define DBG_ERROR           0
#define DBG_WARNING         1
#define DBG_INFO            2
#define DBG_LOG             3



头部的定义:
#define DBG_ENABLE
#define DBG_SECTION_NAME "onenet.sample"
#define DBG_LEVEL DBG_LOG
#define DBG_COLOR

首先看1号4号马上就是转化;
/* the debug log will force enable when RT_DEBUG macro is defined */
#if defined(RT_DEBUG) && !defined(DBG_ENABLE)
#define DBG_ENABLE
#endif

/* it will force output color log when RT_DEBUG_COLOR macro is defined */
#if defined(RT_DEBUG_COLOR) && !defined(DBG_COLOR)
#define DBG_COLOR
#endif

也就是支持打印-支持颜色
看颜色的
#ifdef DBG_COLOR
#define _DBG_COLOR(n)        rt_kprintf("\033["#n"m")        //-----出口1
#define _DBG_LOG_HDR(lvl_name, color_n)                    \ 
    rt_kprintf("\033["#color_n"m["lvl_name"/"DBG_SECTION_NAME"] ") //----出口2
#define _DBG_LOG_X_END                                     \
    rt_kprintf("\033[0m\n")
#else
#define _DBG_COLOR(n)
#define _DBG_LOG_HDR(lvl_name, color_n)                    \
    rt_kprintf("["lvl_name"/"DBG_SECTION_NAME"] ")
#define _DBG_LOG_X_END                                     \
    rt_kprintf("\n")
#endif /* DBG_COLOR */

上面只有2个出口 看下面 你就明白了吧!打印颜色 在那个模块
#define dbg_log(level, fmt, ...)                            \
    if ((level) <= DBG_LEVEL)                               \
    {                                                       \
        switch(level)                                       \
        {                                                   \
            case DBG_ERROR:   _DBG_LOG_HDR("E", 31); break; \
            case DBG_WARNING: _DBG_LOG_HDR("W", 33); break; \
            case DBG_INFO:    _DBG_LOG_HDR("I", 32); break; \
            case DBG_LOG:     _DBG_LOG_HDR("D", 0); break;  \
            default: break;                                 \
        }                                                   \
        rt_kprintf(fmt, ##__VA_ARGS__);                     \
        _DBG_COLOR(0);                                      \
    }


随便看一个代码:LOG_I("Scoket created successfully, socket_id:%d\n", socket_id);
#define LOG_I(fmt, ...)      dbg_log_line("I", 32, fmt, ##__VA_ARGS__)

#define dbg_log_line(lvl, color_n, fmt, ...)                \
    do                                                      \
    {                                                       \
        _DBG_LOG_HDR(lvl, color_n);                         \
        rt_kprintf(fmt, ##__VA_ARGS__);                     \
        _DBG_LOG_X_END;                                     \
    }                                                       \
    while (0)
	
	也就是你可以用2种方式去debug
	LOG_I("Scoket created successfully, socket_id:%d\n", socket_id);
	或者dbg_log(DBG_ERROR, "Scoket created successfully, socket_id:%d\n", socket_id) 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DAPLink RTT(Real-time Trace)是基于DAPLink固件的一种调试技术。DAPLink是一种通用的调试和烧录解决方案,可以用于多种不同的微控制器芯片和开发板。RTT技术是DAPLink固件的一部分,可以提供实时跟踪和调试功能。 RTT技术基于SWO(Serial Wire Output)接口实现。SWO是一种用于调试的串行输出接口,可以在系统运行时从微控制器上输出调试信息,如变量值、程序计数器地址等。RTT技术利用SWO接口将调试信息传输到开发工具,如Keil MDK或IAR Embedded Workbench等,以实现实时跟踪和调试。 使用DAPLink RTT技术可以实现以下功能: 1. 实时跟踪:开发者可以在系统运行时实时监视变量的值、栈使用情况、程序执行流程等,以帮助分析代码运行情况,并进行错误诊断和修复。 2. 实时调试:开发者可以在系统运行时进行实时的单步调试,观察程序的执行过程,并通过断点、观察点等功能对程序进行调试和优化。 使用DAPLink RTT技术的优势包括: 1. 低成本:DAPLink RTT技术不需要额外的硬件支持,只需要在使用DAPLink固件的开发板上连接SWO接口即可实现。 2. 高效和实时:DAPLink RTT技术能够提供实时的跟踪和调试功能,帮助开发者快速定位和解决问题。 总之,DAPLink RTT是一种基于DAPLink固件的调试技术,通过SWO接口实现实时跟踪和调试功能。它能够帮助开发者在系统运行时快速定位和解决问题,提高开发效率。 ### 回答2: DAPLink是一种用于嵌入式系统调试和编程的开源固件,RTT是它的一种实现方式之一。 RTT的全称是Real-Time Transfer,它是一种通过SWD(Serial Wire Debug)接口进行实时数据交换的方法。在嵌入式系统中,开发人员可以通过RTT向目标设备中的特定通道发送数据,同时也可以从设备中读取特定通道的数据。 使用DAPLink RTT进行调试可以带来一些优势。首先,它能够提供实时的调试输出,这对于调试复杂的嵌入式系统非常有帮助。其次,由于RTT使用SWD接口进行数据交换,因此可以避免占用其他UART等串口资源。 在使用DAPLink RTT进行调试时,首先需要在目标设备上加载RTT的相关代码,以便与开发工具进行通信。然后,开发人员可以使用合适的调试工具(如Keil、IAR等)与目标设备连接,并通过RTT通道发送和接收数据。 总之,DAPLink RTT是一种用于嵌入式系统调试和编程的实用工具,它通过SWD接口实现实时数据交换,能够提供实时的调试输出。通过使用DAPLink RTT,开发人员可以更方便地进行嵌入式系统的调试工作。 ### 回答3: Daplink是一种常用的ARM Cortex-M微控制器的开发板连接器。它提供了一种简单且可靠的方式,将开发板与计算机之间进行连接,以便进行程序烧录和调试等开发工作。 而RTT(Real-Time Transfer)则是一种实时传输技术,用于实时传输实时操作系统(RTOS)中的日志和调试信息。RTT通过使用微控制器内部的SRAM空间作为缓冲区,将日志数据定期传输到开发板的USB接口,然后通过USB连接器传输到计算机,从而实现实时数据的传输和记录。 使用Daplink RTT可以在开发过程中实时监视和记录微控制器的运行状态和调试信息。对于嵌入式系统开发者来说,这是一个非常强大和方便的工具,能够帮助他们快速定位和解决问题。 同时,Daplink RTT还提供了数据交互的能力,可以通过RTT通道交换数据,在开发过程中进行软件调试和优化。这种实时、双向的数据传输对于开发高性能、实时响应的嵌入式系统非常有帮助。 总而言之,Daplink RTT提供了一种便捷和高效的开发工具,可以帮助嵌入式系统开发者进行实时数据传输、日志记录和调试工作。它不仅简化了开发过程,还提高了开发效率,使得嵌入式系统的开发更加快捷和可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值