EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间
EFM32在IAR开发环境下指定代码,数据的存储空间
为了便于后续的项目升级,管理,需要对代码,数据的存储空间加以设定,也在网上找下相关的资料,笔者水平有限,
如下内容不一定完全正确,如有错误之后,还望帮忙纠正.首先,有必要了解一下IAR开发环境的ILINK,IAR的版本要
在IAR5.xx以后,本人是在IAR6.21版本之上调试,目前我也将版本更新到6.50了,推荐使用IAR更新版本的.
下载地址:http://pan.baidu.com/share/link?shareid=328871&uk=3842212607
破解补丁下载地址:http://download.csdn.net/detail/fzhiping2435118a/6644531
安装好IAR开发环境之后,我们可以打开IAR的帮助文档,查看关于ILINK的使用说明.打开help的下拉菜单,打开C/C++ Development Guide选项。
第一部分有详细讲述关于ILINK
其实,刚开始我们建立工程的时候也有使用到这个,可能没有引起关注,在Project->Options选项中,我们可以根据
实际MCU的memory和堆栈的大小在这里进行配置.我们打开这个*.icf文件看看具体的内容.*号是通配符,名称可以用
户自定义更改,下面是EFM32TG110F32时使用的ICF文件:EFM32TG110F32.icf这里其实主要定义了ROM,RAM和
堆栈的起始地址,结束地址.
/*###ICF### Section handledby ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/*IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
define symbol__ICFEDIT_intvec_start__ = 0x00000000;
/*-Memory Regions-*/
define symbol__ICFEDIT_region_ROM_start__ = 0x00000000;
define symbol__ICFEDIT_region_ROM_end__ =(0x00000000+0x00020000-1);
define symbol__ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol__ICFEDIT_region_RAM_end__ =(0x20000000+0x00004000-1);
/*-Sizes-*/
define symbol__ICFEDIT_size_cstack__ = 0x400;
define symbol__ICFEDIT_size_heap__ = 0x800;
/**** End of ICF editorsection. ###ICF###*/
define memory mem with size =4G;
define region ROM_region = mem:[from__ICFEDIT_region_ROM_start__ to__ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from__ICFEDIT_region_RAM_start__ to__ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size =__ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size =__ICFEDIT_size_heap__ { };
initialize by copy {readwrite };
do not initialize { section .noinit };
keep { section .intvec };
place at addressmem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK,
block HEAP };
我们可以在C程序当中的代码前使用,获取当前代码的位置.
#pragma location = ".xxx" 这里没有结束分号,xxx为自定义的变量.
然后就可以在icf文件中加上:
define symbol__ICFEDIT_region_DATRAM_start__ = 0x20000500;
place at addressmem:__ICFEDIT_region_DATRAM_start__ {section .xxx };
__ICFEDIT_region_DATRAM_start__是符号的名称,用户可自行定义.
这里的地址也需要根据自己的MCU定义.
这里需要注意的是:如果是定义的ROM的空间里面,那么ROM里面只能是readonly的属性,因此,
假如一个数组char array[10];那么它必须是char const array[10]; 这样才能正确的指定到具体地址去.
例如:
C程序:
#pragma location = ".test"
Char const array[10];
Icf文件:
place in ROM_region { readonly .test};/* ROM_region 可以自己定义*/
修改完成之后,我们可以进入DEBUG模式,打开View菜单下的memory选项,查看具体的地址中的内容是否与你需要的内容一致呢。动手看看吧.
EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间的更多相关文章
- 痞子衡嵌入式:在IAR开发环境下为工程开启CRC完整性校验功能的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下为工程开启CRC完整性校验功能的方法. CRC校验在嵌入式领域里的应用非常广,比如在通信领域,CRC检验值可以作为数据 ...
- 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...
- 痞子衡嵌入式:在IAR开发环境下RT-Thread工程函数重定向失效分析
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下RT-Thread工程函数重定向失效分析. 痞子衡旧文 <在IAR下将关键函数重定向到RAM中执行的方法> ...
- 痞子衡嵌入式:在IAR开发环境下将整个源文件代码重定向到任意RAM中的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将整个源文件代码重定向到任意RAM中的方法. 痞子衡旧文 <在IAR下将关键函数重定向到RAM中执行的方法> ...
- Python开发环境配置
好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...
- Visual studio 通用开发环境配置:SDL,FFMPEG为例
引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库 ...
- AndroidStudio开发环境配置-Windows
Android Studio开发环境配置-Windows 最近突发奇想,开始研究Android开发.开始时使用Eclipse作为开发IDE,结果各种不好使,首先下载和安装SDK,以及不同版本的Imag ...
- WIN10下java8的开发环境配置与第一个java程序
一.开发环境配置 1.在官网上下载jdk-8u111-windows-x64.exe 2.运行安装包,可以自定义安装路径 3.进入环境变量设置: 计算机右键-->属性-->高级系统设置-- ...
- Mac下golang开发环境配置
go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发. 下面介绍在Mac OS X中golang的开发环境配置. 1.安装brew brew是一个mac下的由ruby开发 ...
随机推荐
- IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★
IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...
- 开机时进入 grub rescue>的解决方法
本机是centOS7和win8的双系统 之前在win上把一个空的磁盘空间释放了 可能造成了grub的一些问题 具体还没有研究过 开机后无法正常进入grub引导画面 而是跳出一串英文+ grub res ...
- ZIOZIA_百度百科
ZIOZIA_百度百科 ZIOZIA
- Windbg调试命令详解(1)
转载注明>> [作者:张佩][镜像:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是 ...
- css中的@inport 与link
在html 代码中我们常常用分离的思想引入外部的css文件,常用的方法有2种,@import 语法: <style type="text/css" media="s ...
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- c++ 虚析构函数[避免内存泄漏]
c++ 虚析构函数: 虚析构函数(1)虚析构函数即:定义声明析构函数前加virtual 修饰, 如果将基类的析构函数声明为虚析构函数时,由该基类所派生的所有派生类的析构函数也都自动成为虚析构函数. ...
- Week13(12月2日):又到了那个点,期末了~~~~
Part I:提问 =========================== 1.ASP.NET MVC是微软.NET平台上的一个( ). A.语言 B.集成开发环境 C.Web开 ...
- 编译原理Tiny语言的定义
Here is the definition for Tiny language The Tiny lexicon is as follows: Keywords: IF ELSE WRITE R ...
- vnc server配置、启动、重启与连接,图形管理linux系统
环境:RedHat Linux 5企业版.Xwindows:gnome (红帽默认安装的图形界面) 尽管我们可以使用SSH连接远程通过字符界面来操作Linux,但是对于更多熟悉图形人来说是很不方便的, ...