Registered User mNo edit summary |
Registered User m (Assignment tables reviewed with architects) |
||
Line 3: | Line 3: | ||
|MPUs checklist=STM32MP13x, STM32MP15x | |MPUs checklist=STM32MP13x, STM32MP15x | ||
}}</noinclude> | }}</noinclude> | ||
==Article purpose== | ==Article purpose== | ||
Line 26: | Line 20: | ||
===Boot time assignment=== | ===Boot time assignment=== | ||
The NVIC peripheral is not used at boot time. | |||
The NVIC | |||
===Runtime assignment=== | ===Runtime assignment=== | ||
Line 60: | Line 41: | ||
* '''STM32Cube''': [[STM32CubeMP1 architecture|NVIC HAL driver]] | * '''STM32Cube''': [[STM32CubeMP1 architecture|NVIC HAL driver]] | ||
==How to assign and configure the peripheral== | ==How to assign and configure the peripheral== |
Revision as of 17:35, 19 June 2023
1. Article purpose[edit | edit source]
The purpose of this article is to:
- briefly introduce the NVIC peripheral and its main features,
- indicate the peripheral instances assignment at boot time and their assignment at runtime (including whether instances can be allocated to secure contexts),
- list the software frameworks and drivers managing the peripheral,
- explain how to configure the peripheral.
2. Peripheral overview[edit | edit source]
The NVIC peripheral is the Arm® Cortex®-M4 interrupt controller. As a result, it cannot be accessed by the Arm Cortex-A7 core.
Refer to the STM32MP15 reference manuals for the complete list of features, and to the software frameworks and drivers, introduced below, to see which features are implemented.
3. Peripheral usage[edit | edit source]
This chapter is applicable in the scope of the OpenSTLinux BSP running on the Arm® Cortex®-A processor(s), and the STM32CubeMPU Package running on the Arm® Cortex®-M processor.
3.1. Boot time assignment[edit | edit source]
The NVIC peripheral is not used at boot time.
3.2. Runtime assignment[edit | edit source]
3.2.1. On STM32MP15x lines
[edit | edit source]
Click on the right to expand the legend...
Domain | Peripheral | Runtime allocation | Comment | |||
---|---|---|---|---|---|---|
Instance | Cortex-A7 secure (OP-TEE) |
Cortex-A7 non-secure (Linux) |
Cortex-M4 (STM32Cube) | |||
Core/Interrupts | NVIC | NVIC | ✓ |
4. Software frameworks and drivers[edit | edit source]
Below are listed the software frameworks and drivers managing the NVIC peripheral for the embedded software components listed in the above tables.
- STM32Cube: NVIC HAL driver
5. How to assign and configure the peripheral[edit | edit source]
The peripheral assignment can be done via the STM32CubeMX graphical tool (and manually completed if needed).
This tool also helps to configure the peripheral:
- partial device trees (pin control and clock tree) generation for the OpenSTLinux software components,
- HAL initialization code generation for the STM32CubeMPU Package.
The configuration is applied by the firmware running in the context in which the peripheral is assigned.