[开发资料] 微库与标准C库区别

[复制链接]
 楼主| 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的区别和应用
mollylawrence 发表于 2024-6-5 10:50 | 显示全部楼层
适用于存储空间受限的嵌入式系统,如小型MCU
chenci2013 发表于 2024-6-5 14:09 | 显示全部楼层
标准C库函数通常有更好的执行性能,因为未对性能进行优化以减小代码大小。
abotomson 发表于 2024-6-5 21:29 | 显示全部楼层
标准C库提供全面的C语言标准库函数支持,适用于需要完整C语言支持的应用。
alxd 发表于 2024-6-6 17:10 | 显示全部楼层
功能覆盖范围,微库是一种轻量级的C库,只包含了一部分常用的函数和特性,而标准C库(如C标准库libc)则是一个完整的C库,包含了广泛的函数和特性,如文件操作、网络通信、输入输出等
Candic12e 发表于 2024-6-6 18:25 | 显示全部楼层
一般来说,代码尺寸和内存占用不一样,微库的设计目标是提供最小的代码尺寸和最低的内存占用,以适应资源受限的嵌入式系统。相比之下,标准C库通常会更庞大,占用更多的存储空间
weifeng90 发表于 2024-6-6 19:24 来自手机 | 显示全部楼层
嵌入式开发MCU一般都是用的微库
Belle1257 发表于 2024-6-6 19:30 | 显示全部楼层
可能在执行效率方面有点关系,微库的代码精简,执行效率较高,适用于对代码尺寸和性能要求较高的嵌入式应用。而标准C库则更注重功能的完备性,可能会在一些性能上稍有牺牲
Emily999 发表于 2024-6-6 20:42 | 显示全部楼层
平台适用性不一样,微库主要针对ARM Cortex-M系列处理器的嵌入式应用开发,与KEIL开发工具集紧密集成。而标准C库是跨平台的,可以在各种操作系统和处理器架构上使用
wilhelmina2 发表于 2024-6-7 09:52 | 显示全部楼层
标准C库:提供了C语言标准规定的所有库函数,包括文件I/O、字符串处理、数**算等,功能全面,但代码体积较大。
modesty3jonah 发表于 2024-6-7 13:41 | 显示全部楼层
Keil微库(MicroLIB) 虽然也包含了一些标准C库函数,但缺少一些不常用的标准库函数,比如文件I/O的库函数。此外,一些函数可能在微库中的运行速度较慢,例如memcpy()。
lzbf 发表于 2024-6-7 17:37 | 显示全部楼层
标准C库提供了丰富的函数,包括输入输出、字符串处理、数学计算等,以满足各种编程需求
B1lanche 发表于 2024-6-7 21:15 | 显示全部楼层
微库适用于资源受限的嵌入式系统,注重代码尺寸和执行效率;而标准C库适用于更广泛的应用场景,提供了更丰富的功能和特性。选择使用哪种库取决于具体的应用需求和系统资源限制
tifmill 发表于 2024-6-7 21:32 | 显示全部楼层
标准 C 库通常更符合标准,这意味着它在不同平台和编译器之间的兼容性更好。而微库由于其精简的特点,可能在跨平台兼容性方面有所牺牲。
pmp 发表于 2024-6-8 09:58 | 显示全部楼层
Keil微库缺少一些不常用的标准库函数,如文件I/O库函数;不支持某些ISO C特性,如生成共享库和位置无关代码
mollylawrence 发表于 2024-6-8 13:38 | 显示全部楼层
Keil 微库与Keil 开发环境紧密集成,可以无缝地与Keil 的编译器和调试器协同工作。而标准C库可能需要额外的步骤来确保它们与特定的编译器和硬件平台兼容。
primojones 发表于 2024-6-8 17:20 | 显示全部楼层
在减小代码尺寸的同时,可能会牺牲一些性能,因为某些操作可能会更加复杂或需要更多的函数调用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

2991

帖子

3

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