我们在使用keil mdk编程,用到printf打印输出时,通常都会使能keil工具自带的微库(microlib):
下面,我们就来讲讲关于keil mdk中的这个microlib微库。
1什么是microlib?
microlib是针对以c语言编写的基于arm嵌入式应用程序的高度优化的库。 与arm compiler工具链附带的标准c库相比,microlib具有明显的代码大小优势。
上图是一个性能基准测试代码,通过上图可以发现,微库在不同内核下代码量明显少很多。 补充:c语言标准库,我们经常都会调用,比如:、 、 、 、 、 等库文件。 在这些文件下还有很多各类库函数,比如:printf()、 malloc()、 memcpy()、 strncpy()等。
2微库和arm标准c库区别
因为针对arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对arm嵌入式系统,对标准c库进行了优化,以减小代码量。
优化标准库,肯定会带来一些差异,下面分享几点主要的差异:
代码(数据)量更小(对比上图)。
缺少一些不常用标准库函数,比如:文件 i/o 的库函数。
微库最大程度优化代码量,可能会导致有些库代码运行速度更慢。
可用于rtos这类系统中,但不支持在像windosw这类系统中。
3最后
微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。 比如:你的项目经过验证,发现微库的代码量,或者运行速度都不理想的情况下,可以自己修改原型函数。 当然,在万不得已的情况下才建议修改原型函数。通常还是建议直接使用微库,毕竟经过别人多次验证的库,出现bug的概率更小。
高盛看好苹果收购战略 或将带来2000亿美元现金
分享《2018科技、传媒和电信行业预测》的核心观点
区块链技术哪家强?猫、狗、兔也来凑热闹!
如何快速入门区块链(实用型学习框架)
Adam Taylor玩转MicroZed系列74:物理约束
一文弄懂Keil微库和ARM标准C库的区别
LED背光SEPIC驱动器
区块链生态如何真正的实现落地
区块链到底是技术革命还是投资笑话,看看专家如何分析的
LVCD1000-3流量计(压力与流量)检测校准系统
计为磁翻板指示器与传统指示器的异同
北斗星通正式发布新一代22nm高精度定位芯片
对抗”升级日态度强硬 三星掌门李在镕亲赴日协商解决
如何使用IBIS模型进行分析
低压直流伺服电机在AGV机器人中的应用
见证与建设,2022世界工业互联网产业大会聚焦“华正方案”
STM32Note初识单片机(2)
光学和电子束方法得到扩展,应对严峻的计量和良率挑战
上海箩箕提供大面积屏下指纹识别技术
镭神智能高端激光雷达安防解决方案诚招全球代理