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—

审核编辑 :李倩


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

    关注

    4981

    文章

    18280

    浏览量

    288377
  • 日志系统
    +关注

    关注

    0

    文章

    7

    浏览量

    6949
  • 开源
    +关注

    关注

    3

    文章

    2985

    浏览量

    41716

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

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

收藏 人收藏

    评论

    相关推荐

    如何提升单片机开发技术?

    单片机开发是现代电子技术中的重要分支,其在各个领域都有着广泛的应用。单片机开发技术的提升不仅可以提高工作效率,还可以提高工作质量和创新能力。那么,如何提升
    发表于 01-05 10:14

    stm32和51单片机的区别

    开发环境比51单片机更加成熟和完善,具有更多的工具和。同时,STM32单片机的资料和文档也更加丰富。 总结 总体来说,STM32单片机
    发表于 11-20 13:18

    单片机实现更简单的LCD设计

    电子发烧友网站提供《单片机实现更简单的LCD设计.pdf》资料免费下载
    发表于 11-17 09:29 0次下载
    <b class='flag-5'>单片机</b>实现更<b class='flag-5'>简单</b>的LCD设计

    FPGA和单片机的区别

    ,哪怕是常用的M3系列流水线也是单线程执行,程序语句需要等待单片机周期才能执行。 本质上的区别 FPGA和单片机的区别,本质上是软件和硬件的区别,FPGA偏向于硬件电路,而
    发表于 11-14 15:30

    单片机加OLED做一简单的显示字符?

    最近想通过单片机加OLED做一简单的显示字符的可以通过按键选中的GUI界面,可是有时候要按好多下才会有反应。有没有比较好用的代码?
    发表于 11-03 07:33

    51单片机如何led灯闪烁?

    51单片机如何led灯闪烁​
    发表于 11-01 06:32

    如何将开源Helix MP3解码算法移植到AT32F4xx单片机方法

    本应用笔记介绍了如何将开源Helix MP3解码算法移植到AT32F4xx单片机方法。本文档提供的源代码演示了使用Helix MP3解码算法的MP3
    发表于 10-24 07:20

    怎么STM32或其他的单片机死机?

    怎么STM32或其他的单片机死机
    发表于 09-26 06:38

    单片机怎么用简单按键控制LED灯呢?

    器件,例如LED灯。在这篇文章中,我们将详细探讨如何通过简单按键来控制LED灯。 单片机的基础 在我们开始探讨具体细节之前,我们需要先了解一些基础知识,包括什么是单片机以及如何安装和配置集成
    的头像 发表于 09-02 17:05 2599次阅读

    求分享NUC472VI8AE单片机的原理图和pcb封装

      请问官方有没有提供NUC472VI8AE单片机的原理图和pcb封装?   希望官方或者大家能提供所有的新唐家族的单片机原理图和pcb 封装,保证大家设计的时的便利和准确性, 加
    发表于 08-30 06:34

    单片机学到什么程度可以找到工作?

    STM32是意法半导体公司推出一款32位的单片机,其具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势,并且stm32相关资料都非常全面和细致,所以很适合小白的学习。对于
    发表于 08-10 15:19

    试读报告《Proteus实战攻略从简单电路到单片机电路的仿真》仿真有效的实验报告

    。 这就是为什么会受人欢迎,降低开源成本;有效的仿真,简单的电路到单片机电路,大大的提供工作效率,降低开发项目的时间。 proteus实战攻略这本书讲到了什么? 当我拿到这本书后开始
    发表于 08-04 10:58

    求助,求推荐一简单的小小的开发传统51单片机的组合

    推荐一简单的小小的开发传统51单片机的组合
    发表于 06-27 08:18

    单片机学到什么程度可以找到工作?

    依自身经历来说,首先我们可以以strm32系列单片机开始入手。 STM32是意法半导体公司推出一款32位的单片机,其具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势,并且
    发表于 05-11 10:46

    单片机的上位机简单开发(2)

    单片机的上位机简单开发(2) 界面设计增加了GroupBox控件和radio按钮,我们设置其默认的enabled为false在连接串口之后enabled变为true groupBox1
    发表于 05-10 09:36 0次下载
    <b class='flag-5'>单片机</b>的上位机<b class='flag-5'>简单开发</b>(2)