打印
[其他ST产品]

Keil微库和ARM标准C库区别

[复制链接]
575|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们在使用Keil MDK编程,用到printf打印输出时,通常都会使能Keil工具自带的微库(MicroLib):




下面就来讲讲关于Keil MDK中的这个MicroLib微库。
1什么是MicroLibMicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库
与ARM Compiler工具链附带的标准C库相比,MicroLib具有明显的代码大小优势。



上图是一个性能基准测试代码,通过上图可以发现,微库在不同内核下代码量明显少很多。
补充: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的概率更小。


使用特权

评论回复
沙发
MessageRing| | 2022-12-6 13:46 | 只看该作者
抄别人库比自己写的稳定多了

使用特权

评论回复
板凳
Stahan| | 2022-12-6 15:36 | 只看该作者
能用别人的代码从不自己写

使用特权

评论回复
地板
SantaBunny| | 2022-12-7 16:37 | 只看该作者
用别人的代码的

使用特权

评论回复
5
童雨竹| | 2024-10-16 07:26 | 只看该作者

给瞬间电流提供低阻抗导通路径

使用特权

评论回复
6
Wordsworth| | 2024-10-16 08:29 | 只看该作者

最典型的应用就是放大电路中的高低音频控制

使用特权

评论回复
7
Clyde011| | 2024-10-16 09:32 | 只看该作者

器件整合的再紧凑都无法发挥最大的效率

使用特权

评论回复
8
公羊子丹| | 2024-10-16 10:25 | 只看该作者

需要设置电压钳位电路予以保护D3、N3构成的回路

使用特权

评论回复
9
万图| | 2024-10-16 11:28 | 只看该作者

需要串联一个限流电阻在其中

使用特权

评论回复
10
Uriah| | 2024-10-16 12:31 | 只看该作者

当人接触任何东西时,体内的电荷就会放电。

使用特权

评论回复
11
帛灿灿| | 2024-10-16 14:27 | 只看该作者

有不普通的门道

使用特权

评论回复
12
Bblythe| | 2024-10-16 15:30 | 只看该作者

只能处理较小的能量

使用特权

评论回复
13
周半梅| | 2024-10-16 17:26 | 只看该作者

电路正常工作

使用特权

评论回复
14
Pulitzer| | 2024-10-16 18:29 | 只看该作者

灌封前基材外观保持清洁和干燥。将混合好的胶料灌注于需灌封的器件内

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

508

主题

1940

帖子

5

粉丝