MPC563XM Reference Manual, Rev. 1
434
Freescale Semiconductor
Preliminary—Subject to Change Without Notice
14.7.3
Code Compression’s Impact on Vector Table
The entries in the vector table in the interrupt exception handler example in
” are addresses of ISRs. A vector table also can be written whose entries are branches to ISRs.
The instruction flow branches to the entry in the vector table corresponding to the vector of the peripheral
or software setable interrupt request, and then the instruction flow branches to the corresponding ISR.
Some SoCs have code compression. While a vector table of addresses of ISRs is not affected by code
compression, a vector table of branches to ISRs can be affected. Code compression techniques can produce
for some cases instructions that are wider than 32 bits but less than 64 bits. If the vector table is compressed
and some instructions are wider than 32 bits, the VTES_PRC
x
Configuration Register (INTC_BCR)
” can be set. Each entry in the vector table then can occupy 64 bits.
14.7.4
ISR, RTOS, and Task Hierarchy
The RTOS and all of the tasks under its control typically execute with PRI in
Current Priority Register for Processor 0 (INTC_CPR_PRC0)
” or
Section 14.5.5, “INTC Current Priority
Register for Processor 1 (INTC_CPR_PRC1)
” having a value of 0. The RTOS will execute the tasks
according to whatever priority scheme that it may have, but that priority scheme is independent and has a
lower priority of execution than the priority scheme of the INTC. In other words, the ISRs execute above
INTC_CPR_PRC
x
priority 0 and outside the control of the RTOS, the RTOS executes at
INTC_CPR_PRC
x
priority 0, and while the tasks execute at different priorities under the control of the
RTOS, they also execute at INTC_CPR_PRC
x
priority 0.
If a task shares a resource with an ISR and the PCP is being used to manage that shared resource, then the
task’s priority can be elevated in the INTC_CPR_PRC
x
while the shared resource is being accessed.
An ISR whose PRI
x
Section 14.5.11, “INTC Priority Select Registers (INTC_PSR0_3 -
” has a value of 0 will not cause an interrupt request to the selected processor, even
if its peripheral or software setable interrupt request is asserted. For a peripheral interrupt request, not
setting its enable bit or disabling the mask bit will cause it to remain negated, which consequently also will
not cause an interrupt request to the processor. Since the ISRs are outside the control of the RTOS, this
ISR will not run unless called by another ISR or the interrupt exception handler, perhaps after executing
another ISR.
14.7.5
Order of Execution
An ISR with a higher priority can preempt an ISR with a lower priority, regardless of the unique vectors
associated with each of their peripheral or software setable interrupt requests. However, if multiple
peripheral or software setable interrupt requests are asserted, more than one has the highest priority, and
that priority is high enough to cause preemption, the INTC selects the one with the lowest unique vector
regardless of the order in time that they asserted. However, the ability to meet deadlines with this
scheduling scheme is no less than if the ISRs execute in the time order that their peripheral or software
setable interrupt requests asserted.
shows the order of execution of both ISRs with different priorities and the same
priority.