APP LOG模块应用笔记

1. APP LOG模块基本功能介绍

APP Log模块是GR5xx SDK提供用于辅助开发者进行开发和调试的工具模块,有以下几个实用特性:

  • 支持自定义硬件输出方式,SDK默认提供了UART输出与J-Link RTT输出两种方式,用户也可通过注册自己的硬件传输接口实现自定义的输出方式。

  • 支持日志存储与导出的实现,可以将日志存储到Flash中,并在需要的时候使用GRToolbox Android App通过Bluetooth LE将存储的日志导出分析。

  • 支持基于TAG和Level的日志过滤,支持针对不同Level的日志设置不同的输出格式。

  • 支持基于CSI的彩色日志输出。

2. APP LOG模块使用注意事项

APP LOG模块的详细使用说明请参考《GR5xx APP Log应用说明》。

  • printf()的正常工作同样依赖_app_log.c_,且在使用app_log_init()初始化APP LOG模块时传入的trans_func传输函数也会被用于printf()的打印。

  • 在_custom_config.h_中,APP_LOG_ENABLE的开或关并不会影响printf()的输出。但是要注意,在SDK自带的工程中,APP_LOG_ENABLE0的情况下整个APP LOG模块都不会初始化,进而导致printf()没有输出。

  • APP_LOG_STORE_ENABLE置为1后,通过printf()APP_LOG_xxx()输出的LOG都会被存储在Flash中,且此时由于printf()的特性,所有使用printf()输出的LOG,每一个字节都会被当做是一条记录,即每一个字节都会被打上时间戳,非常占用空间。所以在使能LOG存储的情况下,需要尽量避免用printf()打LOG。

  • LOG存储真正写入Flash并不发生在打LOG的时候。打LOG时只是将待写入的LOG放入环形缓冲区,实际涉及Flash的操作都发生在app_log_store_schedule()函数中,这是为了避免Flash操作耗时影响时序敏感的任务。详情请参考《GR5xx APP Log应用说明》“日志调度接口”章节。