Telink BLE MESH开发|ble mesh开发教程《二》telink_sig_mesh增加调试信息打印

一、前言

    首先吐槽下泰凌的SDK吧,写的很乱呀,一堆的宏定义,关键是文档资料和代码注释少的可怜,没有原厂支持确实很难读懂。第三方支持是有条件的,但是公司并不打算进行商务谈判,因此只能自己啃了。我觉得这也是国产芯片为什么大家不愿意用的一个原因吧。

二、增加log打印

在工程目录 ```app/app_config_8258.h```文件中,有如下与日志打印相关的宏定义:

#define HCI_LOG_FW_EN           1

#if HCI_LOG_FW_EN

#define DEBUG_INFO_TX_PIN     GPIO_PB1 

#endif

串口波特率

在工程目录下```mesh/myprintf.h```文件中,宏定义```BAUD_USE```决定了波特率,用户可将其改为其他值。

日志级别

在SDK目录下```proj_lib/sig_mesh/app_mesh.h```中,宏定义```TL_LOG_LEVEL```决定了日志级别,用户可修改这个宏定义过滤一些日志。

app_config_8258.h

#define HCI_LOG_FW_EN   1
#if HCI_LOG_FW_EN
	#if (MESH_USER_DEFINE_MODE == MESH_IRONMAN_MENLO_ENABLE)
#define DEBUG_INFO_TX_PIN           		(PCBA_8258_SEL == PCBA_8258_C1T140A3_V1_1 ? GPIO_PB6 : GPIO_PD7)
	#else
#define DEBUG_INFO_TX_PIN           		GPIO_PB1
	#endif
#define PRINT_DEBUG_INFO                    1
#endif

myprintf.h

#define SIMU_BAUD_115200    115200
#define SIMU_BAUD_230400    230400
#define SIMU_BAUD_1M        1000000

#define BAUD_USE    SIMU_BAUD_115200

app_mesh.h

#define LOG_FW_FUNC_EN      1 // (__LIB_EN__ || HCI_LOG_FW_EN) // if use __LIB_EN__, it will be different between src and release version.

#if (LOG_FW_FUNC_EN && HCI_LOG_FW_EN && (TL_LOG_LEVEL >= TL_LOG_LEVEL_USER))
#define LOG_USER_MSG_INFO(pbuf,len,format,...)  tl_log_msg(LOG_GET_LEVEL_MODULE(TL_LOG_LEVEL_USER,TL_LOG_USER),pbuf,len,format,__VA_ARGS__)
#else
#define LOG_USER_MSG_INFO(pbuf,len,format,...)
#endif

三、打印调用

LOG_USER_MSG_INFO(0, 0,"[mesh] Start Mesh Wf:%d,Lt:%d,Rt:%d,St:%d", mesh_sleep_time.appWakeup_flg,mesh_sleep_time.last_tick,mesh_sleep_time.run_time_us,mesh_sleep_time.sleep_time_us);
};

四、运行调试

Telink BLE MESH开发|ble mesh开发教程《二》telink_sig_mesh增加调试信息打印_第1张图片

五、log打印原理分析

 首先看一下官网文档上的说明:

Telink BLE MESH开发|ble mesh开发教程《二》telink_sig_mesh增加调试信息打印_第2张图片

由此可见log的打印并不是占用硬件的uart,但是log打印会影响到系统的运行。所以如果使用建议使用1M速率,调试完成软件发布时要关闭。

实际测试使用PC5也是可以正常打印的。PC5并没有支持硬件TX

你可能感兴趣的:(BLE)