This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

eorror of multiple call to segment

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.

Parents
  • Thanks for all of you who try to help me.

    I have three layers of buffer for data. The first layer is for UART raw data. The second layer is a copy of the raw data for the main() to analyze and not to "disturb" the work of UART. The third layer is for the result, the analyzed data for the displaying purpose. So Neil's concern has been taking care of, unless I misunderstand his point.

    A LCM is slow relatively. Got Collett's point. I will keep that in mind.

    The reason I need to do display things in an ISR is to quickly display the page an user is selected. If I only use a flag to signal the main() then display, it will be "slow" to react to an user's request. This approach was my first attempt. The good thing about this approach is save, simple and won't have problem like Jon mentioned, "what happens if main is in the middle of displaying the data and the interrupt occurs to display the data" which I realized last night.

    Jon, it was not I didn't take your solution. Maybe I tried to be "perfect" (in my own way) on this project since this was the first project I had and not fully understood both my project and the compiler. You know, it is the "first time" thing.

    Please keep posting your new ideas. I really need that. Thank you very much.

    chao.

Reply
  • Thanks for all of you who try to help me.

    I have three layers of buffer for data. The first layer is for UART raw data. The second layer is a copy of the raw data for the main() to analyze and not to "disturb" the work of UART. The third layer is for the result, the analyzed data for the displaying purpose. So Neil's concern has been taking care of, unless I misunderstand his point.

    A LCM is slow relatively. Got Collett's point. I will keep that in mind.

    The reason I need to do display things in an ISR is to quickly display the page an user is selected. If I only use a flag to signal the main() then display, it will be "slow" to react to an user's request. This approach was my first attempt. The good thing about this approach is save, simple and won't have problem like Jon mentioned, "what happens if main is in the middle of displaying the data and the interrupt occurs to display the data" which I realized last night.

    Jon, it was not I didn't take your solution. Maybe I tried to be "perfect" (in my own way) on this project since this was the first project I had and not fully understood both my project and the compiler. You know, it is the "first time" thing.

    Please keep posting your new ideas. I really need that. Thank you very much.

    chao.

Children
No data