ARM Documentation Series: GIC

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

Leave a Comment