一、前言
首先吐槽下泰凌的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);
};
四、运行调试
五、log打印原理分析
首先看一下官网文档上的说明:
由此可见log的打印并不是占用硬件的uart,但是log打印会影响到系统的运行。所以如果使用建议使用1M速率,调试完成软件发布时要关闭。
实际测试使用PC5也是可以正常打印的。PC5并没有支持硬件TX