[软件资料] MicroLib微库和ARM标准C库有什么区别?

[复制链接]
1298|7
 楼主| szt1993 发表于 2024-5-21 14:32 | 显示全部楼层 |阅读模式
我们在使用Keil MDK编程,用到printf打印输出时,通常都会使能Keil工具自带的微库(MicroLib):

1.png

下面就来讲讲关于Keil MDK中的这个MicroLib微库。

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

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


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

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

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

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

优化标准库,肯定会带来一些差异,下面分享几点主要的差异:
1.代码(数据)量更小(对比上图)。
2.缺少一些不常用标准库函数,比如:文件 I/O 的库函数。
3.微库最大程度优化代码量,可能会导致有些库代码运行速度更慢。
4.可用于RTOS这类系统中,但不支持在像Windosw这类系统中。

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

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

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

小夏天的大西瓜 发表于 2024-5-22 16:04 | 显示全部楼层
MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库。
小小蚂蚁举千斤 发表于 2024-6-11 16:22 | 显示全部楼层
微库更适用于keil等高度集成的IDE
小小蚂蚁举千斤 发表于 2024-6-11 16:22 | 显示全部楼层
微库更适用于keil等高度集成的IDE
AdaMaYun 发表于 2024-6-13 20:28 | 显示全部楼层
通常还是建议直接使用微库,毕竟经过别人多次验证的库,出现bug的概率更小。
OKAKAKO 发表于 2024-6-21 21:22 | 显示全部楼层
使用微库会更好
中国龙芯CDX 发表于 2024-6-26 16:28 | 显示全部楼层
MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库。
jf101 发表于 2024-6-27 16:28 | 显示全部楼层
微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

355

主题

3172

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部