• 络达开发---串口日志&日志过滤


    平台:AB1565M

    SDK版本:V2.11.0

    开发环境:windows10


    采用官方ATK中的日志工具可以通过硬件物理串口来实时查看芯片中软件的运行日志。如下图所示,其实该ATK工具为一若干个工具的集合,其中如图红线圈起来的即为实时查看日志的子工具。

    点击上面的LoggintTool后,会切换到如下图所示的日志操作界面。其实日志的监听采用的是Wireshark来实现的,下图的这个界面是用来对日志监听进行相关的配置。

    图中,Get LogFilter Info和SetLogFilter Info当工具连接到板子中运行的程序后,用来配置日志的过滤和使能,默认所有的日志都是打开的,即所有代码中内建的日志都会输出来。

    用GetLogFilter按钮来获取系统支持的日志模块,然后我们来关闭不希望看到的日志,并用按钮SetLogFilterInfo来关闭,这样在芯片中的程序便不会再输出来,即Wireshark中也不会再显示这些被关闭的日志。

    SDK中,默认是从UART0口输出日志的,板子上有物理UART0接口,并且默认的波特率是3Mbps,而普通 的USB转串口设备是支持不了这么高的波特率的,这样的话就会导致日志出来有丢失和错误。因此,如果手上没有支持这么高波特率的设备的话,可以通过降低SDK中的波特率来实现。

    波特率的修改位置是:

    bta_sdk\mcu\project\ab1565_ab1568_evk\apps\headset_ghp\inc\boards\ab1565_evk\serial_port_assignment.h

    修改为下图的方式,即可把波特率由原来默认的3Mbps改为921600bps;下段代码,把3000000的波特率采取 了注释的方式来禁止3Mbps;

    1. /*This port only for system initial period syslog output port, And USB Port cannot assign to it.
    2. * Because USB not work in this period.
    3. *
    4. * ####MUST BE UART PORT####*/
    5. #define     CONFIG_SYSLOG_INIT_STAGE_PORT       HAL_UART_0
    6. /* This port is for task running period syslog output port. This Port can be USB or UART types
    7. * If your want use USB port, must be define  MTK_USB_ENABLED  in file( such as:
    8. * ./GCC/feature_ab1552_evb.mk).*/
    9. #ifdef MTK_PORT_SERVICE_ENABLE
    10. #define     CONFIG_SYSLOG_RUNNING_STAGE_PORT    SERIAL_PORT_DEV_UART_0 //SERIAL_PORT_DEV_USB_COM1
    11. #else
    12. #define     CONFIG_SYSLOG_RUNNING_STAGE_PORT    HAL_UART_0
    13. #endif
    14. //#ifdef HAL_UART_FEATURE_3M_BAUDRATE
    15. //#define     CONFIG_SYSLOG_BAUDRATE      HAL_UART_BAUDRATE_3000000
    16. //#else
    17. #define     CONFIG_SYSLOG_BAUDRATE      HAL_UART_BAUDRATE_921600
    18. //#endif

    同时,从下面的两行代码也可以知道,日志的输出接口采用的是UART_0;

    #define     CONFIG_SYSLOG_INIT_STAGE_PORT       HAL_UART_0

    #define     CONFIG_SYSLOG_RUNNING_STAGE_PORT    SERIAL_PORT_DEV_UART_0 

    在查看日志的时候,需要把ATK中默认的3Mbps也改为921600,否则在连接后是无法获取 日志过滤的配置,会提示如下图所示的错误,这个错误提示,有三种可能 :

    1. 配置的串口波特率和SDK中的不一至;
    2. 波特率配置一至,但USB转串口支持不到这么高的波特率;
    3. 日志所加载的debug文件和芯片中下载的固件不是同一个编译生成的文件;

     连接的波特率设置如下图所示,并且设置好并且连接到设备(设备需要开机),就会得到Log Module Filter表中所示的内容,可以在这里来打开和关闭不需要的日志输出,这样在wareshark中就不会再显示那些被关闭的日志了。

    如下图所示,为笔者添加的ble服务的专用的日志:

    log_create_module(GHP, PRINT_LEVEL_INFO);

    在下图中的Off/On即可以用来打开或关闭日志的输出,后面的Info/Debug等用来设置日志输出的级别,因为同一个日志模块(如GHP)可以支持不同级别的日志输出。

    log_create_module(GHP, PRINT_LEVEL_INFO);

  • 相关阅读:
    Java的ArrayList集合存储基本数据
    Bugku,Web:都过滤了
    动态树的最值
    信创需求激增,国产服务器操作系统赋能数字化转型
    Python性能优化指南--让你的Python代码快x3倍的秘诀
    Java通过JNI技术调用C++动态链接库的helloword测试
    利用java语言将csv格式数据导入mysql数据库
    花菁荧光染料Cy3/Cy5/Cy7标记COX-2环氧合酶,Cy3/Cy5/Cy7-Cyclooxygenase-2
    反编译小程序详细教程,处理各种异常报错
    react面试题
  • 原文地址:https://blog.csdn.net/cczy_/article/details/126062955