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++的更多相关文章
- KEIL的ARM编译器对RW和ZI段的一个处理
按照C编译器编译的结果,一般会产生RO段,RW段,ZI段.RO是程序中的指令和常量,RW是程序中的已初始化全局变量,ZI是程序中的未初始化或初始化为零的全局变量. 那么如下的代码 int aaa; i ...
- 使用keil判断ARM的冷启动和热启动的方法
微处理器:LPC2114 编译环境:Keil MDK V4.10 思路: 常把单片机系统的复位分为冷启动和热启动.所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x0 ...
- ARM 开发工具 Keil和DS-5的比较。
http://www.eeboard.com/bbs/thread-25219-1-1.html 如今ARM体系架构的处理器在嵌入式市场上呼风唤雨,从低端的MCU应用到高端的多媒体消费电子,移动设备领 ...
- Keil C51 与 ARM 并存方法
第一:先安装keil C51 V4.01(如果先安装ARM的话还没有试过,应该也是可以的)到文件夹keil C51,运行破解补丁,选择C51版本,RealView MDK Professional进行 ...
- Keil C51与Keil ARM共存
转自:http://blog.chinaunix.net/uid-20734916-id-3988537.html Keil和MDK共存,按照以下步骤:1 先安装 Keil C51,安装目录改为:&q ...
- GCC KEIL ARM编译器
经常用keil,也听说IAR的编译效率很高,原来C51时用proteus,最近proteus8开始支持stm32,所以在研究用keil5+HAL+proteus学习STM32F. 问题:因为prote ...
- 【转载】Keil中的USE MicroLib说明
在keil建立ARM的工程时 其中有一项是选 use MicroLIB 由于对KEIL不是很熟悉,于是就查了查,得到了以下信息: microlib 是缺省 C 库的备选库. 它旨在与需要装入到极少量内 ...
- 在keil 4中添加stc系列芯片的方法--【sky原创】
在keil 4中添加stc系列芯片的方法: 1.从官网下载uv3.cdb的文件网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb:3. 然后将[S ...
- KEIL、uVision、RealView、MDK、KEIL C51区别比较
KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251 从接触MCS-51单片机开始,我们就知道有一个 ...
随机推荐
- MyBatis基本工作原理
Application是程序员开发的Java代码,蓝色为MyBatis框架. API是MyBatis提供的增删改查等功能接口. 老式SQL写法我们在Dao中写SQL: SELECT * FROM us ...
- Thinking in java note1
Part information collecting from http://blog.csdn.net/leonliu06/article/details/78638841 1. 如果已经定义了一 ...
- python fromkeys() 创建字典
# d = dict.fromkeys("张无忌","赵敏") #创建字典 # print(d)#{'张': '赵敏', '无': '赵敏', '忌': '赵敏 ...
- ResourceNotFound: rosbridge_server
Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking ...
- js urlencode
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- express 调优的一个过程和心得,不错的文章
Netflix的软件工程师Yunong Xiao最近在公司的技术博客上写了一篇文章,分析了他所在的团队在将Netflix网站UI转移到Node.js上时遇到的延迟问题.在文章中他描述了找到问题根本原因 ...
- javascript遍历json对象数据的方法
JSON中,有两种结构:对象和数组,对象是没有length这个属性,而数组结构是有的,下面分别说下这两种结构之间的区别和遍历方式. 1.对象 一个对象以“{”开始,“}”结束.每个“key”后跟一“: ...
- PHP------数组和对象相互转化,stdClass Object转array
数组转JSON PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE . JSON转数组 PHP json_decode() ...
- Python小工具之消耗系统指定大小内存
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import re import time def print_help(): print ' ...
- java并发编程:线程安全管理类--原子操作类--AtomicBoolean
1.类AtomicBoolean