关注+星标公众,不错过精彩内容

作者 | strongerHuang

微信公众号 | 嵌入式专栏

我们在使用Keil MDK编程,用到printf打印输出时,通常都会使能Keil工具自带的微库(MicroLib):

下面就来讲讲关于Keil MDK中的这个MicroLib微库。

1什么是MicroLib?

MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库

与ARM Compiler工具链附带的标准C库相比,MicroLib具有明显的代码大小优势。

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

补充:

C语言标准库,我们经常都会调用,比如:<stdio.h>、 <stdlib.h>、 <string.h>、 <math.h>、 <error.h>、 <assert.h>等库文件。

在这些文件下还有很多各类库函数,比如:printf()、 malloc()、 memcpy()、 strncpy()等。

2微库和ARM标准C库区别

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

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

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

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

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

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

3最后

微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。

比如:你的项目经过验证,发现微库的代码量,或者运行速度都不理想的情况下,可以自己修改原型函数。

当然,在万不得已的情况下才建议修改原型函数。通常还是建议直接使用微库,毕竟经过别人多次验证的库,出现bug的概率更小。

------------ END ------------

后台回复『Keil系列教程』『嵌入式软件设计与开发』相关文章。

欢迎关注我的公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

欢迎关注我的视频号:

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

MicroLib微库和ARM标准C库有什么区别?相关推荐

  1. MicroLib微库和ARM标准C库:usart使用中printf重定向引起的问题

    方法一:使用微库(微雪) 在usart.c中添加如下代码: #ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker- ...

  2. Keil微库 vs 标准C库

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 初学者使用 Keil 学习单片机,用串口printf打印输出时,通常都会使能Keil ...

  3. 1、新建基于标准固件库MDK5工程模板(STM32F103ZET6)

    新建基于标准固件库MDK5工程模板 1.STM32官方库文件夹介绍 如上图,是ST官方提供的STM32标准固件库的文件包结构: STM32官方固件库下载地址: "https://www.st ...

  4. No.2 STM32F429IGT6 固件库 CMSIS标准及库和STM32官方文档资料总结 (STM32F429/F767/H743)

    CMSIS标准及库层次关系 因为基于 Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的 C ...

  5. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  6. 提高C++性能的编程技术笔记:标准模板库+测试代码

    标准模板库(Standard Template Library, STL)是容器和通用算法的强效组合. 渐近复杂度:算法的渐近复杂度是对算法性能的近似估计.它是算法集到特定性能标准集的映射.如果需要对 ...

  7. C++中标准模板库std::vector的实现

    以下实现了C++标准模板库std::vector的部分实现,参考了 cplusplus. 关于C++中标准模板库std::vector的介绍和用法可以参考 https://blog.csdn.net/ ...

  8. C++中标准模板库std::pair的实现

    以下用C++实现了标准模板库中的std::pair实现,参考了 cplusplus 和 vs2013中的utility文件. 关于std::pair的介绍和用法可以参考: https://blog.c ...

  9. STL 简介,标准模板库

    作者:Scott Field 这篇文章是关于C++语言的一个新的扩展--标准模板库的(Standard Template Library),也叫STL.     当我第一次打算写一篇关于STL的文章的 ...

最新文章

  1. Vi/Vim查找替换使用方法
  2. 转:构建高性能ASP.NET站点 第五章—性能调优综述(中篇)
  3. UE4 材质:石缝提高混合权重
  4. rust(19)-进制
  5. php数组地址,怎么实现javascript数组与php数组的地址传递
  6. ElasticSearch 并发的处理方式:锁和版本控制_07
  7. Sophos 紧急修复已遭利用的防火墙 0day
  8. [PHP]Yii rules常用规则
  9. 用iMindMap制作健康生活计划思维导图
  10. 谈谈我选择VC界面皮肤库的标准
  11. 网页插入网易云音乐播放器
  12. 三款MikroTik家用和小型办公网路由器
  13. 2022软考软件设计师复习(上午题)
  14. SQL总结 学期前8周学习内容
  15. Python与C++语法比较--字符串篇
  16. 程序员如何快速了解和掌握一门新技术
  17. Anaconda打开多个spyder窗口
  18. 仙剑4 linux,仙剑奇侠传98柔情版 for Linux——SDLPAL打包
  19. 串口232,485转以太网模块 TCP/IP 串口协议转换模块
  20. 基于机器学习的5G精准营销模型

热门文章

  1. 模拟【CSP201609-3炉石传说】
  2. espnow 例程解析
  3. usnews美国大学计算机科学排名,最新!2019年USNews美国大学计算机专业排名
  4. 【OpenCV 学习笔记】第二十章: 角点检测之:harris算法以及Shi-Tomasi算法
  5. 【学术相关】2021年国家自然科学基金高校立项情况最新数据
  6. html提交成功跳转页面,提交表单后跳转到想要的页面--jQuery form
  7. Python 局域网即时通讯工具
  8. Redis常见面试题(2022)
  9. BZOJ 2757: [SCOI2012]Blinker的仰慕者 数位DP
  10. LeetCode:871. Minimum Number of Refueling Stops - Python