ML302 OpenCPU系列(5)---Log工具的使用
- 一、使用串口助手抓取Log
- 二、使用Coolwatcher抓取AP Log
- 三、查看死机现场
“工欲善其事,必先利其器”。Log是嵌入式开发中最重要的调试手段,我们就来看看如何使用工具抓取ML302 OpenCPU Log。
一、使用串口助手抓取Log
编译并下载固件,模组开机后将打印大量的信息,在ML302 OpenCPU Demo中这些信息是使用cm_printf()函数打印的。该函数在cm_uart_demo.c中定义,使用主串口来打印调试信息。如项目中需要用到主串口,我们可将其改到其它串口。ML302共有5路串口,其中3路串口在OpenCPU中可当普通串口使用。
typedef enum{
CM_UART_0,
CM_UART_1,
CM_UART_2,
}cm_uart_id_t;
其它两路串口是UIS8910DM Debug串口,不可当普通串口使用。
AP Log UART:引脚4:RXD;引脚5:TXD
CP Log UART:引脚99:TXD
二、使用Coolwatcher抓取AP Log
使用cm_sys_log()函数打印的Log属于AP Log,需要使用Coolwather来抓取。
1、假设我们在cm_main_task()中加入如下Log信息。编译并下载固件。
while(1)
{
cm_sys_log("This is my first ML302 OpenCPU Demo\n");
cm_printf("\nplease input cmds:\n");
osSignalWait(0x0004, osWaitForever);
2、通过USB AT口,发送AT^TRACECTRL=0,1,2,打开USB AP Log功能,重启后生效。
3、打开Coolwatcher工具,Coolwatcher需放在非中文路径下。
注意:
A、如采用Debug UART(Pin:4~5)抓AP Log,发AT^TRACECTRL=0,1,1,打开UART AP Log功能。剩余操作方式与上面相同,不再赘述。
B、USB抓取AP Log的缺点:由于USB启动较慢,通过USB抓AP Log会丢失模组刚启动时的部分Log信息,更推荐采用Debug UART来抓取AP Log。
三、查看死机现场
当打开看门狗,模组死机后会自动重启。建议量产软件将看门狗打开,调试阶段关闭看门狗,出现死机,方便查看死机现场。看门狗打开关闭的方式如下:
int cm_wdt_config_cb(void)
{
return 0;
}
1、我们添加如下代码,故意制造死机现场。
cm_cmd_t cmd_vector[] = {
{"WATCHDOG" , cm_test_watchdog },
}
void cm_test_watchdog(unsigned char **cmd,int len)
{
char *p = NULL;
*p = 123;
}
2、打开Coolwatcher,使用Debug UART抓取AP Log,通过串口助手发送:CM:WATCHDOG,模组死机。
3、打开tools->GDB Launcher,按下图进行设置。
4、点击launch后将定位到造成死机处,如下:
注意:GDB Launcher工具会出现无法准确定位造成死机却确位置的情况,建议在使用时注意以下几点:
A、使用Debug UART抓AP Log,不可使用USB。
B、Debug UART与电脑之间的TTL to USB连线越短越好,最好不要经过USB HUB,且要求921600波特率下工作稳定。
C、碰见死机问题,暂时删除非必要代码,构建最小代码,采取排查法,配合GDB Launcher工具定位死机位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)