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, The compile error is: WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_STRTONUM?PARSE CALLER1: ?PR?TC0?PERIPHERAL CALLER2: ?C_C51STARTUP The callers TC0 is an ISR using reg bank 2 and I don't know about the c51startup. The called function STRTONUM is using the directive of #pragma NOAREGS so can be called for any functions. The question is why I still got the multiple call error? Thanks for answering my question. By the way, C51 is V6.21, BL51 is V4.21 and LIB51 is V4.20. chao.
"why would I get multiple call warning" You get the multiple call warning because you have multiples calls - as you yourself have acknowledged. Simple as that! "the directive of NOAREGS is used on STRTONUM" That, together with the different Register Banks, should mean that your Registers are safe - but it does not guarantee that all your local variables are safe! Check your mapfile to see whether any parameters and/or locals are being allocated at fixed memory addresses. It is possible that your code is safe - the Linker just can't guarantee to do enough analysis to be sure of this, so it gives you this warning that it might not be safe. If you are absolutely certain that your code is safe, you can just ignore the warning - that's why it's just a warning. But having warnings as a normal part of your build is a maintenance nightmare...