Keil for ARM与C++

1. 如果你的程序中使用了C++全局变量,那么*不要*使用MicroLIB,否则Keil会说某某Symbol找不到

2. 不使用MicroLIB带来的一个问题是KEIL会使用semihosting SWI完成sys_io(例如printf的时候),我们需要一个retarget.c来禁止semihosting。KEIL提供该文件的模版(包括最小版和完全版,见下文),改改就是了

3. retarget.c也有最小版和完全版;最小版除实现fputc及辅助函数用于printf外,只实现了sys_io中的_sys_close;完全版还实现了_sys_open,_sys_read,_sys_write,等等。如果实现了sys_io中除_sys_close以外的任意一个,那么就必须同时实现其他函数。即,要么最小版,要么完全版,不存在中间版。当使用C++标准库时可能需要完全版:例如使用complex template时就必须使用完全版的retarget.c,因为complex class实现了“<<”和“>>”运算符重载,需要_sys_open等函数。当然我们一般不需要完整的函数内容,只要让编译器看到函数定义就行了。

4. 使用new和delete:参考帮助文件的Libraries and floating point support guide -> The ARM C and C++ libraries -> Stack pointer initialization and heap bounds

一般来说KEIL或厂家(如ST)提供的启动文件已包含该项支持;将汇编启动文件中的heap size项改改就好了。

5. 顺便说下如何动态控制printf的精度(同样用于snprintf,etc):使用%*控制。例如printf("%.*f ", 2, 1.234)

6. 科学记数法打印:%e

Keil for ARM与C++,布布扣,bubuko.com

时间: 2024-12-09 06:11:13

Keil for ARM与C++的相关文章

[蓝牙] 3、&lt;KEIL path&gt; \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_hrs BLE心率检测工程

Heart Rate Example The Heart Rate Application is a firmware example that implements the Heart Rate profile using the hardware delivered in the nRF51822 Development Kit. The source code and project file can be found in the <InstallFolder>\Nordic\nrf5

GCC KEIL ARM编译器

经常用keil,也听说IAR的编译效率很高,原来C51时用proteus,最近proteus8开始支持stm32,所以在研究用keil5+HAL+proteus学习STM32F. 问题:因为proteus的对stm32的仿真只支持.elf文件格式(GCC编译器的输出文件),而keil只能生产.alf和hex所以跑不起来. 查找:那keil能否用GCC呢?网上找到是可以的,在keil官网上http://www.keil.com/arm/gnu.asp查到和另一篇文章: 实际上为了怕配置后在用KEI

Keil C51与Keil ARM共存

转自:http://blog.chinaunix.net/uid-20734916-id-3988537.html Keil和MDK共存,按照以下步骤:1 先安装 Keil C51,安装目录改为:"D:\Keil2"(我是安装在D盘的)2 再安装RealView MDK,目录:"D:\Keil" 3 把Keil2下的C51文件夹全部复制到 Keil下4 把Keil2下的 UV4(或者UV3)下的所有文件复制粘贴到 Keil下的UV4文件夹里,注意,如果提示有  重复

keil c51 和keil mak(arm)如何安装在一起的问题

这问题是我最近遇到的,刚开始卸来卸去很麻烦.在网上搜的方法也不好用,就想想搞了一下能行. 言归正传: 准备:keil 4 c51 和 keil 4 arm两个安装包和一个注册机(我用的两个都是keil4的): 安装:[1]在e盘(我win8.1)j建两个文件夹,(我取的名字“keil4c51”和“keil4arm”): [2]安装keil c51到建的文件夹里(不多说):安装keil mdk到另外的一个文件夹里,都不用破解(先==):   [3]把keil4c51文件夹里的c51文件夹复制到ke

【转载】Keil中的USE MicroLib说明

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

IAR FOR ARM 各版本号,须要的大家能够收藏了

首先感谢大家的支持与关注,如今应该又一次编辑这篇文章了,这篇文章是非常久曾经不知在什么地方Copy过来的, 非常多问题不知怎么解决,如今我用的是KEIL for arm. 用过Keil和IAR,个人感觉是IAR还是非常不错的.下载地址是: http://files.iar.com/ftp/pub/box/CD-EWARM-6301-3142.zip       V6.30.1(该地址看着像是IAR站点的,不知是不是O(∩_∩)O~) 以下再给大家一些以往的版本号下载地址 http://files

旧文-使用Sourcery G++ Lite Edition + keil 进行开发ARM- 2010年02月21日 10:43

一致使用winarm + keil进行ARM开发,但是兼容性不好,例如有时候无法链接,而且WINARM已经很长时间没有更新了,故决定使用Sourcery G++ Lite Edition替换WINARM. 主要遇到了一下几个问题: 1,无法链接_isatty()函数. 把原来的isatty()函数改名为_isatty()即可. 2,(.ARM.exidx+0x0): undefined reference (.ARM.exidx+0x0): relocation truncated to fit

单片机(simple chip microcomputer)概论、51单片机、MCS-51单片机、STM32、ARM

catalogue 1. 单片机概论 2. 51单片机 3. MCS-51单片机 4. QX-MINI51开发板(STC89C52芯片) 5. STM32单片机 6. stm32f103zet6开发板实验 1. 单片机概论 0x1: 仿真器 单片机应用系统的软硬件调试需要专门的开发工具,称为"单片机开发系统"或"仿真机".常用的开发方式是把开发系统(例如PC)中的CPU和RAM暂时出借给用户系统,利用开发系统对用户系统的软硬件进行调试(又称仿真),然后将调试好的程序

KEIL、uVision、RealView、MDK、KEIL C51之间比较

KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251 从接触MCS-51单片机开始,我们就知道有一个叫KEIL的软件.在开发单片机时,使用的是C语言或者汇编语言,我们知道,这两种语言都不能直接灌到单片机里面,执不执行暂且不说,光是代码的体积,就足以撑破整个单片机.所以,我们需要一个软件,把C语言或者汇编语言编译生成单片机可执行的二进制代码,而且它的体积也非常的小,足够存放在单片机的存储器里面. K