Microlib究竟是森么呢?

KeilMDK配置项中Use MicroLIB 1.选上”UseMicroLIB”这是KEIL自带的一个简易的库,例如你用printf函数的时候,就会从串口1输出字符串,直接默认定向到串口1 2.microlib是缺省C库的备选库。它用于必须在极少量内存环境下运行的深层嵌入式应用程序。 这些应用程序不在操作系统中运行。microlib不会尝试成为符合标准的ISOC库。 microlib进行了高度优化以使代码变得很小。它的功能比缺省C库少,并且根本不具备某些ISOC特性。某些库函数的运行速度也比较慢... 阅读详情
	当进行debug时,发现程序在BEAB BKPT 0xAB处死循环了。在网上查找的的解决办法是,在项目设置的target选项卡中,选择使用USE Microlib。之后果然通过了。然而此时,程序中的exit()全都变成了undfined symbol了。上网查了查大家的说法,原来又是Microlib的问题,如果选择了它,必须在jerror.c中,找到error_exit(j_comman_ptr cinfo)函数,将其中的exit(EXIT_FAILURE)注释了,改用return直接返回。本宝宝只能表示,Microlib君,你搞得我心里好乱啊!
	博客中关于Microlib的内容介绍以及使用在文中有详细介绍:点击打开链接
	也就是说,Microlib不支持与系统交互的的函数,其中就比如exit()。这真是一个让人纠结的事情啊!目前我能做的是将程序中的exit()换用成return。但是还是很想知道,有没有办法能够不修改exit()函数呢?或者说能否不适用Microlib这个微库,而不会跳入死循环中呢?因为看到大家使用Microlib主要是为了解决printf函数无法输入进串口的问题。但是在我的程序中并没有适用printf相关的语句,那么问题究竟出在哪里呢?有没有什么两全的办法呢?


keil勾选Use MicroLIB 的作用 MicroLib是一个针对用C编写的基于ARM的嵌入式应用程序的高度优化的库。与包含在ARM编译器工具链中的标准C库相比,MicroLib提供了许多嵌入式系统所需的代码大小的显著优势。 下图对使用标准库和使用微库代码大小进行了对比 MicroLib和标准C库之间的主要区别是: 1、MicroLib是专为深度嵌入式应用程序而设计的。 2、MicroLib经过优化,比使用ARM标准库使用更少的代码和数据内存。 3、MicroLib被设计成在没有操作系统的情况下工作,但是这并不妨碍它与任何... 阅读详情

相关推荐

嵌入式Keil工具【微库】和【标准库】的对比

C语言标准库,我们经常都会调用,比如:、 、 、 、 、 等库文件。因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C库进行了优化,以减小代码量。当然,在万不得已的情况下才建议修改原型函数。微库函数也是一种函数,其很多库函数原型在网上都能找到,如果你有特殊需求,可以不用微库,在库函数原型的基础上进行修改。

嵌入式技术开发 1116

什么是KEIL的微库(microlib)?

从上面的缺失功能可以看出,在一般的控制应用中使用Mircrolib就足够了。MicroLib是针对以C语言编写的基于ARM嵌入式应用程序的高度优化的库。与ARM Compiler工具链附带的标准C库相比,MicroLib具有明显的代码大小优势。微库与标准C库区别因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C库进行了优化,以减小代码量。1.代码(数据)量更小(对比上图)。

booksyhay的专栏 5663

STM32之不使用MicroLIB

microlib 是缺省 C 库的备选库,功能上不具备某些 ISO C 特性。microlib 进行了高度优化以使代码变得很小,功能比缺省 C 库少,用于必须在极少量内存环境下运行的深层嵌入式应用程序。Semihosting是用于ARM目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。例如,使用此机制可以启用 C 库中的函数,如 printf() 和 scanf(),来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。

lushoumin的博客 1607

关于Keil中MicroLIB的说明

Keil中Microlib的理解与分析

q1109的博客 3010

Windows 环境下 OpenClaw 的安装与千问大模型配置

为了不占用 C 盘空间,重装系统也不丢失配置,本文详细记录了如何将 OpenClaw 安装在非系统盘,比如D 盘,并对接阿里云 通义千问大模型的全过程。主要是利用 NVM 和 npm 进行安装,方便后续一键升级,配置具有免费额度的Qwen API,这个只需要在阿里云百炼注册一个账号就能获得免费额度。

博客 6535

FlashAttention 快速安装指南(避免长时间编译)

FlashAttention 编译太慢?本篇提供无需编译的预编译 wheel 快速安装方案,适配多版本 Python、PyTorch 和 CUDA,极大节省部署时间!

Junseer的博客 9718

MicroLib小解一下

MicroLib 是一个高度优化的库,用于用 C 编写的基于 ARM 的嵌入式应用程序。与 ARM 编译器工具链中包含的标准 C 库相比,MicroLib 提供了许多嵌入式系统所需的显著代码大小优势。__initial_sp 表示栈顶地址,__heap_base表示堆起始地址,__heap_limit 表示堆结束地址。没有定义__MICROLIB,实际的情况就是我们没有定义__MICROLIB,所以使用默认的 C 库运行。MicroLib 经过优化,与使用 ARM 标准库相比,使用更少的代码和数据存储器。

yybyg的博客 1238

【electron】- 从零到一:在electron-vite项目中集成better-sqlite3的工程化实践

本文详细介绍了在electron-vite项目中集成better-sqlite3数据库的完整工程化实践。针对原生模块的编译挑战,提供了从环境配置、路径规划、服务封装到IPC通信的解决方案,并重点解决了开发与生产环境的数据库路径分离及打包部署等核心问题,帮助开发者构建稳定高效的Electron桌面应用数据层。

weixin_29306571的博客 202

STM32程序不运行与MicroLIB讲解

成就更好的自己 引言 先说问题,这几天在使用STM32H750调试程序的过程中出现了一些问题,博主使用下载用CubeMX初始化好的程序后,程序不执行,表现为以下几个现象或状态: 简单的点灯程序不运行; 程序均可通过各种方式(DAP,STLINK,JLINK,UART,USB)下载成功,也可以进行Keil的硬件在环Debug; 所有GPIO引脚高阻态,对地电压1.5V左右; Keil的硬件在环Debug可以进行,并不会提示找不到连接,但是Debug界面开始调试时并不是通常那样开始就是自..

The Road of Engineer 1万+

保姆级教程:用ROS2 Humble + Gazebo Classic 从零搭建一个能键盘控制的差分AGV模型

本文提供了一份详细的ROS2 Humble与Gazebo Classic教程,指导用户从零开始搭建一个键盘控制的差分AGV模型。内容涵盖环境配置、Xacro文件设计、Gazebo仿真集成以及键盘控制实现,特别针对常见问题提供解决方案,帮助开发者快速掌握ROS2机器人仿真技术。

weixin_30387423的博客 168

基于C#的跨平台上位机开发:一次编写,多平台运行

摘要: 本文探讨了如何利用C#进行跨平台上位机开发,以适配Windows、Linux、macOS等多平台需求。通过分析传统单平台开发的局限性(如API差异、硬件接口兼容性),提出基于.NET 5/6/7的解决方案,重点推荐Avalonia(类WPF的跨平台UI框架)和GtkSharp(基于GTK+)实现图形界面。同时,针对硬件通信需求,介绍了System.IO.Ports串口通信和LibUsbDotNet的跨平台支持,并强调多平台调试(VS Code、Docker)的重要性,最终实现一次编码、多端部署的高效

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1404

KEIL中USB Microlib作用

1.选上”UseMicroLIB”这是KEIL自带的一个简易的库,例如你用printf函数的时候,就会从串口1输出字符串,直接默认定向到串口1 2.microlib是缺省C库的备选库。它用于必须在极少量内存环境下运行的深层嵌入式应用程序。这些应用程序不在操作系统中运行。microlib不会尝试成为符合标准的ISOC库。 microlib进行了高度优化以使代码变得很...

linxi8693的博客 2586

使用3sigma原则去除数据表中的极端值

本文使用3sigma解决数据表中出现的极端值问题,其中包括基本原理、使用原则(检验方法)、代码展示这3个部分

qq_51397866的博客 4376

Keil5中使用MicroLIB减小代码体积

本文深入解析Keil MDK中的MicroLIB,探讨其在资源受限MCU中的代码瘦身机制,涵盖原理、配置、编译链接优化及常见陷阱,并结合STM32实战案例展示如何显著降低Flash和RAM占用,适用于Bootloader等对空间敏感的嵌入式场景。

kiwi8的博客 934

Arduino、ESP32驱动SFA40甲醛传感器(气体传感器篇)

SFA40甲醛传感器是一款基于盛思锐电化学原理的专业HCHO检测模块,具备卓越的抗酒精干扰能力(乙醇交叉敏感度<0.3%)、高达±20ppb的检测精度及0~1000ppb的宽量程。该传感器内置SHT4X温湿度传感器进行自动补偿,确保数据的长期稳定性;其小尺寸、低功耗的特性,可快速集成至智能家居、空气净化器、物联网环境监测等系统中,实现对甲醛浓度的精准、可靠监测。

不脱发的程序猿 301

在 Fiori Elements Object Page 的表格中用 UI.Hidden 隐藏列:语义、边界与落地实践全解析

摘要: Fiori Elements的Object Page表格中,UI.Hidden注解支持静态和动态隐藏列。动态隐藏分为两种:基于父实体属性隐藏整列,或基于子实体属性按行隐藏单元格。关键约束包括:支持服务端操作的列禁止使用动态隐藏,否则会导致UX不一致。ABAP CDS不支持路径式UI.Hidden,需改用XML注解。该功能需与UI.Importance、个性化等机制明确区分,避免混淆。对于可能参与排序/过滤的列,建议仅使用静态隐藏。实际应用中需注意注解位置(整列或单元格级)和业务场景的匹配。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 204

如何在KEIL中使用MicroLIB

MicroLIB 在keil 建立ARM的工程时其中有一项是选 use MicroLIB microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,例如,memcpy()。 与缺省 C 库之间的差异 microlib 与缺省 C 库之间的主要差异是: microl

我的blog屋 4006

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

为什么STM32重定向printf一定需要使用microLIB

摘要 在STM32开发中,重定向printf到串口通常需要改写fputc而非printf本身,因为printf的高级格式化输出最终依赖底层fputc实现字符传输。Keil MDK环境下,使用MicroLIB库可简化此过程:该库默认关闭ARM半主机模式(避免调试依赖),且代码体积更小。实现时只需勾选MicroLIB选项并重写fputc(调用HAL库/标准库/寄存器的串口发送函数)。若禁用MicroLIB,则需手动关闭半主机模式并补充相关函数。两种方法均通过底层I/O重定向达成调试输出功能,MicroLIB方案

m0_53223867的博客 1547

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

keil 用MicroLIB

串口printf()函数问题——Use MicroLIB keil应用小贴士:microLIB[Z] Use MicroLIB 在keil (我用的是realview mdk3.11)建立ARM的工程时其中有一项是选 use MicroLIB 由于对KEIL不是很熟悉,于是就查了查,得到了以下信息:microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深

bugouyonggan的专栏 2126

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

关注+星标公众号,不错过精彩内容作者 | strongerHuang微信公众号|嵌入式专栏我们在使用Keil MDK编程,用到printf打印输出时,通常都会使能Keil工具自带的微库...

strongerHuang 5103

Keil中Use MicroLIB的作用

microlib 是缺省 C 库的备选库。它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,例如,memcpy()。 与缺省 C 库之间的差异 microlib 与缺省 C 库之间的主要差异

u014717398的博客 1万+

1-MicroLIB与printf重定向

参考文章 使用MicroLIB原因 当前的嵌入式系统主流由C语言进行开发,大多需要使用到C语言标准库的功能,然而C语言标准库过于庞大,难以直接应用于嵌入式系统当中,需要对其简化,进而形成了MicroLIB库。 MicroLIB与C标准库区别 MicroLib 专为深度嵌入式应用而设计; MicroLib 经过优化,可以使用比使用 ARM 标准库更少的代码和数据存储器; MicroLib 设计为无需操作系统即可工作,但这并不妨碍它与任何操作系统或 RTOS(例如 Keil RTX)一起使用; MicroLi

DDTS_ZD的博客 1741

KeilMDK配置项中Use MicroLIB是干什么的

在Keil MDK建立STM32的工程时,其中有一项是选 use MicroLIB 由于对KEIL不是很熟悉,于是就查了查,得到了以下信息: microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO

xiayufeng520的专栏 1万+

keil应用小贴士:microLIB[Z] Use MicroLIB

在keil (我用的是realview mdk3.11)建立ARM的工程时 其中有一项是选 use MicroLIB 由于对KEIL不是很熟悉,于是就查了查,得到了以下信息: microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。 它的功能

skysword2009的专栏 1061

Use MicroLIB is what?

在Keil MDK建立STM32的工程时 其中有一项是选 use MicroLIB 由于对KEIL不是很熟悉,于是就查了查,得到了以下信息: microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且

goldage的博客 763
下一篇: 警告:returning pointer to local variable
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值