打印
[STM32F1]

KEIL微库MicroLIB与程序大小

[复制链接]
82|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
febgxu|  楼主 | 2024-9-26 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不使用微库MicroLIB
Program Size: Code=23010 RO-data=16190 RW-data=1076 ZI-data=21412
使用微库
Program Size: Code=17356 RO-data=15636 RW-data=1076 ZI-data=20804

Code: -5654 字节
RO-data :-554 字节
RW-data :0 字节(没有变化)
ZI-data :-608 字节
因此,总的变化为:
Code段 + RO-data段 + RW-data段 + ZI-data段
= 5654 + 554 + 0 + 608
= 6816 字节



MicroLib 是 Keil MDK-ARM 中针对基于 ARM 的嵌入式应用程序优化的 C 语言库,它相比于标准 C 库,在代码大小上具有显著的优势,特别适用于对存储空间要求严格的嵌入式系统 。MicroLib 专为深度嵌入式应用设计,优化了代码和数据内存的使用,但牺牲了一部分功能和性能。例如,它不支持文件 I/O 或宽字符,且某些函数执行速度可能比标准库慢 。

MicroLib 的主要特点包括:

为无操作系统的嵌入式应用设计。
优化以减少代码占用,但可能在执行速度上有所折中。
不支持 ANSI C 标准中的某些特性,如文件 I/O、宽字符支持等。
不支持与操作系统交互的函数,如 abort()、exit() 等。
对浮点数的支持有限,不完全符合 IEEE 754 标准 。
在使用 MicroLib 时,可以通过在 µVision 中勾选 “Use MicroLIB” 选项来启用。这将自动链接 MicroLib 并减小程序大小。需要注意的是,MicroLib 从 MDK-ARM v3.1 版本开始包含在内 。如果需要使用符合 ANSI C 标准的 stdio.h 库,可以通过特定的编译器指令来启用 。

开发者在使用 MicroLib 时应考虑到其限制,例如 main 函数不能带参数也不能返回值,且不生成信号,除非显式调用 raise() 来产生信号。此外,MicroLib 不支持多字节或宽字符字符串,也不支持单或双区内存模型,仅提供双区内存模型 。

在实际开发中,如果项目对代码空间有严格要求,可以选择使用 MicroLib 来减小应用程序的体积。但若应用需要更多标准库支持的功能,或者在操作系统环境中运行,则可能需要使用更完整的标准 C 库 。


使用特权

评论回复
沙发
泡椒风爪| | 2024-9-27 16:42 | 只看该作者
MicroLib 专为深度嵌入式应用设计

使用特权

评论回复
板凳
键盘手没手| | 2024-9-27 16:47 | 只看该作者
中针对基于 ARM 的嵌入式应用程序优化的

使用特权

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

本版积分规则

38

主题

4692

帖子

2

粉丝