|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-654A788A-526A-4C3F-838C-05B09F0D5445" xml:lang="en"><title>Interrupt Technology Guide</title><shortdesc>Describes the concepts of the Interrupts platform service.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
13 <p>The Interrupt platform service provides an interface to the kernel |
|
14 and device drivers to associate interrupt with an Interrupt Service |
|
15 Routine (ISR). There are three levels of interrupt management: <ol> |
|
16 <li id="GUID-74C645F7-29BE-452F-97DB-1D32134FB553"><p>CPU level: Control |
|
17 of interrupts available only to the kernel.</p></li> |
|
18 <li id="GUID-999F3089-0CF3-4C28-8547-0DCFD634F8B8"><p>Controller level: |
|
19 Control provided by functions of the <codeph>Interrupt</codeph> class.</p></li> |
|
20 <li id="GUID-47E985FB-1990-4FD8-A1B2-752A58A799A3"><p>Device level: |
|
21 Control of hardware sources that are managed by a device specific |
|
22 control scheme.</p></li> |
|
23 </ol></p> |
|
24 <section id="GUID-F80CF14A-3CB2-41B1-A3BD-DBD116FDBA8C-GENID-1-2-1-10-1-5-1-7-1-1-6-1-3-2"> |
|
25 <title>Key concepts</title><dl> |
|
26 <dlentry> |
|
27 <dt>Interrupt</dt> |
|
28 <dd><p>An interrupt is a hardware or a software event that may need |
|
29 to be serviced. An example of a hardware interrupt is a key press |
|
30 .</p></dd> |
|
31 </dlentry> |
|
32 <dlentry> |
|
33 <dt>Interrupt ID</dt> |
|
34 <dd><p>The unique ID of an interrupt source. The interrupt ID are |
|
35 defined by the developers creating ASSP and variant.</p></dd> |
|
36 </dlentry> |
|
37 <dlentry> |
|
38 <dt>Spurious interrupts</dt> |
|
39 <dd><p>Interrupts not associated with an Interrupt Service Routine |
|
40 are called the spurious interrupts. The spurious interrupts are handled |
|
41 by a spurious interrupt handler which is only used for debugging.</p></dd> |
|
42 </dlentry> |
|
43 <dlentry> |
|
44 <dt>ISR</dt> |
|
45 <dd><p>An Interrupt Service Routine (ISR ) is the function to handle |
|
46 an interrupt. ISR is not a class member. ISR provides the minimum |
|
47 processing such as storing data that may not be available later and |
|
48 requests a DFC for further processing.</p></dd> |
|
49 </dlentry> |
|
50 <dlentry> |
|
51 <dt>Interrupt priority</dt> |
|
52 <dd><p>The Interrupt platform service allows developers to set a priority |
|
53 for each interrupt source. The meaning of the priority value depends |
|
54 on the hardware and the baseport implementation.</p></dd> |
|
55 </dlentry> |
|
56 <dlentry> |
|
57 <dt>Interrupt dispatch</dt> |
|
58 <dd><p>When an interrupt is received by the system, it calls the associated |
|
59 ISR. This is called interrupt dispatch. The interrupt dispatch is |
|
60 provided by the implementation of the <codeph>interrupt</codeph> class |
|
61 in the ASSP layer.</p></dd> |
|
62 </dlentry> |
|
63 <dlentry> |
|
64 <dt>ISR table</dt> |
|
65 <dd><p>The table that maps the interrupt ID and the associated ISR. |
|
66 The ISR table is implemented by the developers creating the baseport |
|
67 variant.</p></dd> |
|
68 </dlentry> |
|
69 <dlentry> |
|
70 <dt>Binding</dt> |
|
71 <dd><p>The process of associating an interrupt ID with an ISR. Unbinding |
|
72 removes the association.</p></dd> |
|
73 </dlentry> |
|
74 <dlentry> |
|
75 <dt>Chained interrupts</dt> |
|
76 <dd><p>The output of a low priority interrupt controller is provided |
|
77 as an input to a higher priority interrupt controller.</p></dd> |
|
78 </dlentry> |
|
79 </dl><dl> |
|
80 <dlentry> |
|
81 <dt>Pseudo-interrupts</dt> |
|
82 <dd><p>Pseudo-interrupts correspond to multiple interrupt sources |
|
83 sharing a single input to an interrupt controller but requiring separate |
|
84 ISRs to service them. The ISRs cannot all be bound to the single real |
|
85 interrupt and are therefore bound to the pseudo-interrupt instead.</p></dd> |
|
86 </dlentry> |
|
87 </dl><dl> |
|
88 <dlentry> |
|
89 <dt>IRQs and FIQs</dt> |
|
90 <dd><p>An IRQ (interrupt request) is the signal generated by an item |
|
91 of hardware or software to request an interrupt from the processor. |
|
92 An FIQ (fast IRQ) is an IRQ with high priority on systems |
|
93 which support prioritization of requests.</p></dd> |
|
94 </dlentry> |
|
95 </dl> </section> |
|
96 <section id="GUID-02A23FEF-2E96-4DC7-9AFB-D836B019C37B"><title>Typical |
|
97 uses</title><p>The Interrupt platform service allows the kernel and |
|
98 device drivers to :</p><ul> |
|
99 <li><p>associate an ISR with an interrupt ID</p></li> |
|
100 <li><p>enable/disable a specific interrupt</p></li> |
|
101 <li><p>clear pending actions on a specific interrupt</p></li> |
|
102 <li><p>change the priority of a specific interrupt.</p></li> |
|
103 </ul></section> |
|
104 </conbody><related-links> |
|
105 <link href="GUID-2E54DA7D-1094-41C6-AFB0-9999471991F8.dita"><linktext>Interrupt |
|
106 Implementation Guide</linktext></link> |
|
107 <link href="GUID-68446E8E-129C-444A-836A-EF8F56BFE0BC.dita"><linktext>Handling |
|
108 Interrupts</linktext></link> |
|
109 </related-links></concept> |