I am using a Cygnal C8051F124. It has bank 0 (32KB) from 0x0000-0x7FFF. Banks 0-3 can be viewed from 0x8000-0xFFFF. I am using the example code from Cygnal for the L51_BANK.A51 and STARTUP.A51 (mostly, I have enabled the reentrant stack). I have some code that when placed in a bank other than common, it appears that the interrupts are no longer serviced even though uV2 shows that the interrupts are set. The main is still executing as the null task. I am not using RTX51. Thanks for any suggestions.
Maybe this knowledgebase article will help. http://www.keil.com/support/docs/164.htm Jon
Fortunately the compiler already warns when an interrupt is not in the common area, so I have my interrupt calls only in the common area. Now it is a problem to call a banked function from an interrupt? This does not seem correct since I do have code working that does that. It just appears that some of the code, when moved to a banked code area, will cause the interrupts to no longer be serviced. I agree that it is like the interrupt did not exit properly. This would lead the interrupt controller to not process any new interrupts, while allowing main to continue to function. What could cause an interrupt to exit abnormally (associated with banking), i.e. exit an interrupt without acknowledging it? Thanks for any insight!