We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hi all,
i am building 8051 application in keil compiler.i got an warning message when linking... like this..... *** WARNING L16: UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS SEGMENT :?PR?_ANALOGVOL?ANALOG
from the above warning ...analogvol is an function..analog is a file name which is having the definition of analogvol....please help me to find out this and how to clear..... thanks in advance. m.y.sam
What do you need help finding out? The text is quite explicit.
If you have functions that you don't need, you can either delete them, drop the source file from the project (if it doesn't contain any other symbols that you do use) or encapsulate the function with a #ifdef/#endif block like:
#ifdef _SKIP_UNUSED ... #endif
i must need that function later....but currently i am not using that(now i am adding that source file with my project)... what are the causes for that warning....is it affect running the program...give your idea very thanks for reply...
"drop the source file from the project (if it doesn't contain any other symbols that you do use)"
Or simply clear its 'Include in Target Build' option...
http://www.keil.com/support/man/docs/uv3/uv3_ca_filegrp_att.htm
Or, with the LX51 Linker, see: http://www.keil.com/support/man/docs/lx51/lx51_removeunused.htm
Click on the message in uVision, then press F1 to get help on the message.
Or, just look it up in the Manual: http://www.keil.com/support/man/docs/lx51/lx51_l16.htm http://www.keil.com/support/man/docs/bl51/bl51_l16.htm ... and review the listed Knowledgebase articles
what are the causes for that warning
Exactly what it says: "UNCALLED SEGMENT".
"UNCALLED SEGMENT"
To spell it out, that means that the nothing in the segment is ever called;
There are no calls to anything in that segment
But You do not need it now. The message say the function in question is not called. It assumes you want to use it via an indirect function call (pointer). So it is allocating extra RAM based on that assumption ( that it can not overlay variables). Otherwise the program will run normally.
a simple "tide me over" is
bit helper; ... helper = 0; if (helper) { MyCurrentlyUncalledFunction(): }
The beauty of this method is that it does not interfer once you start using the function.
Erik
PS I guess that some "optimizer happy" person can work out how to make this work even when optimizing.
is to have that function alone in a file and put the generated .obj in a library. Then it does only get included when called
"The beauty of this method is that it does not interfer once you start using the function."
I don't see the benefit over the more "conventional" method of a #define and #if ? And it uses up a bit varialbe...
no advantage if you never forget
Is there and advantage, then, if you do forget?
What is it?