IAR相关

1、是用软件提供的字体

如果只想简单的设置,可进行如下设置
Tools->IDE Options->Editor->Colors and Fonts->Editor Font->Font
但是这里边似乎也没有什么舒服的字体,在网上找了找,还真找到了一个比较不错的字体,现呈现给大家

2、使用系统提供的字体

IAR的 用户配置文件 在这里进行替换即可。
winxp 盘符:\Documents and Settings\用户名\Application Data\IAR Embedded Workbench\IarIdePm.ini
win7 盘符:\Users\用户名\AppData\Roaming\IAR Embedded Workbench\IarIdePm.ini
[Common]
Fonts=_ -13 0 0 0 400 0 0 0 0 1 2 1 49 "Courier" -14 0 0 0 400 0 0 0 134 3 2 1 2 "宋体"
Fonts=_ -16 400 3 2 1 49 "Courier New" 15
-最前面-13 -16 -14是字体大小

-[Common]是指公共的字体
所以,要想改变编辑器里的字体和字号,可以手工编辑IarIdePm.ini文件中
[TextEditor]最底下的Fonts值,
我的原先是“Fonts=_ -13 400 3 2 1 49 "Courier New" 15”,
改成“Fonts=_ -16 400 3 2 1 49 "Consolas" 15”
后再打开IAR就变成了12号的Console字体了。

3、快速修改模板

修改快速模板的使用价值,本人亲自并且一直使用快速模板添加函数头注释,添加常见的For循环,case语句等非常实用。

语法简单易懂,稍加研究就会使用,修改快速模版,用到的文件就是 CodeTemplates.ENU.txt(和IarIdePm.ini在同一文件夹下)

作者:Arvin

出处:http://www.cnblogs.com/zhsh641/

微博:Arvin641

email:zhsh641@163.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

(直接点击图片可进入调查页面)

开发板测评图片
围观 631

其实关于Flash调试和RAM调试的概念,我也是从调试Kinetis的时候才开始接触,最初只是随便用用,没有深究,之后用的多了才开始深入研究两者之间的区别,发现里面大有文章可作,这也是我为什么后来又把本文的前缀改成【原创精品】的缘故,翻看了网上的一些资料,大多是授人以鱼的文章,所以觉着有必要在这里谈谈自己的一点看法,做个笔记。

最近一直埋头于毕业论文的撰写当中,真是有种“两耳不闻窗外事,一心只写毕业论文”的感觉啊。成天大眼对小眼地面对着word、viso和知网客户端等等文字编辑工具真是有种麻木的赶脚,不写论文不知道,一写论文吓一跳,感觉让我写上几万行代码也比坐在电脑面前憋出几万字论文来的轻巧,“问君能有几多愁,恰似一江春水向东流”,哎,突然间发现,人生最最痛苦的不是人死了钱没花了,而是写了十几天的论文才发现,晕,还有一多半没写呢,不过木有办法,只能硬着头皮上了,再此之前还是更篇博客为好,不然该沉底落灰了(话说貌似断更了好长时间了,不过幸好不是写小说,不然该被拍砖了),哈哈~

闲话少说,下面进入正题。其实关于Flash调试和RAM调试的概念,我也是从调试Kinetis的时候才开始接触,最初只是随便用用,没有深究,之后用的多了才开始深入研究两者之间的区别,发现里面大有文章可作,这也是我为什么后来又把本文的前缀改成【原创精品】的缘故,翻看了网上的一些资料,大多是授人以鱼的文章,所以觉着有必要在这里谈谈自己的一点看法,做个笔记:


上图为在IAR环境下的Flash调试界面和RAM调试界面

首先说说什么是Flash调试和RAM调试,Flash调试就是通常意义下的普通调试,即将编译链接之后的code下载到单片机的ROM区,数据放到RAM区,然后进行调试;而RAM调试则是将数据放到RAM区的同时再从RAM区中额外开辟出一段空间存放可执行code,这样就是code和数据同时运行在RAM区里面。

至于为什么要刻意区分出这两种调试方式,其实在低端MCU领域是没有RAM调试这个概念的,其中很大一部分原因是它没有足够大的RAM空间在存放编译后code代码的同时仍然可以拿出额外的空间作为数据RAM的,而在高端MCU领域中,比如ARM,动辄几十KB的RAM是很常见的,在不运行超大工程的情况下是完全可以拿出一部分空间运行代码的,所以也就出现了RAM调试这种方法了。

相比于Flash调试,RAM调试则与生俱来的带来两个最大的先天优势,一个是RAM的可擦写的次数理论上是无限的,在调试代码的期间我们往往是需要不断下载更新的,而Flash的擦写次数是有限的(一般几万次、几十万次不等,虽然看起来足够多,但是也心疼的慌),因此在调试期间我们可以选择RAM调试;另一个方面,则更是RAM调试的强项(Flash真够悲催的),在RAM区的代码执行速率和效率远高于需要不断地读写Flash区代码的,这点毋庸置疑,所以在当今智能手机比拼硬件的时代,我们选择一款强大的CPU是应该的,但是要想让系统运行的更流畅,足够大的机载RAM是必须的,呵呵。当然RAM调试的缺点是掉电丢失,在RAM区运行的代码在掉电的情况下是不会被保存的,下次上电单片机仍然会执行Flash区内部的老的代码,这点是需要注意的,很多人忘记考虑这点,在RAM调试功能完毕,等拿到现场单片机独立运行的时候却发现程序是不对的,咳咳,那当然不对啦。。。

理论部分介绍完毕,下面我们结合IAR开发环境来分析一下怎么实现Flash调试和RAM调试的。其实我们仔细研究发现,Flash调试和RAM调试在IAR下的区别只是.icf配置文件的不同罢了,其实很简单很容易理解,也就是把单片机的内存映射改变了,下面单拿出两者不同的部分晒出来(重要部分加了注释,供参考):

flash调试的256KB_Pflash.icf文件:

/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00000000;/* 中断向量的起始地址为ROM的首地址 */
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x0;
define symbol __ICFEDIT_region_ROM_end__ = 0x00040000;/* 256k ROM空间 */
define symbol __ICFEDIT_region_RAM_start__ = 0x1fff8410;
define symbol __ICFEDIT_region_RAM_end__ = 0x20000000;

define exported symbol __VECTOR_TABLE = 0x00000000;/* 中断向量表放在ROM区0起始地址 */
define exported symbol __VECTOR_RAM = 0x1fff8000;

define symbol __code_start__ = 0x00000410;/* 代码开始区地址在ROM区 */

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place at address mem:__code_start__ { readonly section .noinit };

place in ROM_region { readonly, block CodeRelocate}; /* 将只读代码放到ROM区 */

place in RAM_region { readwrite, block CodeRelocateRam,
block CSTACK, block HEAP };
RAM调试的64k_ram.icf文件:

/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x1fff8000;/* 中断向量的起始地址为RAM的首地址 */
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x0;
define symbol __ICFEDIT_region_ROM_end__ = 0x0;/* 将ROM空间置0 */
define symbol __ICFEDIT_region_RAM_start__ = 0x1fff8000;
define symbol __ICFEDIT_region_RAM_end__ = 0x20000000;

define exported symbol __VECTOR_TABLE = 0x1fff8000;/* 中断向量表放在RAM区首地址 */
define exported symbol __VECTOR_RAM = 0x1fff8000;

define symbol __code_start__ = 0x1fff8410;/* 将代码开始区地址在RAM区 */

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place at address mem:__code_start__ { readonly section .noinit };

place in RAM_region { readonly, block CodeRelocate }; /* 将只读代码放到RAM区 */

place in RAM_region { readwrite, block CodeRelocateRam,
block CSTACK, block HEAP };

上面的代码我就不多做详细解释了,通过注释和对比估计大多数博友应该会理解了,不明白的地方欢迎下面留言共同探讨。

作者:jicheng0622博客。

围观 490

新建一个IAR工程有两种方法,新建工程有两种方法,一种是使用工程模板,另一种是使用已存在的工程来建立另外一个工程。这里讲第一个方法,第二个方法很简单,书稿上有阐述。

一、新建第一个IAR工程

用IAR首先要新建的是工作区,而不是工程。在工作区里再建立工程。

1)建立工作区间

新建IAR工作空间,首先是菜单File里选择Open再选择Workspace,如下图红圈所示。

接着就会看到一片空白。这时就是新的“办公区”了。

有了工作空间就可以建立工程了。

2)建立工程

菜单Project-Create New Project。点了之后出现下面这个对话框。

上面图中有个Tool Chain:ARM,这里选的是芯片的类型, IAR有很多很多专用的环境,比如ARM的,430的,8051的等。这里只有ARM,相当于没得选。它的下面有个Project templates(工程模板),然后是asm,c++,c等,选择用户使用的开发语言,我们选C。展开C前面的+号,显示如下图(上个图的局部)

用鼠标点下main之后再点OK。

3)保存

新建工程就剩下最后一步了,保存。

在文件名后面填个名字保存。注意,在关闭IAR时或关闭IAR空间时,还会提示要求保存工作空间。别一不小心关完了。IAR工作空间文件后辍是.eww。IAR工程的后辍名是.ewp。eww和ewp文件都会关联到IAR,不过eww文件才能正确的自动打开,而ewp文件必须先打开IAR,再导入工程才可用,这样太麻烦了,还是保存eww文件来得方便。

二、项目的设置

1)弹出设置对话框

在工程名上点右键,选择options,或者点菜单——“Project”——“Options” 进入,或者按快捷键Alt+F7
下面进入设置,这里只说明几种基本设置,具体的还得根据自己需要来调整。没有出现设置栏目就保持默认。

2)先选择芯片的型号。我们用的是K60,这里选Freescale K60Xxxx 。

3)编程语言栏目设置。以C语言为例,如果是C++就选C++ 。

4)这里设置的是编译后是否要生成BIN、HEX 文件。

5)Linker的设置,这里记录着储存的地址。

6)调试工具的设置,

这里选择ST-Llink 的调试方式,这里我选 SWD 。

A)如果使用JTAG写入器,则在驱动中选择

B)如果使用J-Link写入器,则在驱动中选择

基本设置就这样了,具体得根据自己情况修改。

围观 1422

页面

订阅 RSS - IAR相关