查看: 3527|回复: 0

MicroLib微库和ARM标准C库有什么区别

[复制链接]
  • TA的每日心情
    慵懒
    2023-1-31 09:34
  • 签到天数: 202 天

    连续签到: 1 天

    [LV.7]常住居民III

    7

    主题

    1517

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3963
    最后登录
    2025-7-2
    发表于 2021-7-3 23:40:27 | 显示全部楼层 |阅读模式
    本帖最后由 zhangt0713 于 2021-7-3 23:49 编辑

    Keil MDK,时我们用的比较的一款IDE,分享下keil下Microlib和ARM标准C库的一些区别
    我们在使用Keil MDK编程,用到printf打印输出,通常都会使能Keil工具自带的微库
           微库.PNG
    曾经使用过sprinf,这个函数进行格式化字符串时,出现过一些问题
    具体情况如下:
    使用sprintf 格式化十进制,十六进制为字符串等,可以正常工作
    sprintf((char*)Data_Str,"temperature:%d,Humidity:%d",35,65);

    格式化浮点数时,出现问题,卡在sprinf那里了,最后勾选了Microlib解决此问题。
    sprintf((char*)Data_Str,"temperature:%0.1f,Humidity:%0.1f",35.6,65.7);
    具体的不通过勾选Microlib怎么去解决没有去深究过

    1.什么是MicroLib
    MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库。
    与ARM Compiler工具链附带的标准C库相比,MicroLib具有明显的代码大小优势
          microlib_chart.png

    上图是一个性能基准测试代码,通过上图可以发现,微库在不同内核下代码量明显少很多。

    C语言标准库,我们经常都会调用,比如:<stdio.h>、 <stdlib.h>、 <string.h>、 <math.h>、 <error.h>、 <assert.h>等库文件。在这些文件下还有很多各类库函数,比如:printf()、 malloc()、 memcpy()、 strncpy()等。

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

    优化标准库,肯定会带来一些差异,下面分享几点主要的差异:
    (1)MicroLib经过优化,比使用ARM标准库使用更少的代码和数据内存。
    (2)缺少一些不常用标准库函数,比如:文件 I/O 的库函数。
    (3)由于MicroLib已经过优化以最小化代码大小,一些函数的执行速度将比ARM编译工具中可用的标准C库例程慢。
    (4)可用于RTOS这类系统中,但不支持在像Windosw这类系统中。

    注意:
    (1)MicroLIB和C标准库互斥,两者不能同时使用,只能2选1;
    (2) 使用MicroLIB后就可以直接使用printf()往串口终端打印信息了,默认使用串口1;
    (3) MicroLIB提供了一个有限的 stdio子系统,它仅支持未缓冲的 stdin、stdout和stderr,
         要使用高级 I/O 函数,必须自己对fputc()、fgetc()和__backspace()基本函数进行修改;
    (4)MicroLIB中不支持的转换为 %lc、%ls和 %a;
    (5) MicroLIB不支持与操作系统交互的所有函数,例如:abort()、exit()、atexit()、clock()、time()、system()和getenv();





    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 20:52 , Processed in 0.080684 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表