第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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章