Global Interrupt Signaling for Cores with a de-central / local Interrupt Mechanism (as used in the C 166 CBC uController of the E-Gold + family)
Original Publication Date: 2001-Oct-01
Included in the Prior Art Database: 2003-Jul-23
The technical problem refers to the global signaling of locally generated interrupts. Until now, the prob- lem was solved by polling with global barriers of interrupts. The new idea allows a universal interrupt handling. It is also possible to save code for one-chip module- drivers. Beside of the present possibility of switching the global interrupt control on or off, the new solution reports appearing interrupts during a global barrier phase.
Global Interrupt Signaling forCores with a de-central / local In-terrupt Mechanism (as used in theC 166 CBC uController of the E-Gold + family)
Idee: Gerhard Forster, München
Information / Kommunikation
•� � For making critical tasks (e.g. modifying Flashcontents to avoid� that� code� is� executed� fromFlash) not interruptible
•� � For proper task scheduling in general.
The technical problem refers to the global signalingof locally generated interrupts. Until now, the prob-lem was solved� by� polling� with� global� barriers� ofinterrupts.
The new idea allows a universal interrupt handling. Itis also possible to save code for one-chip module-drivers. Beside of the present possibility of switchingthe global interrupt control on or off, the new solutionreports appearing interrupts during a global barrierphase.
The following description informs the reader aboutthe functional� and� principal� realization� of� the� newidea:
Brief description of the C166CBC Interrupt handlingscheme:
Each� peripheral’s� Interrupt� source� is� individuallyconfigurable through an own Interrupt Control regis-ter (xxIC) in which the Interrupt source can (1) belocally enabled / disabled by setting / resetting theInterrupt Enable (IE) bit in the xxIC register and (2)an occurred Interrupt� of� the� Interrupt� source� canlocally� be� indicated� through� the� Interrupt� Request(IR) flag in the xxIC register.
All available� Interrupts� –� for� the� C166CBC� thereexist in total 64 different Interrupt sources includingthe core (Software and Hardware) traps – can glob-ally be enabled / disabled by setting / resetting theIEN bit in the Processor Status Word (PSW)
However,� no� mechanism� for� global indication ofoccurred Interrupts exists - regardless which of the 64potential sources the Interrupt stems from. Addition-ally, if Interrupts are� globally� disabled,� only� onepending (local) Interrupt per Interrupt line / source is‘stored’ – any further Interrupt would be lost!
Disadvantage of this Interrupt handling scheme forGSM applications:
Typically a Real-Time (RT)-OS (such as Nucleus orOSE) is used in the mobile GSM application. TheseRT-OS tend to globally enable / disable Interrupts –very frequently even under certain application-specific circumstances
•� � As a prevention for unintentionally overwritingcertain registers or the stack
Even if no RT-OS is used, task scheduling must behandled by a Software control layer in the applicationitself. This could be realized by
•� � Interrupt status tracking in the application. Thisrequires the� knowledge� when� Interrupts� can‘safely’ be globally disabled without the risk tolose pending Interrupts. This controlling strategyleads to far more complex code.
•� � Polling instead of Interrupt processing, at leastwhile Interrupts are� globally� disabled.� In� thiscase module driver state-machines and additionalcontrol instances in the GSM application, as wellas� the� polling� process� in� general lead to in-creas...