The System Manager (SM) is a low-level firmware component that runs on the Cortex-M33 core as part of the i.MX95 boot flow. It operates in the Always-ON (AON) domain and is responsible for centralized management of system-critical resources.
To enable safe sharing of these resources with other cores, the SM exposes controlled access through SCMI interfaces while retaining exclusive ownership of the underlying hardware.
Function
The SM is designed to manage and protect SoC resources that are fundamental to system stability, including power domains, clocks, resets, pin configuration, PMIC interaction, and fault handling.
Unlike many platforms where such functionality executes on the application cores (for example in a hypervisor or TF-A), the i.MX95 treats the primary OS as the least critical software component. For this reason, system management is delegated to the Cortex-M33 core, which is isolated from the application cores and can remain powered even when they are shut down.
Because application and auxiliary cores still require controlled access to these critical resources, the SM implements SCMI protocols and communication channels to service their requests.
At a high level, the SM is responsible for:
-
Enforcing isolation between cores to prevent interference
-
Owning and safeguarding access to critical SoC resources
-
Providing standardized communication interfaces to user cores
-
Monitoring and responding to system-level events and faults
Source code
The System Manager is open-source and entirely developed by NXP. The SM source code is available at https://github.com/digi-embedded/imx-sm.
This is forked from the SoC vendor (NXP) repo and contains Digi customizations for the ConnectCore 95 SOM.
Digi Embedded Yocto recipe
The recipe that builds the System Manager is called imx-system-manager.
The original recipe belongs to meta-imx layer.
Digi Embedded Yocto appends the recipe in link:https://github.com/digi-embedded/meta-digi/blob/scarthgap/meta-digi-arm/dynamic-layers/arm-toolchain/recipes-bsp/imx-system-manager/
To build the SM from within a Digi Embedded Yocto project:
$ bitbake imx-system-manager
Documentation
The SM source code repo contains extensive HTML documentation that explains the architecture, the APIs, and the porting guide. Check the README on the project for instructions to build this documentation.