Keil微库 vs 标准C库

新闻资讯   2023-06-07 12:04   76   0  

初学者使用 Keil 学习单片机,用串口printf打印输出时,通常都会使能Keil工具自带的微库(MicroLib):


最近看到有读者在讨论Keil的MicroLib微库和标准C库的话题,下面就给大家简单分享一下相关内容。

什么是MicroLib?

MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库


与ARM Compiler工具链附带的标准C库相比,MicroLib具有明显的代码大小优势。


上图是一个性能基准测试代码,通过上图可以发现,微库在不同内核下代码量明显少很多。

补充:C语言标准库,我们经常都会调用,比如<stdio.h>、 <stdlib.h>、 <string.h>、 <math.h>、 <error.h>、 <assert.h>等库文件。

在这些文件下,还有很多各类库函数,比如printf()、 malloc()、 memcpy()、 strncpy()等。

微库与标准C库区别

因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C库进行了优化,以减小代码量。


优化标准库,肯定会带来一些差异,下面分享几点主要的差异:

1、代码(数据)量更小(对比上图);

2、缺少一些不常用标准库函数,比如文件 I/O 的库函数;

3、微库最大程度优化代码量,可能会导致有些库代码运行速度更慢;

4、可用于RTOS这类系统中,但不支持在像Windosw这类系统中。


总 结

微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。


比如你的项目经过验证,发现微库的代码量,或者运行速度都不理想的情况下,可以自己修改原型函数。

当然,在万不得已的情况下才建议修改原型函数。通常还是建议直接使用微库,毕竟经过别人多次验证的库,出现bug的概率更小。

END

来源:strongerHuang

版权归原作者所有,如有侵权,请联系删除。

推荐阅读
CAN总线比UART串口难吗?
分享一个开源串口神器,太强了!
短短三个月,稚晖君创业项目已获三轮融资

→点关注,不迷路←

文章引用微信公众号"嵌入式微处理器",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。