SlideShare a Scribd company logo
1 of 23
Introduction To ARM ExceptionIntroduction To ARM Exception
Handling andHandling and
Software Interrupts (SWI)Software Interrupts (SWI)
By :- Vibrant Technologies &
Computers
Recommended ReadingsRecommended Readings
• Sections 5.1-5.4 (Exceptions) of the ARM Developer Guide
• Chapter 12 (Implementing SWIs) of Jumpstart Programming
Techniques
• Chapters 17 ARM Demon Routines of Jumpstart Reference Manual
Catch up on your readings!
Thought for the DayThought for the Day
I can accept failure.
Everyone fails at something.
But I cannot accept not trying.
- Michael Jordan
Summary of Previous LectureSummary of Previous Lecture
• The ARM Programmer’s Model
• Introduction to ARM Assembly Language
• Assembly Code from C Programs (7 Examples)
• Dealing With Structures
• Interfacing C Code with ARM Assembly
• ARM libraries and armsd
Outline of This LectureOutline of This Lecture
• Frame pointers and backtrace structures
• Normal program flow vs. exceptions
– Exceptions vs. interrupts
• Software Interrupts
– What is an SWI?
– What happens on an SWI?
– Vectoring SWIs
– What happens on SWI completion?
– What do SWIs do?
– A Complete SWI Handler
– A C_SWI_Handler (written in C)
• Loading the Software Interrupt Vector Table
Normal Program FlowNormal Program Flow vs.vs. ExceptionsExceptions
• Normally, programs execute sequentially (with a few branches to make life interesting)
• Normally, programs execute in user mode (see next slide)
• Exceptions and interrupts break the sequential flow of a program, jumping to architecturally­defined
memory locations
• In ARM, SoftWare Interrupt (SWI) is the “system call” exception
• Types of ARM exceptions
– reset when CPU reset pin is asserted
– undefined instruction when CPU tries to execute an undefined op­code
– software interrupt when CPU executes the SWI instruction
– prefetch abort when CPU tries to execute an instruction pre­fetched from an illegal addr
– data abort when data transfer instruction tries to read or write at an illegal address
– IRQ when CPU's external interrupt request pin is asserted
– FIQ when CPU's external fast interrupt request pin is asserted
ARM Processor Modes (of interest to us)ARM Processor Modes (of interest to us)
• User: the “normal” program execution mode.
• IRQ: used for general­purpose interrupt handling.
• Supervisor: a protected mode for the operating system.
– (there are also Abort, FIQ and Undef modes)
The ARM Register Set
• Registers R0-R15 + CPSR (Current Program Status Register)
– R13: Stack Pointer (by convention)
– R14: Link Register (hardwired)
– R15: Program Counter where bits 0:1 are ignored (hardwired)
TerminologyTerminology
• The terms exception and interrupt are often confused
• Exception usually refers to an internal CPU event such as
– floating point overflow
– MMU fault (e.g., page fault)
– trap (SWI)
• Interrupt usually refers to an external I/O event such as
– I/O device request
– reset
• In the ARM architecture manuals, the two terms are mixed together
What do SWIs do?What do SWIs do?
• SWIs (often called software traps) allow a user program to “call” the OS ­­ that is, SWIs
are how system calls are implemented.
• When SWIs execute, the processor changes modes (from User to Supervisor mode on the
ARM) and disables interrupts.
• Types of SWIs in ARM Angel (axd or armsd)
– SWI_WriteC(SWI 0) Write a byte to the debug channel
– SWI_Write0(SWI 2) Write the null­terminated string to debug channel
– SWI_ReadC(SWI 4) Read a byte from the debug channel
– SWI_Exit(SWI 0x11) Halt emulation ­ this is how a program exits
– SWI_EnterOS(SWI 0x16) Put the processor in supervisor mode
– SWI_Clock(SWI 0x61) Return the number of centi­seconds
– SWI_Time(SWI 0x63) Return the number of secs since Jan. 1, 1970
• Read more in Chapter 17 of the JumpStart Reference Manual
– See Recommended Readings
What Happens on anWhat Happens on an SWISWI? (1)? (1)
• The ARM architecture defines a Vector Table indexed by exception type
• One SWI, CPU does the following: PC <­­0x08
• Also, sets LR_svc, SPSR_svc, CPSR (supervisor mode, no IRQ)
ADD r0,r0,r1
SWI 0x10
SUB r2,r2,r0
USER Program
to R_Handler
to U_Handler
to S_Handler
to P_Handler
to D_Handler
...
to I_Handler
to F_Handler
Vector Table (spring board)
starting at 0x00 in memory
0x00
0x04
0x08
0x0c
0x10
0x14
0x18
0x1c
(Reset
(Undef instr.)
(SWI)
(Prefetch abort)
(Data abort)
(Reserved)
(IRQ)
(FIQ)
SWI Handler
1
What Happens on anWhat Happens on an SWISWI? (2)? (2)
• Not enough space in the table (only one instruction per entry) to hold all of the code for the SWI
handler function
• This one instruction must transfer control to appropriate SWI Handler
• Several options are presented in the next slide
ADD r0,r0,r1
SWI 0x10
SUB r2,r2,r0
USER Program to R_Handler
to U_Handler
to S_Handler
to P_Handler
to D_Handler
...
to I_Handler
to F_Handler
Vector Table (spring board)
starting at 0x00 in memory
0x00
0x04
0x08
0x0c
0x10
0x14
0x18
0x1c
(Reset
(Undef instr.)
(SWI)
(Prefetch abort)
(Data abort)
(Reserved)
(IRQ)
(FIQ)
SWI Handler2
““Vectoring” Exceptions to HandlersVectoring” Exceptions to Handlers
• Option of choice: Load PC from jump table (shown below)
• Another option: Direct branch (limited range)
ADD r0,r0,r1
SWI 0x10
SUB r2,r2,r0
USER Program LDR pc, pc, 0x100
LDR pc, pc, 0x100
LDR pc, pc, 0x100
LDR pc, pc, 0x100
LDR pc, pc, 0x100
LDR pc, pc, 0x100
LDR pc, pc, 0x100
LDR pc, pc, 0x100
Vector Table (spring board)
starting at 0x00 in memory
0x00
0x04
0x08
0x0c
0x10
0x14
0x18
0x1c
SWI Handler
(S_Handler)2
&A_Handler
&U_Handler
&S_Handler
&P_Handler
...
“Jump” Table
0x108
0x10c
0x110
0x114
...
Why 0x110?
What Happens onWhat Happens on SWISWI Completion?Completion?
• Vectoring to the S_Handler starts executing the SWI handler
• When the handler is done, it returns to the program ­­ at the instruction following the
SWI
• MOVS restores the original CPSR as well as changing pc
ADD r0,r0,r1
SWI 0x10
SUB r2,r2,r0
USER Program to R_Handler
to U_Handler
to S_Handler
to P_Handler
to D_Handler
...
to I_Handler
to F_Handler
Vector Table (spring board)
starting at 0x00 in memory
0x00
0x04
0x08
0x0c
0x10
0x14
0x18
0x1c
(Reset
(Undef instr.)
(SWI)
(Prefetch abort)
(Data abort)
(Reserved)
(IRQ)
(FIQ)
MOVS pc, lr
SWI Handler
(S_Handler)
How Do We Determine the SWI number?How Do We Determine the SWI number?
• All SWIs go to 0x08
ADD r0,r0,r1
SWI 0x10
SUB r2,r2,r0
USER Program to R_Handler
to U_Handler
to S_Handler
to P_Handler
to D_Handler
...
to I_Handler
to F_Handler
Vector Table (spring board)
starting at 0x00 in memory
0x00
0x04
0x08
0x0c
0x10
0x14
0x18
0x1c
(Reset
(Undef instr.)
(SWI)
(Prefetch abort)
(Data abort)
(Reserved)
(IRQ)
(FIQ)
SWI Handler must
serve as clearing
house for different
SWIs
MOVS pc, lr
SWI Handler
(S_Handler)
24­bit “comment” field (ignored by processor)1 1 1 1
SWISWI Instruction FormatInstruction Format
• Example: SWI 0x18
cond
023242731 28
SWI number
FullFull SWISWI HandlerHandlerS_Handler
SUB sp,sp, #4 ; leave room on stack for SPSR
STMFD sp!, {r0­r12, lr} ; store user's gp registers
MRS r2, spsr[_csxf] ; get SPSR into gp registers
STR r2, [sp, #14*4] ; store SPSR above gp registers
MOV r1, sp ; pointer to parameters on stack
LDR r0, [lr, #­4] ; extract the SWI number
BIC r0,r0,#0xff000000 ; get SWI # by bit­masking
BL C_SWI_handler ; go to handler (see next slide)
LDR r2, [sp, #14*4] ; restore SPSR (NOT “sp!”)
MSR spsr_csxf, r2 ; csxf flags (see XScale QuickRef Card)
LDMFD sp!, {r0­r12, lr} ; unstack user's registers
ADD sp, sp, #4 ; remove space used to store SPSR
MOVS pc, lr ; return from handler
gp = general-purpose
SPSR is stored above gp registers since the registers
may contain system call parameters (sp in r1)
C_SWI_HandlerC_SWI_Handler
void C_SWI_handler(unsigned number, unsigned
*regs)
{
switch (number){
case 0: /* SWI number 0 code */ break;
case 1: /* SWI number 1 code */ break;
...
case XXX: /* SWI number XXX code */ break;
default:
} /* end switch */
} /* end C_SWI_handler() */
spsr_svc
lr_svc
r4
r3
r12
r11
r10
r9
r8
r7
r6
r5
r2
r1
r0
Previous sp_svc
sp_svc
regs[12]
regs[0] (also *regs)
Loading the Vector TableLoading the Vector Table
/* For 18-349, the Vector Table will use the ``LDR PC, PC,
* offset'' springboard approach */
unsigned Install_Handler(unsigned int routine, unsigned int *vector)
{
unsigned int pcload_instr, old_handler, *soft_vector;
pcload_instr = *vector; /* read the Vector Table instr (LDR ...) */
pcload_instr &= 0xfff; /* compute offset of jump table entry */
pcload_instr += 0x8 + (unsigned)vector; /* == offset adjusted by PC
and prefetch */
soft_vector = (unsigned *)pcload_instr; /* address to load pc from */
old_handler = *soft_vector; /* remember the old handler */
*soft_vector = routine; /* set up new handler in jump table */
return (old_handler); /* return old handler address */
} /* end Install_Handler() */
Called as
Install_Handler ((unsigned) C_SWI_Handler, swivec);
where,
unsigned *swivec = (unsigned *) 0x08;
Calling SWIs from C CodeCalling SWIs from C Code
char __swi(4) SWI_ReadC(void);
void readline (char *buffer)
{
char ch;
do {
*buffer++ = ch = SWI_ReadC();
while (ch != 13);
}
*buffer = 0;
} /* end readline() */
readline
STMDF sp!,{lr}
MOV lr, a1
readagain
SWI &4
STRB a1,[lr],#1
CMP a1,#&d
BNE readagain
MOV a1,#0
STRB a1, [lr, #0]
LDMIA sp!, {pc}
Assembly code produced by compiler
User-Level C Source Code
Summary of LectureSummary of Lecture
• Software Interrupts (SWIs)
– What is an SWI?
– What happens on an SWI?
– Vectoring SWIs
– What happens on SWI completion?
– What do SWIs do?
– A Full SWI Handler
– A C_SWI_Handler (written in C)
• Loading Software Interrrupt Vectors
Looking AheadLooking Ahead
• Program Monitor, Loading and Initialization
ThankThank You !!!You !!!
For More Information click below link:
Follow Us on:
http://vibranttechnologies.co.in/embedded-system-
classes-in-mumbai.html

More Related Content

What's hot

Unit II Arm 7 Introduction
Unit II Arm 7 IntroductionUnit II Arm 7 Introduction
Unit II Arm 7 IntroductionDr. Pankaj Zope
 
Interrupt handling
Interrupt handlingInterrupt handling
Interrupt handlingmaverick2203
 
Introduction to arm architecture
Introduction to arm architectureIntroduction to arm architecture
Introduction to arm architectureZakaria Gomaa
 
Arm architecture overview
Arm architecture overviewArm architecture overview
Arm architecture overviewSunil Thorat
 
Arm cortex-m4 programmer model
Arm cortex-m4 programmer modelArm cortex-m4 programmer model
Arm cortex-m4 programmer modelMohammed Gomaa
 
Arm architecture chapter2_steve_furber
Arm architecture chapter2_steve_furberArm architecture chapter2_steve_furber
Arm architecture chapter2_steve_furberasodariyabhavesh
 
ARM architcture
ARM architcture ARM architcture
ARM architcture Hossam Adel
 
ARM - Advance RISC Machine
ARM - Advance RISC MachineARM - Advance RISC Machine
ARM - Advance RISC MachineEdutechLearners
 
The ARM Architecture: ARM : ARM Architecture
The ARM Architecture: ARM : ARM ArchitectureThe ARM Architecture: ARM : ARM Architecture
The ARM Architecture: ARM : ARM Architecturesreea4
 
ARM7-ARCHITECTURE
ARM7-ARCHITECTURE ARM7-ARCHITECTURE
ARM7-ARCHITECTURE Dr.YNM
 
Microprocessors-based systems (under graduate course) Lecture 9 of 9
Microprocessors-based systems (under graduate course) Lecture 9 of 9 Microprocessors-based systems (under graduate course) Lecture 9 of 9
Microprocessors-based systems (under graduate course) Lecture 9 of 9 Randa Elanwar
 
EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj...
 EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj... EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj...
EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj...D Y PATIL COLLEGE OF ENGINEERING PUNE
 

What's hot (20)

Unit II Arm 7 Introduction
Unit II Arm 7 IntroductionUnit II Arm 7 Introduction
Unit II Arm 7 Introduction
 
ARM- Programmer's Model
ARM- Programmer's ModelARM- Programmer's Model
ARM- Programmer's Model
 
Interrupt handling
Interrupt handlingInterrupt handling
Interrupt handling
 
ARM Micro-controller
ARM Micro-controllerARM Micro-controller
ARM Micro-controller
 
Introduction to arm architecture
Introduction to arm architectureIntroduction to arm architecture
Introduction to arm architecture
 
Arm processor
Arm processorArm processor
Arm processor
 
Arm architecture overview
Arm architecture overviewArm architecture overview
Arm architecture overview
 
Arm cortex-m4 programmer model
Arm cortex-m4 programmer modelArm cortex-m4 programmer model
Arm cortex-m4 programmer model
 
arm-cortex-a8
arm-cortex-a8arm-cortex-a8
arm-cortex-a8
 
Arm architecture chapter2_steve_furber
Arm architecture chapter2_steve_furberArm architecture chapter2_steve_furber
Arm architecture chapter2_steve_furber
 
ARM architcture
ARM architcture ARM architcture
ARM architcture
 
ARM - Advance RISC Machine
ARM - Advance RISC MachineARM - Advance RISC Machine
ARM - Advance RISC Machine
 
Arm architecture
Arm architectureArm architecture
Arm architecture
 
The ARM Architecture: ARM : ARM Architecture
The ARM Architecture: ARM : ARM ArchitectureThe ARM Architecture: ARM : ARM Architecture
The ARM Architecture: ARM : ARM Architecture
 
ARM
ARMARM
ARM
 
Arm
ArmArm
Arm
 
Arm architecture
Arm architectureArm architecture
Arm architecture
 
ARM7-ARCHITECTURE
ARM7-ARCHITECTURE ARM7-ARCHITECTURE
ARM7-ARCHITECTURE
 
Microprocessors-based systems (under graduate course) Lecture 9 of 9
Microprocessors-based systems (under graduate course) Lecture 9 of 9 Microprocessors-based systems (under graduate course) Lecture 9 of 9
Microprocessors-based systems (under graduate course) Lecture 9 of 9
 
EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj...
 EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj... EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj...
EMBEDDED SYSTEM DESIGN ARM architecture support for operating system by sanj...
 

Viewers also liked

Running Docker on ARM
Running Docker on ARMRunning Docker on ARM
Running Docker on ARMDieter Reuter
 
Programme 2days business_competition
Programme 2days business_competitionProgramme 2days business_competition
Programme 2days business_competitionTatjana Strigalova
 
Induccion rrhh 2017 empleados y obreros
Induccion rrhh 2017   empleados y obrerosInduccion rrhh 2017   empleados y obreros
Induccion rrhh 2017 empleados y obrerosAlex Cumbicus Saavedra
 
Composición del cuerpo humano
Composición del cuerpo humanoComposición del cuerpo humano
Composición del cuerpo humanoshirley vanessa
 
Hard-Drawn Copper Conductors for Over Head Power Transmission
Hard-Drawn Copper Conductors for Over Head Power TransmissionHard-Drawn Copper Conductors for Over Head Power Transmission
Hard-Drawn Copper Conductors for Over Head Power TransmissionChirag vasava
 
Electronic Toll Tax collection system in india
Electronic Toll Tax collection system in india Electronic Toll Tax collection system in india
Electronic Toll Tax collection system in india Deepak Chouhan
 
A swift introduction to Swift
A swift introduction to SwiftA swift introduction to Swift
A swift introduction to SwiftGiordano Scalzo
 
Hacking with ARM devices on Linux
Hacking with ARM devices on Linux Hacking with ARM devices on Linux
Hacking with ARM devices on Linux Netwalker lab kapper
 
Space Based Solar Power (SBSP)
Space Based Solar Power (SBSP)Space Based Solar Power (SBSP)
Space Based Solar Power (SBSP)Seminar Links
 
Difference between npn and pnp transistor.pptx
Difference between npn and pnp transistor.pptxDifference between npn and pnp transistor.pptx
Difference between npn and pnp transistor.pptxelprocus
 

Viewers also liked (17)

Embedded system - introduction to arm7
Embedded system -  introduction to arm7Embedded system -  introduction to arm7
Embedded system - introduction to arm7
 
Running Docker on ARM
Running Docker on ARMRunning Docker on ARM
Running Docker on ARM
 
4Plus
4Plus4Plus
4Plus
 
Programme 2days business_competition
Programme 2days business_competitionProgramme 2days business_competition
Programme 2days business_competition
 
Induccion rrhh 2017 empleados y obreros
Induccion rrhh 2017   empleados y obrerosInduccion rrhh 2017   empleados y obreros
Induccion rrhh 2017 empleados y obreros
 
Composición del cuerpo humano
Composición del cuerpo humanoComposición del cuerpo humano
Composición del cuerpo humano
 
Hard-Drawn Copper Conductors for Over Head Power Transmission
Hard-Drawn Copper Conductors for Over Head Power TransmissionHard-Drawn Copper Conductors for Over Head Power Transmission
Hard-Drawn Copper Conductors for Over Head Power Transmission
 
I2C Protocol
I2C ProtocolI2C Protocol
I2C Protocol
 
ARM7TDM
ARM7TDMARM7TDM
ARM7TDM
 
SWIFT & IntelliMATCH
SWIFT & IntelliMATCHSWIFT & IntelliMATCH
SWIFT & IntelliMATCH
 
Electronic Toll Tax collection system in india
Electronic Toll Tax collection system in india Electronic Toll Tax collection system in india
Electronic Toll Tax collection system in india
 
A swift introduction to Swift
A swift introduction to SwiftA swift introduction to Swift
A swift introduction to Swift
 
Hacking with ARM devices on Linux
Hacking with ARM devices on Linux Hacking with ARM devices on Linux
Hacking with ARM devices on Linux
 
Space Based Solar Power (SBSP)
Space Based Solar Power (SBSP)Space Based Solar Power (SBSP)
Space Based Solar Power (SBSP)
 
Interrupts
InterruptsInterrupts
Interrupts
 
Difference between npn and pnp transistor.pptx
Difference between npn and pnp transistor.pptxDifference between npn and pnp transistor.pptx
Difference between npn and pnp transistor.pptx
 
Induccion qhse 2017
Induccion qhse 2017Induccion qhse 2017
Induccion qhse 2017
 

Similar to Embedded system - Introduction To ARM Exception Handling and Software Interrupts (SWI)

Similar to Embedded system - Introduction To ARM Exception Handling and Software Interrupts (SWI) (20)

Lecture10.ppt
Lecture10.pptLecture10.ppt
Lecture10.ppt
 
arm_exp.ppt
arm_exp.pptarm_exp.ppt
arm_exp.ppt
 
ESD_05_ARM_Instructions set for preparation
ESD_05_ARM_Instructions set for preparationESD_05_ARM_Instructions set for preparation
ESD_05_ARM_Instructions set for preparation
 
ARMInst.ppt
ARMInst.pptARMInst.ppt
ARMInst.ppt
 
ARMInst.ppt
ARMInst.pptARMInst.ppt
ARMInst.ppt
 
W10: Interrupts
W10: InterruptsW10: Interrupts
W10: Interrupts
 
W8_1: Intro to UoS Educational Processor
W8_1: Intro to UoS Educational ProcessorW8_1: Intro to UoS Educational Processor
W8_1: Intro to UoS Educational Processor
 
LPC 2148 Instructions Set.ppt
LPC 2148 Instructions Set.pptLPC 2148 Instructions Set.ppt
LPC 2148 Instructions Set.ppt
 
Arm
ArmArm
Arm
 
Introduction to ARM Architecture
Introduction to ARM ArchitectureIntroduction to ARM Architecture
Introduction to ARM Architecture
 
ARM exceptions and interrupt controls
ARM exceptions and interrupt controlsARM exceptions and interrupt controls
ARM exceptions and interrupt controls
 
Arm architecture overview
Arm architecture overviewArm architecture overview
Arm architecture overview
 
Processor types
Processor typesProcessor types
Processor types
 
Arm teaching material
Arm teaching materialArm teaching material
Arm teaching material
 
Arm teaching material
Arm teaching materialArm teaching material
Arm teaching material
 
Linux interrupts
Linux interruptsLinux interrupts
Linux interrupts
 
Instruction Set Architecture
Instruction Set ArchitectureInstruction Set Architecture
Instruction Set Architecture
 
Lecture8
Lecture8Lecture8
Lecture8
 
arm
armarm
arm
 
AAME ARM Techcon2013 002v02 Advanced Features
AAME ARM Techcon2013 002v02 Advanced FeaturesAAME ARM Techcon2013 002v02 Advanced Features
AAME ARM Techcon2013 002v02 Advanced Features
 

More from Vibrant Technologies & Computers

Data ware housing - Introduction to data ware housing process.
Data ware housing - Introduction to data ware housing process.Data ware housing - Introduction to data ware housing process.
Data ware housing - Introduction to data ware housing process.Vibrant Technologies & Computers
 

More from Vibrant Technologies & Computers (20)

Buisness analyst business analysis overview ppt 5
Buisness analyst business analysis overview ppt 5Buisness analyst business analysis overview ppt 5
Buisness analyst business analysis overview ppt 5
 
SQL Introduction to displaying data from multiple tables
SQL Introduction to displaying data from multiple tables  SQL Introduction to displaying data from multiple tables
SQL Introduction to displaying data from multiple tables
 
SQL- Introduction to MySQL
SQL- Introduction to MySQLSQL- Introduction to MySQL
SQL- Introduction to MySQL
 
SQL- Introduction to SQL database
SQL- Introduction to SQL database SQL- Introduction to SQL database
SQL- Introduction to SQL database
 
ITIL - introduction to ITIL
ITIL - introduction to ITILITIL - introduction to ITIL
ITIL - introduction to ITIL
 
Salesforce - Introduction to Security & Access
Salesforce -  Introduction to Security & Access Salesforce -  Introduction to Security & Access
Salesforce - Introduction to Security & Access
 
Data ware housing- Introduction to olap .
Data ware housing- Introduction to  olap .Data ware housing- Introduction to  olap .
Data ware housing- Introduction to olap .
 
Data ware housing - Introduction to data ware housing process.
Data ware housing - Introduction to data ware housing process.Data ware housing - Introduction to data ware housing process.
Data ware housing - Introduction to data ware housing process.
 
Data ware housing- Introduction to data ware housing
Data ware housing- Introduction to data ware housingData ware housing- Introduction to data ware housing
Data ware housing- Introduction to data ware housing
 
Salesforce - classification of cloud computing
Salesforce - classification of cloud computingSalesforce - classification of cloud computing
Salesforce - classification of cloud computing
 
Salesforce - cloud computing fundamental
Salesforce - cloud computing fundamentalSalesforce - cloud computing fundamental
Salesforce - cloud computing fundamental
 
SQL- Introduction to PL/SQL
SQL- Introduction to  PL/SQLSQL- Introduction to  PL/SQL
SQL- Introduction to PL/SQL
 
SQL- Introduction to advanced sql concepts
SQL- Introduction to  advanced sql conceptsSQL- Introduction to  advanced sql concepts
SQL- Introduction to advanced sql concepts
 
SQL Inteoduction to SQL manipulating of data
SQL Inteoduction to SQL manipulating of data   SQL Inteoduction to SQL manipulating of data
SQL Inteoduction to SQL manipulating of data
 
SQL- Introduction to SQL Set Operations
SQL- Introduction to SQL Set OperationsSQL- Introduction to SQL Set Operations
SQL- Introduction to SQL Set Operations
 
Sas - Introduction to designing the data mart
Sas - Introduction to designing the data martSas - Introduction to designing the data mart
Sas - Introduction to designing the data mart
 
Sas - Introduction to working under change management
Sas - Introduction to working under change managementSas - Introduction to working under change management
Sas - Introduction to working under change management
 
SAS - overview of SAS
SAS - overview of SASSAS - overview of SAS
SAS - overview of SAS
 
Teradata - Architecture of Teradata
Teradata - Architecture of TeradataTeradata - Architecture of Teradata
Teradata - Architecture of Teradata
 
Teradata - Restoring Data
Teradata - Restoring Data Teradata - Restoring Data
Teradata - Restoring Data
 

Recently uploaded

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformWSO2
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringWSO2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingWSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 

Recently uploaded (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

Embedded system - Introduction To ARM Exception Handling and Software Interrupts (SWI)

  • 1.
  • 2. Introduction To ARM ExceptionIntroduction To ARM Exception Handling andHandling and Software Interrupts (SWI)Software Interrupts (SWI) By :- Vibrant Technologies & Computers
  • 3. Recommended ReadingsRecommended Readings • Sections 5.1-5.4 (Exceptions) of the ARM Developer Guide • Chapter 12 (Implementing SWIs) of Jumpstart Programming Techniques • Chapters 17 ARM Demon Routines of Jumpstart Reference Manual Catch up on your readings!
  • 4. Thought for the DayThought for the Day I can accept failure. Everyone fails at something. But I cannot accept not trying. - Michael Jordan
  • 5. Summary of Previous LectureSummary of Previous Lecture • The ARM Programmer’s Model • Introduction to ARM Assembly Language • Assembly Code from C Programs (7 Examples) • Dealing With Structures • Interfacing C Code with ARM Assembly • ARM libraries and armsd
  • 6. Outline of This LectureOutline of This Lecture • Frame pointers and backtrace structures • Normal program flow vs. exceptions – Exceptions vs. interrupts • Software Interrupts – What is an SWI? – What happens on an SWI? – Vectoring SWIs – What happens on SWI completion? – What do SWIs do? – A Complete SWI Handler – A C_SWI_Handler (written in C) • Loading the Software Interrupt Vector Table
  • 7. Normal Program FlowNormal Program Flow vs.vs. ExceptionsExceptions • Normally, programs execute sequentially (with a few branches to make life interesting) • Normally, programs execute in user mode (see next slide) • Exceptions and interrupts break the sequential flow of a program, jumping to architecturally­defined memory locations • In ARM, SoftWare Interrupt (SWI) is the “system call” exception • Types of ARM exceptions – reset when CPU reset pin is asserted – undefined instruction when CPU tries to execute an undefined op­code – software interrupt when CPU executes the SWI instruction – prefetch abort when CPU tries to execute an instruction pre­fetched from an illegal addr – data abort when data transfer instruction tries to read or write at an illegal address – IRQ when CPU's external interrupt request pin is asserted – FIQ when CPU's external fast interrupt request pin is asserted
  • 8. ARM Processor Modes (of interest to us)ARM Processor Modes (of interest to us) • User: the “normal” program execution mode. • IRQ: used for general­purpose interrupt handling. • Supervisor: a protected mode for the operating system. – (there are also Abort, FIQ and Undef modes) The ARM Register Set • Registers R0-R15 + CPSR (Current Program Status Register) – R13: Stack Pointer (by convention) – R14: Link Register (hardwired) – R15: Program Counter where bits 0:1 are ignored (hardwired)
  • 9. TerminologyTerminology • The terms exception and interrupt are often confused • Exception usually refers to an internal CPU event such as – floating point overflow – MMU fault (e.g., page fault) – trap (SWI) • Interrupt usually refers to an external I/O event such as – I/O device request – reset • In the ARM architecture manuals, the two terms are mixed together
  • 10. What do SWIs do?What do SWIs do? • SWIs (often called software traps) allow a user program to “call” the OS ­­ that is, SWIs are how system calls are implemented. • When SWIs execute, the processor changes modes (from User to Supervisor mode on the ARM) and disables interrupts. • Types of SWIs in ARM Angel (axd or armsd) – SWI_WriteC(SWI 0) Write a byte to the debug channel – SWI_Write0(SWI 2) Write the null­terminated string to debug channel – SWI_ReadC(SWI 4) Read a byte from the debug channel – SWI_Exit(SWI 0x11) Halt emulation ­ this is how a program exits – SWI_EnterOS(SWI 0x16) Put the processor in supervisor mode – SWI_Clock(SWI 0x61) Return the number of centi­seconds – SWI_Time(SWI 0x63) Return the number of secs since Jan. 1, 1970 • Read more in Chapter 17 of the JumpStart Reference Manual – See Recommended Readings
  • 11. What Happens on anWhat Happens on an SWISWI? (1)? (1) • The ARM architecture defines a Vector Table indexed by exception type • One SWI, CPU does the following: PC <­­0x08 • Also, sets LR_svc, SPSR_svc, CPSR (supervisor mode, no IRQ) ADD r0,r0,r1 SWI 0x10 SUB r2,r2,r0 USER Program to R_Handler to U_Handler to S_Handler to P_Handler to D_Handler ... to I_Handler to F_Handler Vector Table (spring board) starting at 0x00 in memory 0x00 0x04 0x08 0x0c 0x10 0x14 0x18 0x1c (Reset (Undef instr.) (SWI) (Prefetch abort) (Data abort) (Reserved) (IRQ) (FIQ) SWI Handler 1
  • 12. What Happens on anWhat Happens on an SWISWI? (2)? (2) • Not enough space in the table (only one instruction per entry) to hold all of the code for the SWI handler function • This one instruction must transfer control to appropriate SWI Handler • Several options are presented in the next slide ADD r0,r0,r1 SWI 0x10 SUB r2,r2,r0 USER Program to R_Handler to U_Handler to S_Handler to P_Handler to D_Handler ... to I_Handler to F_Handler Vector Table (spring board) starting at 0x00 in memory 0x00 0x04 0x08 0x0c 0x10 0x14 0x18 0x1c (Reset (Undef instr.) (SWI) (Prefetch abort) (Data abort) (Reserved) (IRQ) (FIQ) SWI Handler2
  • 13. ““Vectoring” Exceptions to HandlersVectoring” Exceptions to Handlers • Option of choice: Load PC from jump table (shown below) • Another option: Direct branch (limited range) ADD r0,r0,r1 SWI 0x10 SUB r2,r2,r0 USER Program LDR pc, pc, 0x100 LDR pc, pc, 0x100 LDR pc, pc, 0x100 LDR pc, pc, 0x100 LDR pc, pc, 0x100 LDR pc, pc, 0x100 LDR pc, pc, 0x100 LDR pc, pc, 0x100 Vector Table (spring board) starting at 0x00 in memory 0x00 0x04 0x08 0x0c 0x10 0x14 0x18 0x1c SWI Handler (S_Handler)2 &A_Handler &U_Handler &S_Handler &P_Handler ... “Jump” Table 0x108 0x10c 0x110 0x114 ... Why 0x110?
  • 14. What Happens onWhat Happens on SWISWI Completion?Completion? • Vectoring to the S_Handler starts executing the SWI handler • When the handler is done, it returns to the program ­­ at the instruction following the SWI • MOVS restores the original CPSR as well as changing pc ADD r0,r0,r1 SWI 0x10 SUB r2,r2,r0 USER Program to R_Handler to U_Handler to S_Handler to P_Handler to D_Handler ... to I_Handler to F_Handler Vector Table (spring board) starting at 0x00 in memory 0x00 0x04 0x08 0x0c 0x10 0x14 0x18 0x1c (Reset (Undef instr.) (SWI) (Prefetch abort) (Data abort) (Reserved) (IRQ) (FIQ) MOVS pc, lr SWI Handler (S_Handler)
  • 15. How Do We Determine the SWI number?How Do We Determine the SWI number? • All SWIs go to 0x08 ADD r0,r0,r1 SWI 0x10 SUB r2,r2,r0 USER Program to R_Handler to U_Handler to S_Handler to P_Handler to D_Handler ... to I_Handler to F_Handler Vector Table (spring board) starting at 0x00 in memory 0x00 0x04 0x08 0x0c 0x10 0x14 0x18 0x1c (Reset (Undef instr.) (SWI) (Prefetch abort) (Data abort) (Reserved) (IRQ) (FIQ) SWI Handler must serve as clearing house for different SWIs MOVS pc, lr SWI Handler (S_Handler)
  • 16. 24­bit “comment” field (ignored by processor)1 1 1 1 SWISWI Instruction FormatInstruction Format • Example: SWI 0x18 cond 023242731 28 SWI number
  • 17. FullFull SWISWI HandlerHandlerS_Handler SUB sp,sp, #4 ; leave room on stack for SPSR STMFD sp!, {r0­r12, lr} ; store user's gp registers MRS r2, spsr[_csxf] ; get SPSR into gp registers STR r2, [sp, #14*4] ; store SPSR above gp registers MOV r1, sp ; pointer to parameters on stack LDR r0, [lr, #­4] ; extract the SWI number BIC r0,r0,#0xff000000 ; get SWI # by bit­masking BL C_SWI_handler ; go to handler (see next slide) LDR r2, [sp, #14*4] ; restore SPSR (NOT “sp!”) MSR spsr_csxf, r2 ; csxf flags (see XScale QuickRef Card) LDMFD sp!, {r0­r12, lr} ; unstack user's registers ADD sp, sp, #4 ; remove space used to store SPSR MOVS pc, lr ; return from handler gp = general-purpose SPSR is stored above gp registers since the registers may contain system call parameters (sp in r1)
  • 18. C_SWI_HandlerC_SWI_Handler void C_SWI_handler(unsigned number, unsigned *regs) { switch (number){ case 0: /* SWI number 0 code */ break; case 1: /* SWI number 1 code */ break; ... case XXX: /* SWI number XXX code */ break; default: } /* end switch */ } /* end C_SWI_handler() */ spsr_svc lr_svc r4 r3 r12 r11 r10 r9 r8 r7 r6 r5 r2 r1 r0 Previous sp_svc sp_svc regs[12] regs[0] (also *regs)
  • 19. Loading the Vector TableLoading the Vector Table /* For 18-349, the Vector Table will use the ``LDR PC, PC, * offset'' springboard approach */ unsigned Install_Handler(unsigned int routine, unsigned int *vector) { unsigned int pcload_instr, old_handler, *soft_vector; pcload_instr = *vector; /* read the Vector Table instr (LDR ...) */ pcload_instr &= 0xfff; /* compute offset of jump table entry */ pcload_instr += 0x8 + (unsigned)vector; /* == offset adjusted by PC and prefetch */ soft_vector = (unsigned *)pcload_instr; /* address to load pc from */ old_handler = *soft_vector; /* remember the old handler */ *soft_vector = routine; /* set up new handler in jump table */ return (old_handler); /* return old handler address */ } /* end Install_Handler() */ Called as Install_Handler ((unsigned) C_SWI_Handler, swivec); where, unsigned *swivec = (unsigned *) 0x08;
  • 20. Calling SWIs from C CodeCalling SWIs from C Code char __swi(4) SWI_ReadC(void); void readline (char *buffer) { char ch; do { *buffer++ = ch = SWI_ReadC(); while (ch != 13); } *buffer = 0; } /* end readline() */ readline STMDF sp!,{lr} MOV lr, a1 readagain SWI &4 STRB a1,[lr],#1 CMP a1,#&d BNE readagain MOV a1,#0 STRB a1, [lr, #0] LDMIA sp!, {pc} Assembly code produced by compiler User-Level C Source Code
  • 21. Summary of LectureSummary of Lecture • Software Interrupts (SWIs) – What is an SWI? – What happens on an SWI? – Vectoring SWIs – What happens on SWI completion? – What do SWIs do? – A Full SWI Handler – A C_SWI_Handler (written in C) • Loading Software Interrrupt Vectors
  • 22. Looking AheadLooking Ahead • Program Monitor, Loading and Initialization
  • 23. ThankThank You !!!You !!! For More Information click below link: Follow Us on: http://vibranttechnologies.co.in/embedded-system- classes-in-mumbai.html