打印
[MCU开发工具资源区]

什么是KEIL的微库(microlib)?

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

就是下面这个选项:


Microlib是什么

Microlib也是一个C语言的库。它是为了小内存的嵌入式系统设计的,用于代替标准C语言库,但是Microlib对标准C语言库进行了裁剪和优化,因此并不完全兼容标准C语言库。Microlib相比于标准库,代码量能少多少呢?下图为Microlib与标准C语言库所占空间的对比。可以看出代码大小减少了约2/3。



Microlib的区别

当然容量的减小是以牺牲性能为代价的。为了减少容量,MicroLib去掉了一些函数功能,并对一些函数做了空间上的优化。那么Microlib都有哪些不一样呢?

    • main()函数不能带参数,并且main()不能返回
    • Microlib不支持生成”位置无关的代码(position-independent code)”。因此使用Microlib编写的程序不能生成可用的共享库,即.lib文件
    • 在默认的情况下,调用stdio.h中与文件指针(FILE变量类型)交互相关的函数都会返回错误,仅有的例外情况是以下三个标准流:stdin、stdout 和 stderr。
      为什么说这三个是例外:这三个实际上是3个宏,原型也是指向FILE类型的变量,因此可以看为特殊的文件指针,它们分别代表标准输入流,标准输出流,标准错误流。
      上面提到的是默认情况,若是想使用支持ANSI C标准的stdio.h库,可以使用语句 #pragma import(__use_full_stdio) 来更改默认情况。不过也有几个函数是例外:
      • 1.不支持错误和EOF指示符,因此feof()和ferror()总是返回0;
      • 2.所有的流都是未缓冲的,所以setbuf()和setvbuf()会调用失败。

    • Microlib不会生成信号。比如说signal(SIGINT, sighandler);使用SIGINT信号触发sighandler。程序是不会产生SIGINT信号的。除非使用raise(SIGINT)显式的调用raise()来产生信号。
    • 不支持与操作系统交互的函数,例如abort()、exit()、atexit()、clock()、time()、system() 和 getenv()。



    • 浮点支持在以下几个方面不符合 IEEE 754,但在仅涉及规范化数的运算中使用相同的数据格式并符合 IEEE 754:
        • 涉及 NaN、无穷大或非正规数的运算可能会产生不可预测的结果。
        • microlib 不能标记 IEEE 异常,并且 microlib 中没有 fp_status() 寄存器。
        • microlib 不会将零的符号视为有效位,并且 microlib 浮点算法输出中的零可能会包含不可预测的符号位。
        • 仅支持缺省的舍入模式。




使用特权

评论回复
沙发
liu96jp| | 2024-6-5 14:08 | 只看该作者
KEIL的微库(microlib)是一种针对嵌入式系统开发的轻量级C库

使用特权

评论回复
板凳
d1ng2x| | 2024-6-5 15:14 | 只看该作者
微库是由ARM公司开发的,专门用于ARM Cortex-M系列处理器的嵌入式应用程序开发

使用特权

评论回复
地板
cen9ce| | 2024-6-5 16:24 | 只看该作者
我觉得微库的设计目标是提供最小的代码尺寸和最低的内存占用,以适应资源受限的嵌入式系统

使用特权

评论回复
5
y1n9an| | 2024-6-5 17:31 | 只看该作者
其实微库提供了一系列基本的C库函数,如内存操作、字符串操作、数**算等,以及一些与硬件相关的函数,如中断控制、时钟控制等

使用特权

评论回复
6
w2nme1ai7| | 2024-6-5 18:37 | 只看该作者
微库正常来说,其特点是代码精简、执行效率高,适用于对代码尺寸和性能要求较高的嵌入式应用

使用特权

评论回复
7
tax2r6c| | 2024-6-5 19:55 | 只看该作者
使用微库可以帮助开发者在资源有限的嵌入式系统中有效地管理内存和代码尺寸,提高系统的性能和效率

使用特权

评论回复
8
l1uyn9b| | 2024-6-6 07:21 | 只看该作者
一般的话微库还提供了与KEIL开发工具集的紧密集成,方便开发者进行嵌入式应用程序的开发、调试和测试

使用特权

评论回复
9
lix1yr| | 2024-6-6 09:35 | 只看该作者
需要注意的是,微库并不是一个完整的标准C库,它只包含了一部分常用的函数和特性,因此在使用微库时需要注意其功能的限制和适用范围

使用特权

评论回复
10
zhizia4f| | 2024-6-6 10:27 | 只看该作者
这个好像就是keil自带的功能吧

使用特权

评论回复
11
lamanius| | 2024-6-6 11:41 | 只看该作者
有点像C语言自带的那种库,但是这个是keil自带的而已

使用特权

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

本版积分规则

18

主题

2532

帖子

3

粉丝