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

[C51] OVERLAY between MAIN and ISR

I have an issue with overlayed variables.

Some locals variables function used within the MAIN call tree context are overlayed with local variables used within ISRs call tree context.

So, when ISR is executed, main local variables are corrupted...

how can I prevent this overlay within the linker file ?

Any ideas ?
Thanks for your support !

  • how can I prevent this overlay within the linker file ?

    Are you calling functions from both main and the isr? In that case, you may have to declare them as reentrant, or include two copies of the same function, one for calling from main and one for calling from the isr.

  • no, functions are only called either within the main or ISR, but never both.

    This is also well analyzed within the map file, where differents call tree are shown.

  • how can I prevent this overlay within the linker file ?

    You should never have to --- the linker does call tree analysis to be able to prevent this without your help.

    So unless you broke it explicitly (e.g. by using the linker's call tree modification instructions), this can't happen. We'll need a more concrete description of what you're doing. A minimal example with the actual compiler and linker options would be helpful.