Half-Watt’s ARM series articles:
• ARM Documentation Series Part One: System Software Engineers View on ARM
• ARM Documentation Series Part Two: ARM CPU Documentation
• ARM Documentation Series Part Three: ARM CPU TRM – Taking Cortex-A76 as an Example
• ARM Documentation Series Part Four: CoreSight Architecture and TRM
• How to Play with ARM Without a Development Board
The interrupt controller is actually a very important part of the system, but unfortunately, the documentation is quite scattered, comparable to CoreSight. Let’s briefly discuss the documentation related to GIC.
The basic question of interrupts is how to handle them, which can be divided into two parts. One part is the ARM architecture’s support for interrupts; under the ARM architecture, interrupts are a type of exception. If you have basic knowledge of exceptions, take a look at how the ARM architecture handles IRQ and FIQ. It is important to understand how software and hardware work together. The other part is how device interrupts are handled, which involves primary and secondary interrupts. It also relates to the classification of interrupts under the ARM architecture (SGI, PPI, SPI, LPI).
If you have any doubts about the basic knowledge of interrupts mentioned above, I still recommend the following introductory readings:
• ARM Cortex-A Series Version: 1.0 Programmer’s Guide for ARMv8-A Section 10.5 Interrupt Handling
• ARM Cortex-A Series Version: 4.0 Programmer’s Guide Chapter 12
Interrupt Handling
Then you can test your understanding with Andre Przywara’s “ARM Interrupt Virtualization” [1]. If you have a basic understanding, check out the GIC spec [2] and ARM ARM to see if you can clarify routing.
If you feel lost, take a look at the GICv3 and GICv4 Software Overview, particularly Chapter 2 Introduction and Chapter 3 GICv3 Fundamentals, which are well written.
If these descriptions confuse you, you can check out Half-Watt’s ARM course “Master ARM Architecture in 8 Hours”, which is specifically designed for software engineers to understand ARM CPU architecture. There is a dedicated WeChat group for discussions with peers, and there are also assignments to help everyone understand better. Click the original text to go directly.
Reference Links
1. ARM Interrupt Virtualization
http://events17.linuxfoundation.org/sites/events/files/slides/ARM_Interrupt_Virtualization_Przywara.pdf
2. ARM Generic Interrupt Controller Architecture Specification GIC architecture version 3.0 and version 4.0