0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

3个开源库让单片机开发更简单

TopSemic嵌入式 来源:TopSemic嵌入式 作者:TopSemic嵌入式 2022-04-26 09:36 次阅读

大家好,我是小麦,日志系统在系统开发和调整过程中的重要性,

大家应该都清楚,特别是项目出问题之后,却没有日志可以帮忙定位问题,就非常令人痛苦。

因为我们不可能一直通过调试器去单步调试程序,所以设备的运行日志显得尤为重要。

通常我们对日志有这些要求:

  • 不同的日志级别(Debug,Warning, Info, Error, Fatal);
  • 日志打印要和printf一样简单易用;
  • 能够设置日志级别;
  • 占用空间小;
  • 可配置,甚至可以禁用日志;
  • 基于不同日志级别,支持颜色高亮;
  • 可以自定义配置,时间戳;
  • 支持RTOS

以上是比较基本的功能,但是在嵌入式设备中,有的时候我们希望可以保存设备的运行日志,我们需要以下的一些功能;

  • 支持多种访问方式,比如串口终端,保存到嵌入式文件系统中;
  • 支持shell命令行通过串口终端进行访问;

以上这些需求不一定会全部实现。

除了常用的log4clog4cpp,下面给大家推荐3个非常不错的开源日志库,比较适合用在单片机的项目中。从开始的轻量,到后面的功能丰富,最后一个很强大,所以请耐心看到最后。

rxi_log

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

基于 C99 实现的简单日志库,具体输出如下所示;

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

具体用法

将源码中的log.clog.h集成到你的项目中即可,需要打印日志的话,调用下面的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_quietlog_set_lockLOG_USE_COLOR等等,详情请看原项目。

ulog

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

uLog 为嵌入式微控制器或任何资源有限的系统提供结构化的日志记录机制。它继承了流行的 Log4cLog4j 平台背后的一些概念,但开销更低。

uLog 的一些特点:

  • uLog 易于集成到几乎任何环境中,由一个头文件和一个源文件组成,并且是用纯 C 编写的。
  • uLog 提供熟悉的严重级别(CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE)。
  • uLog 支持多个用户定义的输出(控制台、日志文件、内存缓冲区等),每个输出都有自己的报告阈值级别。
  • uLog 是具有最小依赖性的“积极独立”,仅需要 stdio.h、string.h 和 stdarg.h。
  • 当您不使用 uLog 时,它不会妨碍您:如果 ULOG_ENABLED 在编译时未定义,则不会生成日志记录代码。
  • uLog 已经过很好的测试。有关详细信息,请参阅随附的 ulog_test.c 文件。
a7ac75d8-c4f5-11ec-bce3-dac502259ad0.pngcolor coding

EasyLogger

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

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

这个项目我用了很长时间,强烈推荐,是RT-Thread大佬的作品,已经集成到RTOS的内部了,支持的功能非常丰富,基本满足各种开发的需求。

特点如下:

  • 轻量,ROM<1.6K, RAM<0.3K
  • 支持多种访问模式(例如:终端、文件、数据库、串口、485、Flash...);
  • 日志内容可包含级别、时间戳、线程信息、进程信息等;
  • 线程安全,并支持 异步输出缓冲输出 模式;
  • 支持多种操作系统(RT-Thread、UCOSLinux、Windows...),也支持裸机平台
  • 日志支持 RAW格式 ,支持 hexdump
  • 支持按 标签级别关键词 进行动态过滤;
  • 各级别日志支持不同颜色显示;
  • 扩展性强,支持以插件形式扩展新功能。

以上只是这个项目的其中一部分,具体可以参考项目地址。

summary

希望大家在平常的开发中,重视日志的使用,每一个开发阶段设置不同级别的日志,不同的模块也分别设置模块的日志,这样方便定位出现一些问题,快速解决,提高效率。本期的文章就到这里,我们下期再见。

—— The End—

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19021

    浏览量

    303326
  • 日志系统
    +关注

    关注

    0

    文章

    7

    浏览量

    6997
  • 开源
    +关注

    关注

    3

    文章

    3254

    浏览量

    42408

原文标题:高手常用的3个开源库,让单片机开发事半功倍

文章出处:【微信号:TopSemic,微信公众号:TopSemic嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机怎么写入程序

    单片机(Microcontroller Unit,MCU)是一种集成电路芯片,它将计算机的CPU、存储器、输入/输出接口等功能集成在一芯片上。单片机广泛应用于嵌入式系统和物联网设备中。编写
    的头像 发表于 10-21 11:21 278次阅读

    想入行单片机开发的学生们的忠告

    对于想入行单片机开发的学生们,以下是一些建议和忠告:
    的头像 发表于 10-17 09:45 304次阅读
    想入行<b class='flag-5'>单片机</b><b class='flag-5'>开发</b>的学生们的忠告

    单片机芯片开发-单片机方案开发的关键技巧和流程步骤!

    在电子产品设计中,单片机(MCU)无疑是最重要的组成部分之一。无论是消费电子、智能家居、工业控制,还是可穿戴设备,小家电等,单片机的应用无处不在。然而,对于许多开发者来说,单片机芯片
    发表于 09-26 17:04

    MCU前沿市场趋势:8位单片机和32位单片机

    的CPU性能时,单片机开发工程师应考虑所有用例。现实情况是,许多单片机开发人员对计算的要求不高。通常,只需要很少的数据处理,因此平衡这些需求与功耗和外围接口的需求就变得至关重要。 例
    发表于 09-24 17:47

    keil可以读出单片机的程序吗

    Keil是一款广泛应用于单片机程序开发的软件,它提供了包括C编译器、宏汇编、连接器、管理和一功能强大的仿真调试器等在内的完整开发方案。然
    的头像 发表于 09-02 10:32 716次阅读

    单片机烧录程序的基本步骤是什么

    单片机烧录程序是单片机开发过程中非常重要的一步,它涉及到将编写好的程序代码通过一定的方式传输到单片机内部的存储器中,使单片机能够按照预定的逻
    的头像 发表于 09-02 09:47 801次阅读

    linux开发板和单片机开发的区别

    硬件架构 Linux开发板和单片机开发在硬件架构上有很大的区别。Linux开发板通常基于ARM、x86或其他处理器架构,具有较高的处理能力和内存容量。而
    的头像 发表于 08-30 15:30 634次阅读

    stm32单片机的优势有哪些?

    ,STM32单片机还提供丰富的 外设和接口,如通信接口、模拟数字转换器(ADC)、定时器和PWM控制 等,方便开发人员在设计中灵活应用。 3.开发者友好的生态系统: STMicroe
    发表于 07-29 09:29

    暑假如何学习单片机

    暑假是学习和掌握单片机基础知识的良好时机。以下是一关于如何在暑假期间学习单片机的建议计划
    的头像 发表于 07-03 09:19 480次阅读
    一<b class='flag-5'>个</b>暑假如何学习<b class='flag-5'>单片机</b>

    PY32系列单片机开发板 常用型号都有 支持Keil,IAR进行开发

    普冉单片机是近几年很火的国产32位单片机,主打高性能和高性价比,市场份额也是在持续上升。同等价位下难逢敌手,有着系统简单、易于开发的特点。PY32系列
    的头像 发表于 05-22 14:48 919次阅读
    PY32系列<b class='flag-5'>单片机</b><b class='flag-5'>开发</b>板 常用型号都有 支持Keil,IAR进行<b class='flag-5'>开发</b>

    应用单片机开发的ST LINK调试器设计制作

    在调试ST单片机的过程中,ST-LINK是一很好使用的调试工具。今天,我们就根据网络上的设计方案进行简化,设计制作一ST LINK调试器,用于之后的单片机
    发表于 03-06 10:26 1035次阅读
    应用<b class='flag-5'>单片机</b><b class='flag-5'>开发</b>的ST LINK调试器设计制作

    51单片机开发板的主要功能 51单片机开发板能做什么

    51单片机开发板是一种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51单片机
    的头像 发表于 01-23 15:52 3418次阅读

    8051单片机和STM32单片机的编程环境对比

    比较流行的单片机环境有keil和IAR,这两种环境可以覆盖市面上90%的单片机型号,而且都提供了函数。根据单片机位数不同,这两编程环境也
    发表于 12-25 10:01 1350次阅读
    8051<b class='flag-5'>单片机</b>和STM32<b class='flag-5'>单片机</b>的编程环境对比

    STM32单片机实现固件在线升级(IAP)

    1,固件升级方案综述单片机的固件升级方式有很多种。1、ICP:简单说就是在单片机开发时使用烧录器升级程序,比如使用J-Link烧录单片机程序
    的头像 发表于 12-16 08:00 5051次阅读
    STM32<b class='flag-5'>单片机</b>实现固件在线升级(IAP)

    你用过哪些编程语言开发单片机

    C语言是最常用的一种用于单片机开发语言,也是一种高级编程语言,具有较好的可移植性和可读性。对于单片机,通常使用嵌入式C来进行开发。 举例:用C语言写一段STM32
    发表于 12-04 10:18 1285次阅读