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

A. 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 };

B. 大佬们,紧急求助!!! IAR运行程序出问题了

icf是链接文件,里面有很多内容,但我们一般用来指定rom、ram、stack、heap相关的起始地址、结束地址和大小。不指定使用默认的也是可以,除非你在程序里面有针对上面4个方面的特殊操作。所以你试试在project菜单下,找到options,打开linker选项,去掉,找到config下面的选项,去掉勾选override default框选,然后再编译应该就可以了

C. icf文件如何创建

在单独的计算机中,ICF将跟踪源自该计算机的通信。与ICS一起使用时,ICF将跟踪所有源自ICF/ICS计算机的通 高级ICF设置——ICF安全记录功能可以提供一种方式来创建防火墙活动的日志文件。ICF能够记录被许可的和被

D. LPC1700如何在flash上调试STM32有一个……_flash.icf文件,LPC有吗

有,icf文件时IAR软件定义的FLASH地址,其他开发软件没有文件格式的,貌似!

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

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

F. STM32 IAR跨工程调用模块(函数)问题,可能与分散加载有关系。

我最近也才写完IAP,采用的是串口烧写,而且是传一点,写一点,flash代码不到8K,ram估计也是几k吧。你只能精简USB OTG那里的代码,把无用的全部去除以减少代码量,至于共用代码,没研究过,但估计需要用汇编语言能实现,不然你只能在如何在APP中手动添加IAP代码中的USB函数指针,而且需要找准IAP中的USB otg相关函数地址,而且这个地址会不会因为你修改了IAP然后重新编译后函数地址变了,那就有得改了哦。

G. 一个iar flash调试的问题

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

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

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

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

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

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

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


赞 (0)