Keil C51 未调用函数没有提示却直接编译了进去? NOOVERLAY

[复制链接]
 楼主| AVRx007 发表于 2009-12-15 09:30 | 显示全部楼层 |阅读模式
本帖最后由 AVRx007 于 2009-12-15 09:37 编辑

现在手上的一个工程,代码用的差不多(63K多,还没写完),优化却好像没有起作用

程序空间 64KB
前面 40KB是 MaskROM,厂家已经固化了代码在里面,用 *.LIN 锁定了地址, 通过*.LIB *.h来被调用
       *.LIN 里面指定了 部分 BIT,DATA,IDATA,XDATA,CODE 的编译位置,用定位MaskROM部分代码

后面 24KB是 SRAM(CODE接法),开机由MaskROM的引导代码自动从外部FLASH读程序。

厂家的LIB有一部分锁定在MaskROM,有一部分会编译到SRAM。 里面还用了间接跳转表

我只能修改这24KB的部分空间

却发现  
我写了部分函数,即使未调用这个函数,没有提示却直接编译了进去
厂家LIB里面也有很多未调用函数,照样编译进去了,定位MaskROM的无所谓,不过自由分配到SRAM的就好浪费

查看*.LIN 里面用了 NOOVERLAY ,所以会直接编译 未调用函数

如果去掉 NOOVERLAY,无法编译
1 间接跳转的
  *** WARNING L13: RECURSIVE CALL TO SEGMENT
2 未调用函数的  (好多个)
  *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS  

*** FATAL ERROR L232: APPLICATION CONTAINS TOO MANY RECURSIONS
Target not created

有什么方法能指定 前40KB 全部编译,而 后24KB 优化编译(起码能去掉 未调用函数)?

或者说
除了 *.LIN 锁定的函数/变量(位于 MaskROM 区) 不用优化之外 ,其他位置的就优化( 位于SRAM区)
huangqi412 发表于 2009-12-15 09:56 | 显示全部楼层
后面是你自己写的程序,你干吗不条件编译,,,不让它弄进去...相当于注释掉...:funk:
huangqi412 发表于 2009-12-15 09:56 | 显示全部楼层
后面是你自己写的程序,你干吗不条件编译,,,不让它弄进去...相当于注释掉...:funk:自己写的没调用的函数,,,干吗还要编进去?
huangqi412 发表于 2009-12-15 09:57 | 显示全部楼层
自己写的没用到的函数,干吗还自己要编进片子里?
xlsbz 发表于 2009-12-15 10:04 | 显示全部楼层
大家好:我是keil
对于我来说,没有调用的函数 就是中断函数。
xlsbz 发表于 2009-12-15 10:05 | 显示全部楼层
我不但要将未调用函数编译进入,还要将未调用函数的所有局部变量都分配空间。
 楼主| AVRx007 发表于 2009-12-15 11:17 | 显示全部楼层
我写未调用的函数,只是用来测试 UNCALLED SEGMENT警告是否会产生。

主要是厂家LIB里面有好些未调用函数编译在SRAM区,浪费不少空间 (maskROM的无所谓)
keil 这个 UNCALLED SEGMENT 好麻烦。
 楼主| AVRx007 发表于 2009-12-15 11:32 | 显示全部楼层
只能说厂家的LIB没有细分 c/obj,
所以导致只要调用了c/obj里面任一个函数就会把整个c/obj编译进去,
包括哪些未调用的函数,也引发了 UNCALLED SEGMENT 。
为了消除 UNCALLED SEGMENT ,只能使用 NOOVERLAY

估计 间接跳转表的 WARNING L13: RECURSIVE CALL TO SEGMENT  也需要 NOOVERLAY 来消除

而用了 NOOVERLAY,就导致我自己写的未调用函数也没有提示却直接编译了进去

LIB里面的 UNCALL 浪费不少SRAM程序空间,好郁闷
因特网用户 发表于 2009-12-15 12:33 | 显示全部楼层
做lib要一个函数一个文件
x181084431 发表于 2010-8-16 14:27 | 显示全部楼层
在你的函数前面
写上
if(0)//不是条件编译  
{
   //把不用的函数写在里面
}
这样写就好了
ayb_ice 发表于 2010-8-16 15:05 | 显示全部楼层
谁规定没有调用的函数不能产生HEX代码,
假如不产生HEX,人家又有的说了,我的程序怎么没有产生代码
....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

44

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部