0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

3個開源庫讓單片機開發(fā)更簡單

TopSemic嵌入式 ? 來源:TopSemic嵌入式 ? 作者:TopSemic嵌入式 ? 2022-04-26 09:36 ? 次閱讀

大家好,我是小麥,日志系統(tǒng)在系統(tǒng)開發(fā)和調(diào)整過程中的重要性,

大家應(yīng)該都清楚,特別是項目出問題之后,卻沒有日志可以幫忙定位問題,就非常令人痛苦。

因為我們不可能一直通過調(diào)試器去單步調(diào)試程序,所以設(shè)備的運行日志顯得尤為重要。

通常我們對日志有這些要求:

  • 不同的日志級別(Debug,Warning, Info, Error, Fatal);
  • 日志打印要和printf一樣簡單易用;
  • 能夠設(shè)置日志級別;
  • 占用空間??;
  • 可配置,甚至可以禁用日志;
  • 基于不同日志級別,支持顏色高亮;
  • 可以自定義配置,時間戳;
  • 支持RTOS

以上是比較基本的功能,但是在嵌入式設(shè)備中,有的時候我們希望可以保存設(shè)備的運行日志,我們需要以下的一些功能;

  • 支持多種訪問方式,比如串口終端,保存到嵌入式文件系統(tǒng)中;
  • 支持shell命令行通過串口終端進行訪問;

以上這些需求不一定會全部實現(xiàn)。

除了常用的log4c,log4cpp,下面給大家推薦3個非常不錯的開源日志庫,比較適合用在單片機的項目中。從開始的輕量,到后面的功能豐富,最后一個很強大,所以請耐心看到最后。

rxi_log

項目地址:https://github.com/rxi/log.c

基于 C99 實現(xiàn)的簡單日志庫,具體輸出如下所示;

a7922fac-c4f5-11ec-bce3-dac502259ad0.pngimage-20211204142024466

具體用法

將源碼中的log.clog.h集成到你的項目中即可,需要打印日志的話,調(diào)用下面的API即可,如下所示;

log_trace(constchar*fmt,...);
log_debug(constchar*fmt,...);
log_info(constchar*fmt,...);
log_warn(constchar*fmt,...);
log_error(constchar*fmt,...);
log_fatal(constchar*fmt,...);

除了這些API,還有log_set_quiet,log_set_lockLOG_USE_COLOR等等,詳情請看原項目。

ulog

項目地址:https://github.com/rdpoor/ulog

uLog 為嵌入式微控制器或任何資源有限的系統(tǒng)提供結(jié)構(gòu)化的日志記錄機制。它繼承了流行的 Log4cLog4j 平臺背后的一些概念,但開銷更低。

uLog 的一些特點:

  • uLog 易于集成到幾乎任何環(huán)境中,由一個頭文件和一個源文件組成,并且是用純 C 編寫的。
  • uLog 提供熟悉的嚴重級別(CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE)。
  • uLog 支持多個用戶定義的輸出(控制臺、日志文件、內(nèi)存緩沖區(qū)等),每個輸出都有自己的報告閾值級別。
  • uLog 是具有最小依賴性的“積極獨立”,僅需要 stdio.h、string.h 和 stdarg.h。
  • 當(dāng)您不使用 uLog 時,它不會妨礙您:如果 ULOG_ENABLED 在編譯時未定義,則不會生成日志記錄代碼。
  • uLog 已經(jīng)過很好的測試。有關(guān)詳細信息,請參閱隨附的 ulog_test.c 文件。
a7ac75d8-c4f5-11ec-bce3-dac502259ad0.pngcolor coding

EasyLogger

項目地址:https://github.com/armink/EasyLogger

a7c67dd4-c4f5-11ec-bce3-dac502259ad0.pngTextColor

這個項目我用了很長時間,強烈推薦,是RT-Thread大佬的作品,已經(jīng)集成到RTOS的內(nèi)部了,支持的功能非常豐富,基本滿足各種開發(fā)的需求。

特點如下:

  • 輕量,ROM<1.6K, RAM<0.3K;
  • 支持多種訪問模式(例如:終端、文件、數(shù)據(jù)庫、串口、485、Flash...);
  • 日志內(nèi)容可包含級別、時間戳、線程信息、進程信息等;
  • 線程安全,并支持 異步輸出緩沖輸出 模式;
  • 支持多種操作系統(tǒng)(RT-Thread、UCOS、Linux、Windows...),也支持裸機平臺
  • 日志支持 RAW格式 ,支持 hexdump ;
  • 支持按 標簽 、 級別關(guān)鍵詞 進行動態(tài)過濾;
  • 各級別日志支持不同顏色顯示;
  • 擴展性強,支持以插件形式擴展新功能。

以上只是這個項目的其中一部分,具體可以參考項目地址。

summary

希望大家在平常的開發(fā)中,重視日志的使用,每一個開發(fā)階段設(shè)置不同級別的日志,不同的模塊也分別設(shè)置模塊的日志,這樣方便定位出現(xiàn)一些問題,快速解決,提高效率。本期的文章就到這里,我們下期再見。

—— The End—

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5060

    文章

    18980

    瀏覽量

    302251
  • 日志系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    6994
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3229

    瀏覽量

    42343

原文標題:高手常用的3個開源庫,讓單片機開發(fā)事半功倍

文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機怎么寫入程序

    單片機(Microcontroller Unit,MCU)是一種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等功能集成在一芯片上。單片機廣泛應(yīng)用于嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備中。編寫
    的頭像 發(fā)表于 10-21 11:21 ?224次閱讀

    單片機芯片開發(fā)-單片機方案開發(fā)的關(guān)鍵技巧和流程步驟!

    在電子產(chǎn)品設(shè)計中,單片機(MCU)無疑是最重要的組成部分之一。無論是消費電子、智能家居、工業(yè)控制,還是可穿戴設(shè)備,小家電等,單片機的應(yīng)用無處不在。然而,對于許多開發(fā)者來說,單片機芯片
    發(fā)表于 09-26 17:04

    MCU前沿市場趨勢:8位單片機和32位單片機

    的CPU性能時,單片機開發(fā)工程師應(yīng)考慮所有用例?,F(xiàn)實情況是,許多單片機開發(fā)人員對計算的要求不高。通常,只需要很少的數(shù)據(jù)處理,因此平衡這些需求與功耗和外圍接口的需求就變得至關(guān)重要。 例
    發(fā)表于 09-24 17:47

    keil可以讀出單片機的程序嗎

    Keil是一款廣泛應(yīng)用于單片機程序開發(fā)的軟件,它提供了包括C編譯器、宏匯編、連接器、管理和一功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案。然
    的頭像 發(fā)表于 09-02 10:32 ?615次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序是單片機開發(fā)過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機內(nèi)部的存儲器中,使單片機能夠按照預(yù)定的邏
    的頭像 發(fā)表于 09-02 09:47 ?713次閱讀

    stm32單片機的優(yōu)勢有哪些?

    ,STM32單片機還提供豐富的 外設(shè)和接口,如通信接口、模擬數(shù)字轉(zhuǎn)換器(ADC)、定時器和PWM控制 等,方便開發(fā)人員在設(shè)計中靈活應(yīng)用。 3.開發(fā)者友好的生態(tài)系統(tǒng): STMicroe
    發(fā)表于 07-29 09:29

    暑假如何學(xué)習(xí)單片機

    暑假是學(xué)習(xí)和掌握單片機基礎(chǔ)知識的良好時機。以下是一關(guān)于如何在暑假期間學(xué)習(xí)單片機的建議計劃
    的頭像 發(fā)表于 07-03 09:19 ?467次閱讀
    一<b class='flag-5'>個</b>暑假如何學(xué)習(xí)<b class='flag-5'>單片機</b>

    PY32系列單片機開發(fā)板 常用型號都有 支持Keil,IAR進行開發(fā)

    普冉單片機是近幾年很火的國產(chǎn)32位單片機,主打高性能和高性價比,市場份額也是在持續(xù)上升。同等價位下難逢敵手,有著系統(tǒng)簡單、易于開發(fā)的特點。PY32系列
    的頭像 發(fā)表于 05-22 14:48 ?871次閱讀
    PY32系列<b class='flag-5'>單片機</b><b class='flag-5'>開發(fā)</b>板 常用型號都有 支持Keil,IAR進行<b class='flag-5'>開發(fā)</b>

    應(yīng)用單片機開發(fā)的ST LINK調(diào)試器設(shè)計制作

    在調(diào)試ST單片機的過程中,ST-LINK是一很好使用的調(diào)試工具。今天,我們就根據(jù)網(wǎng)絡(luò)上的設(shè)計方案進行簡化,設(shè)計制作一ST LINK調(diào)試器,用于之后的單片機
    發(fā)表于 03-06 10:26 ?995次閱讀
    應(yīng)用<b class='flag-5'>單片機</b><b class='flag-5'>開發(fā)</b>的ST LINK調(diào)試器設(shè)計制作

    51單片機開發(fā)板的主要功能 51單片機開發(fā)板能做什么

    51單片機開發(fā)板是一種基于8051系列單片機芯片的開發(fā)板,具有豐富的功能和廣泛的應(yīng)用。下面將詳細介紹51單片機
    的頭像 發(fā)表于 01-23 15:52 ?3329次閱讀

    8051單片機和STM32單片機的編程環(huán)境對比

    比較流行的單片機環(huán)境有keil和IAR,這兩種環(huán)境可以覆蓋市面上90%的單片機型號,而且都提供了函數(shù)。根據(jù)單片機位數(shù)不同,這兩編程環(huán)境也
    發(fā)表于 12-25 10:01 ?1312次閱讀
    8051<b class='flag-5'>單片機</b>和STM32<b class='flag-5'>單片機</b>的編程環(huán)境對比

    STM32單片機實現(xiàn)固件在線升級(IAP)

    1,固件升級方案綜述單片機的固件升級方式有很多種。1、ICP:簡單說就是在單片機開發(fā)時使用燒錄器升級程序,比如使用J-Link燒錄單片機程序
    的頭像 發(fā)表于 12-16 08:00 ?4829次閱讀
    STM32<b class='flag-5'>單片機</b>實現(xiàn)固件在線升級(IAP)

    你用過哪些編程語言開發(fā)單片機

    C語言是最常用的一種用于單片機開發(fā)語言,也是一種高級編程語言,具有較好的可移植性和可讀性。對于單片機,通常使用嵌入式C來進行開發(fā)。 舉例:用C語言寫一段STM32
    發(fā)表于 12-04 10:18 ?1228次閱讀

    stm32和51單片機的區(qū)別

    開發(fā)環(huán)境比51單片機更加成熟和完善,具有更多的工具和。同時,STM32單片機的資料和文檔也更加豐富。 總結(jié) 總體來說,STM32單片機
    發(fā)表于 11-20 13:18

    單片機實現(xiàn)簡單的LCD設(shè)計

    電子發(fā)燒友網(wǎng)站提供《單片機實現(xiàn)簡單的LCD設(shè)計.pdf》資料免費下載
    發(fā)表于 11-17 09:29 ?0次下載
    <b class='flag-5'>單片機</b>實現(xiàn)<b class='flag-5'>更</b><b class='flag-5'>簡單</b>的LCD設(shè)計