搜索
bottom↓
回复: 8

kl25z64使用IAR自带的ICF文件编译报错,请问如何解决?

[复制链接]

出20入12汤圆

发表于 2015-4-17 10:55:03 | 显示全部楼层 |阅读模式
kl25z64原来使用IAR6.4,现在使用IAR7.3后ICF文件不用过去的FREEDOM版本,使用IAR自带的ICF文件编译报错


Error[Li005]: no definition for "__VECTOR_RAM" [referenced from D:\work..\build\FLASH_64KB\Obj\startup.o]

Error[Li005]: no definition for "__VECTOR_TABLE" [referenced from D:\work..\build\FLASH_64KB\Obj\startup.o]

Error[Li005]: no definition for "__BOOT_STACK_ADDRESS" [referenced from D:\work..\build\FLASH_64KB\Obj\vectors.o]


请问如何解决?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-4-17 11:12:52 | 显示全部楼层
如果你用的是飞思卡尔官网提供的KL25_SC里程序,那么程序在启动时(startup.c里)需要这些区域的定义。
你可以改写那个icf,或者用老的icf

出20入12汤圆

 楼主| 发表于 2015-4-17 11:59:01 | 显示全部楼层
把IAR7.3里带的新ICF文件改写如下后,程序莫名复位,唉

/*###ICF### Section handled by 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__   = 0x0000ffff;
define symbol __ICFEDIT_region_RAM_start__ = 0x1ffff800;
define symbol __ICFEDIT_region_RAM_end__   = 0x1fffffff;



define exported symbol __VECTOR_RAM        = 0x1ffff800;     //我增加的

define exported symbol __VECTOR_TABLE      = 0x00000000;     //我增加的

define exported symbol __BOOT_STACK_ADDRESS = 0x200017f0;     //我增加的



/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__   = 0x800;
/**** End of ICF editor section. ###ICF###*/

define symbol __region_RAM2_start__                 = 0x20000000;
define symbol __region_RAM2_end__                         = 0x200017ff;

define symbol __FlashConfig_start__                        = 0x00000400;
define symbol __FlashConfig_end__                   = 0x0000040f;

define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to (__FlashConfig_start__ - 1)] | mem:[from (__FlashConfig_end__+1)  to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__] | mem:[from __region_RAM2_start__ to __region_RAM2_end__];

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

define region FlashConfig_region = mem:[from __FlashConfig_start__ to __FlashConfig_end__];

initialize by copy { readwrite };
do not initialize  { section .noinit };

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

place in FlashConfig_region {section FlashConfig};

place in ROM_region   { readonly };

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

出20入12汤圆

 楼主| 发表于 2015-4-17 12:08:22 | 显示全部楼层
忘记说了,硬件及程序使用IAR6.4都正常

出0入0汤圆

发表于 2015-4-17 14:52:11 | 显示全部楼层
gaolf_2012 发表于 2015-4-17 11:59
把IAR7.3里带的新ICF文件改写如下后,程序莫名复位,唉

/*###ICF### Section handled by ICF editor, don' ...

建议你下载一天攻破K60/KL26 PDF教程分享【集齐 视频、PDF、书、代码】帖子里那个   一天攻破K60_KL26.pdf 文档。

参考18/231页对于icf各段介绍,结合原来64K那个icf在新的icf上进行修改。

出0入0汤圆

发表于 2015-4-17 15:33:16 | 显示全部楼层
看上去蛮麻烦的,楼主努力啊!出点教程给大家分享一下。

出0入0汤圆

发表于 2015-4-30 10:02:41 | 显示全部楼层
非常感谢你关于Kinetis的技术问题。如果你没有其他问题,我们将此帖默认为已解决.

出0入0汤圆

发表于 2015-4-30 10:27:26 | 显示全部楼层
E问不是说没有定义吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 09:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表