iar中的icf文件|IAR 中后缀 icf xcl 文件 是什么样的文件 有什么用途

|

㈠ 为什么IAR没有config.h

flash RAM大小不匹配,空间不足。修改icf文件及los_config.h里的mem大小。 遇到能够进到reset_Handler中,但是无法到达main函数的问题时,说明启动没梁是OK的,向量表完成了映棚察正射,引导了reset_Handler下,无法跳转到main函数,优先考虑芯链悔片选型、flash、RAM大小等是否匹配,以及是否存在过大的数组导致内存不够。(2)Flash download warning: 386104 out of 386104 bytes from data record CODE:[0x08080020,0x080DE457] will not be flashed, 更换jlink即解决该问题。

㈡ 请教在IAR中,全速运行正常,复位重启后不正常了

你查看你是不是包含了链接文件(icf文件),并在链接文件中定义了代码的ROM起始地址不是你芯片默认的起始地址。一般要做了iap,在app调试时经常出现这样的情况:仿真正常,离线无法运行。解决方法是:要么正确设置ICF文件rom起始地址或取消ICF文件,要么把配套的IAP代码段先写进flash

㈢ IAR怎样建—FLASH工程

一、生成一个新项目要使用IAR进行STM32嵌入式系统开发,必须从建立一个项目(project)开始,下面以在E:\下建立一个名为Example的项目为例介绍。1. 创建项目目录、复制公共文件(1)在E盘下创建名为的Example文件夹,即项目根目录为E:\Example。(2)在项目根目录下建立一个EWARMv5文件夹用于存放项目文件、工作空间文件和项目配置相关文首梁棚件。(3)解压标准外设驱动文件库(stm32f10x_stdperiph_lib_V3.1.2.zip),将其中的“Libraries”文件夹复制到Example目录下。(4)复制标准外设驱动库目录Project\Template下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件到Example文件夹下。main.c可以不用复制,我们自己写。复制标准外设驱动库目录Project\Template\EWARMv5下的stm32f10x_flash.icf、stm32f10x_flash_extsram.icf、stm32f10x_nor.icf和stm32f10x_ram.icf到Example\EWARMv5文件夹下。复制好的目录如图1所示。图1. Example文件夹下的文件2. 创建新的工作空间嵌入式系统开发大都是面向项目(Project)的,需要建立渣厅Project来管理项目开发。IAR EWRAM又是基于工作空间(Workspace)的集成开发环境,Project必须放在工作空间里面,所以我们首先应该建立工作空间。一个工作空间里面可以放多个项目。开始?程序?IAR Systems?IAR Embedded Workbench,进入IDE环境。File ?New?Workspace。这样工作空间就建好了,但是这个工作空间里面还没有项目,所以还不能保存,下面将在这个工作空间里面建立新项目。3. 创建新项目在上面第2步已经建立好的工作空间里创建新项目。Project?Create New Project。弹出“Create New Project”对话框,“Tool Chain”选择ARM,“Project Template”选择Empty project模板,这样所有的文件都由用户自己来写。点击OK,弹出“另存为…”对话框,选择我们刚刚建好的Example目录下的EWARMv5文件夹下,然后输入工程名 ,这里我输入Template,然后点击保存。这样一个名为Template的IAR EWARM项目就建好了,下面我们添加一些文件,然后再修改一些参数,使得这个项目真正地能够使用。4. 添加文件到项目(1)文件分组按说现在就可以往项目里面添加文件了,但是由于ARM系统开发涉及文件较多,类型繁杂,加上我们使用ST公司的标准固件库驱动文件,这样就要添加很多文件到项目里,随着项目的复杂程度加大,文件的数量是很多的。为了便于管理,我们将这些文件在项目里分组保存,IAR EWARM支持文件分组。在IDE左侧的Workspace里面,我们在刚刚建立的Template项目上点右键,选择Add? Add Group…。在弹出的对话框里面输入组名(Group Name),点OK即可。我们将添加如下几个组,如图2所示。从图2可见,项目名字后面有个星号(*),这是说明项目或工作空间已经修改,但是还没有保存,现在点File?Save All,这时弹出对话框让我们保存工作空间。还记得工作空间吗?第2步我们新建的工作空间,但是当时没有保存,因为当时工作者则空间里面没有项目,不能保存。输入工作空间名Template,然后点保存,这时候项目后面的星号*消失。注:工作空间扩展名.eww,项目扩展名

㈣ 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 };

㈤ 如何使用C90TFS flash驱动实现kinetis芯片的flash

安装好C90TFS flash之后,可以从如下的路径找到KL25的相关代码。安装路径\Standard Sotfware Driverv101\C90TFS\Demos\build\MKL25Z128xxx4可以看到,供有两种编译器的代码,分别为IAR以及CW10.4, CW10.4 的工程可以用CW10.4及其以后的版本打开。IAR的工程可以使用IAR embedded workbench for ARM 6.4.2之后的版本打开。 打开路径下IAR的工程,可以看到C90TFS具体包含的KL25flash例程情况,如下图: 从上图中可以看到,一共具有4个碧银弊例程, 具体例程的功能已经在图中标出。本次例程讲解使用demo_normal例程,旨在让大家熟悉C90TFS flashAPI函数的使用。2、 C90TFS flash例程配置文搏液件情况 这里以demo_normal 工程为例,讲解配置文件。程序一共有两种运行方式, 分别为从RAM运行,以及从Flash运行。通过配置相应的.icf文件(IAR)或者.ld文件(CW 10.x)实现。 IAR中,.icf文件可以打开project后在link_file文件夹下找到。CW中,.ld 文件可以打开project后在project_settings->linker_files文件夹下找到悔族。这里以CW工程为例讲解,IAR的情况也类似,主要是空间的起始结束地址,以及堆栈分配,中断向量的分配等。(1) CW16KB_Ram.ld (2) CW128KB_Pflash.ld 3. 测试平台CW10.6 以及TWR-KL25Z48M。选择使用CW10.6,是因为,测试的时候,可以直接看出哪些代码在编译范围内,便于查看代码,

㈥ IAR 中后缀 .icf .xcl 文件 是什么样的文件 有什么用途

大家好啊小弟问个幼稚的问题NXP系列的ARM在IAR中用J-link调试时,项目选项中的linker:连接器命令文件(.icf)怎么搞,去什么地方下载,还是自己制作啊小弟迷茫中,吃不好喝不好的,谢谢大哥大姐们了,给条明路吧,搞开始搞ARM大家好啊小弟问个幼稚的问题NXP系列的ARM在IAR中用J-link调试时,项目选项中的linker:连接器命令文件(.icf)怎么搞,去什么地方下载,还是自己制作啊小弟迷茫中,吃不好喝不好的,谢谢大哥大姐们了,给条明路吧,搞开始搞ARM

㈦ IAR用JLINK调试S3C2440 ARM芯片中的链接其命令文件(.icf)怎么弄啊(按照LPC2103命令文件弄不行)

1,进入“OPTION”,在项目文件上右键;2,进入“linker”中的“config”下的“override default”;3,调入你所有的"s3c2440….icf"

㈧ 一个iar flash调试的问题

可否贴上自定义的icf文件和官方例程的icf文件内容

㈨ IAR 5.50 for ARM在那里指定代码段的位置

在options for node“项目”,子项Linker中Config下,Linker configuration file中Edit,以及Debugger中Setup下,Setup macros使用mac文件定制。

㈩ 如何在IAR for ARM中定义常量或数组到flash而不是RAM中const,__flash关键字都不行,网上说加一个编译开

我对你问题的理解:程序中的任何数组定义都是暂存在Ram中的,如果你要写到Flash中,断电后还能保留的话?需要对硬件进行操作。看你用什么硬件,查看该单片机的操作手册,用户使用手册之类的,看对Flash怎么操作,一般是通过配置寄存器,将数据写到Flash中。定义常量或数组直接到Flash,这个功能很好,如果真如网上所说加一个编译就可以,那我也要学习学习。


赞 (0)