打印
[开发资料]

微库与标准C库区别

[复制链接]
1928|59
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pl202|  楼主 | 2024-5-28 12:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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


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

1.代码(数据)量更小(对比上图)。

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

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

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



MicroLib是缺省c库的备选库,它可装入少量内存中,与嵌入式应用程序配合使用,且这些应用程序不在操作系统中运行。

MicroLib进行了高度优化以使代码变得很小,功能比缺省c库少,不具备某些ISO c特性,部分库函数的运行速度也比较慢,如内存拷贝函数memcpy()。

MicroLib与缺省c库之间的主要差异在网上有许多文章都有写到,这里摘抄记录:

  • MicroLib 不符合 ISO C 库标准。不支持某些 ISO 特性,并且其他特性具有的功能也较少。

  • MicroLib 不符合 IEEE 754 二进制浮点算法标准。

  • MicroLib 进行了高度优化以使代码变得很小。

  • 无法对区域设置进行配置。缺省 C 区域设置是唯一可用的区域设置。

  • 不能将 main() 声明为使用参数,并且不能返回内容。

  • 不支持 stdio,但未缓冲的 stdin、stdout 和 stderr 除外。

  • MicroLib对 C99 函数提供有限的支持。

  • MicroLib不支持操作系统函数。

  • MicroLib不支持与位置无关的代码。

  • MicroLib不提供互斥锁来防止非线程安全的代码。

  • MicroLib不支持宽字符或多字节字符串。

  • 与stdlib不同,MicroLib不支持可选择的单或双区内存模型。MicroLib只提供双区内存模型,即单独的堆栈和堆区。



使用特权

评论回复
沙发
mollylawrence| | 2024-6-4 13:30 | 只看该作者
标准C库:提供了完整的C语言标准库函数,因此其代码和数据量相对较大。
Keil微库(MicroLIB):作为标准C库的裁剪版本,它特别为嵌入式环境定制开发,以节省资源。与标准C库相比,微库具有更小的代码和数据量。

使用特权

评论回复
板凳
saservice| | 2024-6-4 16:50 | 只看该作者
Keil 微库专门为Keil 开发的环境和目标处理器优化,主要是为了在资源受限的嵌入式系统中提供高效的运行性能。而标准C库则更加通用,它们被设计为在多种操作系统和硬件平台上运行。

使用特权

评论回复
地板
chenjun89| | 2024-6-5 07:59 | 只看该作者
还没有仔细研究国microlib的区别和应用

使用特权

评论回复
5
mollylawrence| | 2024-6-5 10:50 | 只看该作者
适用于存储空间受限的嵌入式系统,如小型MCU

使用特权

评论回复
6
chenci2013| | 2024-6-5 14:09 | 只看该作者
标准C库函数通常有更好的执行性能,因为未对性能进行优化以减小代码大小。

使用特权

评论回复
7
abotomson| | 2024-6-5 21:29 | 只看该作者
标准C库提供全面的C语言标准库函数支持,适用于需要完整C语言支持的应用。

使用特权

评论回复
8
alxd| | 2024-6-6 17:10 | 只看该作者
功能覆盖范围,微库是一种轻量级的C库,只包含了一部分常用的函数和特性,而标准C库(如C标准库libc)则是一个完整的C库,包含了广泛的函数和特性,如文件操作、网络通信、输入输出等

使用特权

评论回复
9
Candic12e| | 2024-6-6 18:25 | 只看该作者
一般来说,代码尺寸和内存占用不一样,微库的设计目标是提供最小的代码尺寸和最低的内存占用,以适应资源受限的嵌入式系统。相比之下,标准C库通常会更庞大,占用更多的存储空间

使用特权

评论回复
10
weifeng90| | 2024-6-6 19:24 | 只看该作者
嵌入式开发MCU一般都是用的微库

使用特权

评论回复
11
Belle1257| | 2024-6-6 19:30 | 只看该作者
可能在执行效率方面有点关系,微库的代码精简,执行效率较高,适用于对代码尺寸和性能要求较高的嵌入式应用。而标准C库则更注重功能的完备性,可能会在一些性能上稍有牺牲

使用特权

评论回复
12
Emily999| | 2024-6-6 20:42 | 只看该作者
平台适用性不一样,微库主要针对ARM Cortex-M系列处理器的嵌入式应用开发,与KEIL开发工具集紧密集成。而标准C库是跨平台的,可以在各种操作系统和处理器架构上使用

使用特权

评论回复
13
wilhelmina2| | 2024-6-7 09:52 | 只看该作者
标准C库:提供了C语言标准规定的所有库函数,包括文件I/O、字符串处理、数**算等,功能全面,但代码体积较大。

使用特权

评论回复
14
modesty3jonah| | 2024-6-7 13:41 | 只看该作者
Keil微库(MicroLIB) 虽然也包含了一些标准C库函数,但缺少一些不常用的标准库函数,比如文件I/O的库函数。此外,一些函数可能在微库中的运行速度较慢,例如memcpy()。

使用特权

评论回复
15
lzbf| | 2024-6-7 17:37 | 只看该作者
标准C库提供了丰富的函数,包括输入输出、字符串处理、数学计算等,以满足各种编程需求

使用特权

评论回复
16
B1lanche| | 2024-6-7 21:15 | 只看该作者
微库适用于资源受限的嵌入式系统,注重代码尺寸和执行效率;而标准C库适用于更广泛的应用场景,提供了更丰富的功能和特性。选择使用哪种库取决于具体的应用需求和系统资源限制

使用特权

评论回复
17
tifmill| | 2024-6-7 21:32 | 只看该作者
标准 C 库通常更符合标准,这意味着它在不同平台和编译器之间的兼容性更好。而微库由于其精简的特点,可能在跨平台兼容性方面有所牺牲。

使用特权

评论回复
18
pmp| | 2024-6-8 09:58 | 只看该作者
Keil微库缺少一些不常用的标准库函数,如文件I/O库函数;不支持某些ISO C特性,如生成共享库和位置无关代码

使用特权

评论回复
19
mollylawrence| | 2024-6-8 13:38 | 只看该作者
Keil 微库与Keil 开发环境紧密集成,可以无缝地与Keil 的编译器和调试器协同工作。而标准C库可能需要额外的步骤来确保它们与特定的编译器和硬件平台兼容。

使用特权

评论回复
20
primojones| | 2024-6-8 17:20 | 只看该作者
在减小代码尺寸的同时,可能会牺牲一些性能,因为某些操作可能会更加复杂或需要更多的函数调用。

使用特权

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

本版积分规则

22

主题

2729

帖子

3

粉丝