第5篇 zephyr 日志系统logging

目录

摘要

1 使能logging

2 头文件

3 定义模块名称

3.1 定义时指定输出等级

3.2 使用默认等级输出

4 输出LOG

4.1 LOG_DBG

4.2 LOG_INFO

4.3 LOG_WRN

4.4 LOG_ERR

5 printk

6 参考链接


本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840

摘要

    对于一个系统来说,调试信息非常重要。调试信息可以让我们了解当前程序的运行状态,可以将任何状态打印出来。一个优秀的日志系统非常重要。zephyr包含了一个非常强大的日志系统。输出日志时的执行时间对程序的逻辑会产生影响,导致不可预期的后果。而zephyr强大的logging系统,输出一行日志,因为缓冲区的存在,几乎不占用执行时间(只占用数据拷贝的时间),日志先缓存到缓冲区中,然后在系统空闲时,将缓冲区的数据输出到后端设备(如串口,网络,rtt等)。

1 使能logging

  通过menuconfig使能logging系统

2 头文件

#include <logging/log.h>

3 定义模块名称

3.1 定义时指定输出等级

 LOG_MODULE_REGISTER(foo,  LOG_LEVEL_ERR);

输出等级包括 0, LOG_LEVEL_ERR, LOG_LEVEL_WRN, LOG_LEVEL_INFO, LOG_LEVEL_DBG

3.2 使用默认等级输出

LOG_MODULE_REGISTER(foo);

默认等级在menuconfig中设置。

4 输出LOG

4.1 LOG_DBG

LOG_DBG("test");

当指定模块等级为LOG_LEVEL_DBG时有输出

4.2 LOG_INFO

LOG_INFO("test");

当指定模块等级为LOG_LEVEL_INFO, LOG_LEVEL_DBG时有输出

4.3 LOG_WRN

LOG_WRN("test");

当指定模块等级为LOG_LEVEL_WRN, LOG_LEVEL_INFO, LOG_LEVEL_DBG时有输出

4.4 LOG_ERR

LOG_ERR("test");

当指定模块等级为LOG_LEVEL_ERR, LOG_LEVEL_WRN, LOG_LEVEL_INFO, LOG_LEVEL_DBG时有输出

5 printk

熟悉Linux驱动开发的比较了解printk,zephyr中也可以使用printk。

printk函数定义在zephyr/lib/os/printk.c中

6 参考链接

https://docs.zephyrproject.org/latest/reference/logging/index.html#logging-in-a-module

发布了51 篇原创文章 · 获赞 55 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/huohongpeng/article/details/105640310