MicroLIB.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MicroLIB

MicroLIB 在keil (我用的是realview mdk3.11)建立ARM的工程时 其中有一项是选 use MicroLIB 由于对KEIL不是很熟悉,于是就查了查,得到了以下信息: microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,例如,memcpy()。 与缺省 C 库之间的差异 microlib 与缺省 C 库之间的主要差异是: microlib 不符合 ISO C 库标准。 不支持某些 ISO 特性,并且其他特性具有的功能也较少。 microlib 不符合 IEEE 754 二进制浮点算法标准。 microlib 进行了高度优化以使代码变得很小。 无法对区域设置进行配置。 缺省 C 区域设置是唯一可用的区域设置。 不能将 main() 声明为使用参数,并且不能返回内容。 不支持 stdio,但未缓冲的 stdin、stdout 和 stderr 除外。 microlib 对 C99 函数提供有限的支持。 microlib 不支持操作系统函数。 microlib 不支持与位置无关的代码。 microlib 不提供互斥锁来防止非线程安全的代码。 microlib 不支持宽字符或多字节字符串。 与 stdlib 不同,microlib 不支持可选择的单或双区内存模型。 microlib 只提供双区内存模型,即单独的堆栈和堆区。 可以合理地将 microlib 与 --fpmode=std 或 --fpmode=fast 配合使用。 microlib 中的函数负责: 创建一个可在其中执行 C 程序的环境。 这包括: 创建一个堆栈 创建一个堆(如果需要) 初始化程序所用的库的部分组成内容。 调用 main() 以开始执行程序。 要使用 microlib 构建程序,必须使用命令行选项 ??library_type=microlib。 根据需要,编译器、汇编程序或链接器可使用此选项处理不同的文件。 将此选项与链接器配合使用时,将覆盖所有其他选项。 Example 3.1 说明了编译器使用此选项的情形,它仅为 main.c 文件选择了 microlib。 Example 3.1. 编译器选项 armcc ??library_type=microlib ?c main.c armcc ?c extra.c armlink ?o image.axf main.o extra.o Example 3.2 说明了汇编程序使用此选项的情形,它仅为 more.s 文件选择了 microlib。 Example 3.2. 汇编程序选项 armcc ?c main.c armcc ?c extra.c armasm ??library_type=microlib more.s armlink ?o image.axf main.o extra.o more.o Example 3.3 说明了链接器使用此选项的情形,它为 main.c 和 extra.c 文件均选择了 microlib。 Example 3.3. 链接器选项 armcc ?c main.c armcc ?c extra.c armlink ??library_type=microlib ?o image.axf main.o extra.o 使用MicroLIB: 3.3.1. 创建堆栈 可通过将符号 __initial_sp 定义为与堆栈顶部相等来指定初始堆栈指针。 初始堆栈指针的对齐边界必须为 8 字节的倍数。 Example 3.4 说明了如何使用汇编语言来设置初始堆栈指针。 Example 3.4. 汇编语言 ???? EXPORT __initial_sp __initial_sp EQU 0x100000???????? ; equal to the top of the stack Example 3.5 说明了如何使用 C 中的嵌入式汇编程序来设置初始堆栈指针。 Example 3.5. C 中的嵌入式汇编程序 __asm void dummy_function(void) { ???? EXPORT __initial_sp __initial_sp EQU 0x100000???????? ; equal to the t

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档