GIC Standalone driver

GIC Standalone driver

Introduction

This page gives an overview of scugic driver which is available as part of the Xilinx Vivado and SDK distribution.



Driver Sources

The source code for the driver is included with the Vitis Unified Software Platform installation, as well as being available in the Xilinx Github repository. 



Driver Name

Path in Vitis

Path in Github

Driver Name

Path in Vitis

Path in Github

scugic

<Vitis Install Directory>/data/embedded/XilinxProcessorIPLib/drivers/scugic

https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/scugic



Note: To view the sources for a particular release, use the rel-version tag in github.  For example, for the 2020.1 release, the proper version of the code is: https://github.com/Xilinx/embeddedsw/tree/release-2020.1/XilinxProcessorIPLib/drivers/scugic

The driver source code is organized into different folders.  The table below shows the ospipsv driver source organization. 



Directory

Description

Directory

Description

doc

Provides the API and data structure details

data

Driver .tcl, .mdd and .yaml file

examples

Example applications that show how to use the driver features

src

Driver source files, make and cmakelists file

Note: The .yaml(in data folder) and CMakeLists.txt(in src folder) files would be used in System Device Tree based flow.

Driver Implementation

For a full list of features supported by this IP, please refer ARM GIC v2 and v3 specifications.

Features Supported



  • Support for following type of interrupts,

    • Software generated interrupts (SGIs)

    • Shared-peripheral interrupts (SPIs) from PS and PL

    • Private-peripheral interrupts (PPIs)

  • Interrupt prioritization and handling

  • Programming of interrupt routing to one or more processors

  • Enabling and disabling of interrupts.

  • Programming interrupt sensitivity

  • Uni-processor and multiprocessor environments



Known issues and Limitations

  • GICv3 based controllers support 1 of N SPI interrupt selection mode. It is not supported in driver. Interrupts are mapped to only one specific core.



Example Applications

Refer to the driver examples directory for various example applications that exercise the different features of the driver. Each application is linked in the table below. The following sections describe the usage and expected output of the various applications.  These example applications can be imported into the Vitis IDE from the Board Support Package  settings tab. 

Links to Examples

Examples Path:

https://github.com/Xilinx/embeddedsw/tree/xlnx_rel_v2023.2/XilinxProcessorIPLib/drivers/scugic/examples



Test Name

Example Source

Description

Test Name

Example Source

Description

SCUGIC software generated interrupt example

xscugic_example.c

This example demonstrates triggering of interrupts by simulating software generated interrupt.

SCUGIC self test example

xscugic_tapp_example.c

This examples demonstrates basic initialization of scugic driver

SCUGIC low level example

xscugic_low_level_example.c

This example demonstrates triggering of interrupts by simulating software generated interrupt. It uses low level APIs of scugic driver.

Example Application Usage

SCUGIC software generated interrupt example

This example demonstrates triggering of interrupts by simulating software generated interrupt.


Expected output

GIC Example Test Successfully ran GIC example Test

SCUGIC low level example

This example demonstrates triggering of interrupts by simulating software generated interrupt. It uses low level APIs of scugic driver.
Expected Output

Low Level GIC Example Test Successfully ran Low Level GIC example Test

SCUGIC selftest example

This examples demonstrates basic initialization of scugic driver

Expected Output

Successfully ran Scugic self test Example

Note:

  • Driver examples are not ported to system device tree flow

Changelog

2025.1

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2025.1/doc/ChangeLog#L3096

2024.2

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2024.2/doc/ChangeLog#L613

2024.1

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2024.1/doc/ChangeLog#L724

2023.2

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2023.2/doc/ChangeLog#L291

2023.1

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2023.1/doc/ChangeLog#L115

2022.2

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2022.2/doc/ChangeLog#L42



2022.1

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2022.1/doc/ChangeLog#L89

2021.2

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2021.2/doc/ChangeLog#L189

2021.1

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2021.1/doc/ChangeLog#L385

2020.2

https://github.com/Xilinx/embeddedsw/blob/release-2020.2/doc/ChangeLog#L659

2020.1

https://github.com/Xilinx/embeddedsw/blob/release-2020.1/doc/ChangeLog#L519

2019.2

https://github.com/Xilinx/embeddedsw/blob/release-2019.2/doc/ChangeLog#L195

2019.1

https://github.com/Xilinx/embeddedsw/blob/release-2019.1/doc/ChangeLog#L142

2018.3

https://github.com/Xilinx/embeddedsw/blob/release-2018.3/doc/ChangeLog#L252

2018.2

None

2018.1

https://github.com/Xilinx/embeddedsw/blob/release-2018.1/doc/ChangeLog#L211



2017.4

None

2017.3

https://github.com/Xilinx/embeddedsw/blob/release-2017.3/doc/ChangeLog#L286

2017.2

https://github.com/Xilinx/embeddedsw/blob/release-2017.3/doc/ChangeLog#L444

2017.1

https://github.com/Xilinx/embeddedsw/blob/release-2017.3/doc/ChangeLog#L790

2016.4

https://github.com/Xilinx/embeddedsw/blob/release-2017.3/doc/ChangeLog#L1058

2016.3

https://github.com/Xilinx/embeddedsw/blob/release-2017.3/doc/ChangeLog#L1351



Related Links

Related content

© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy