
AINTC Methodology
11.3.6 Interrupt Prioritization
The next stage of the AINTC is prioritization. Since multiple interrupts feed into a single channel and
multiple channels feed into a single host interrupt, it is necessary to prioritize between all the system
interrupts/channels to decide on a single system interrupt to handle. The AINTC provides hardware to
perform this prioritization with a given scheme so that software does not have to do this. There are two
levels of prioritizations:
1. The first level of prioritization is between the active channels for a host interrupt. Channel 0 has the
highest priority and channel 31 has the lowest. So the first level of prioritization picks the lowest
numbered active channel.
2. The second level of prioritization is between the active system interrupts for the prioritized channel.
The system interrupt in vector position 0 has the highest priority and system interrupt 100 has the
lowest priority. So the second level of prioritization picks the lowest vector position active system
interrupt.
The prioritized system interrupt for each host interrupt line (FIQ and IRQ) can be obtained from the host
interrupt prioritized index registers (HIPIR1 and HIPIR2). The host interrupt prioritized index register
values update dynamically as interrupts arrive at AINTC so care should be taken to avoid register race
conditions.
The AINTC features a prioritization hold mode that is intended to prevent race conditions while servicing
interrupts. This mode is enabled by setting the priority hold mode (PRHOLDMODE) bit in the control
register (CR). When enabled, a read of either the host interrupt prioritized index register (HIPIRn) or the
host interrupt prioritized vector register (HIPVRn) will freeze both the HIPIRn and HIPVRn values for the
respective host interrupt n. The values are frozen until one of the following actions is taken to release the
registers:
1. Write to the host interrupt prioritized index register (HIPIRn)
2. Write to the host interrupt prioritized vector register (HIPVRn)
3. Write-set bit n of the host interrupt enable register (HIER)
4. Write-set the active interrupt index to the host interrupt enable index set register (HIEISR)
5. Write-clear the active interrupt index to the host interrupt enable index clear register (HIEICR)
11.3.7 Interrupt Nesting
If interrupt service routines (ISRs) consume a large number of CPU cycles and may delay the servicing of
other interrupts, the AINTC can perform a nesting function in its prioritization. Nesting is a method of
disabling certain interrupts (usually lower-priority interrupts) when an interrupt is taken so that only those
desired interrupts can trigger to the host while it is servicing the current interrupt. The typical usage is to
nest on the current interrupt and disable all interrupts of the same or lower priority (or channel). Then the
host will only be interrupted from a higher priority interrupt.
Nesting is available in 1 of 3 methods selectable by the NESTMODE bit in the control register (CR):
1. Nesting for all host interrupts, based on channel priority: When an interrupt is taken, the nesting level is
set to its channel priority. From then, that channel priority and all lower priority channels will be
disabled from generating host interrupts and only higher priority channels are allowed. When the
interrupt is completely serviced, the nesting level is returned to its original value. When there is no
interrupt being serviced, there are no channels disabled due to nesting. The global nesting level
register (GNLR) allows the checking and setting of the global nesting level across all host interrupts.
The nesting level is the channel (and all of lower priority channels) that are nested out because of a
current interrupt.
2. Nesting for individual host interrupts, based on channel priority: Always nest based on channel priority
for each host interrupt individually. When an interrupt is taken on a host interrupt, then, the nesting
level is set to its channel priority for just that host interrupt, and other host interrupts do not have their
nesting affected. Then for that host interrupt, equal or lower priority channels will not interrupt the host
but may on other host interrupts if programmed. When the interrupt is completely serviced the nesting
level for the host interrupt is returned to its original value. The host interrupt nesting level registers
(HINLR1 and HINLR2) display and control the nesting level for each host interrupt. The nesting level
controls which channel and lower priority channels are nested. There is one register per host interrupt.
223
SPRUGX5A
–
May 2011
ARM Interrupt Controller (AINTC)
Copyright
©
2011, Texas Instruments Incorporated
Содержание AM1802
Страница 1: ...AM1802 ARM Microprocessor System Reference Guide Literature Number SPRUGX5A May 2011 ...
Страница 2: ...2 SPRUGX5A May 2011 Submit Documentation Feedback Copyright 2011 Texas Instruments Incorporated ...
Страница 30: ...30 ARM Subsystem SPRUGX5A May 2011 Submit Documentation Feedback Copyright 2011 Texas Instruments Incorporated ...
Страница 144: ...144 Power Management SPRUGX5A May 2011 Submit Documentation Feedback Copyright 2011 Texas Instruments Incorporated ...