The System Manager (SM) is an application that runs on a Cortex-M processor on many NXP i.MX processors. The Cortex-M is the boot core, runs the boot ROM which loads the SM (and other boot code), and then branches to the SM. The SM then configures some aspects of the hardware such as isolation mechanisms and then starts other cores in the system. After starting these cores, it enters a service mode where it provides access to clocking, power, sensor, and pin control via a client RPC API based on ARM's System Control and Management Interface (SCMI). To facilitate isolation between cores, the SM partitions the SoC into logical machines (LM) which have statically configurable access rights to both hardware and RPC API calls.
Compiling requires an ARM cross-compiler. Download and install the required arm-none-eabi toolchain from the Arm GNU Toolchain Downloads website. For example, from the x86_64 Linux hosted cross toolchains AArch32 bare-metal target (arm-none-eabi) section, download the *.xv file to a directory for the tool chain (e.g. tools) and then:
tar xvf *.mv
Set the TOOLS shell variable to the directory the toolchain is installed in. For example:
export TOOLS=~/tools
When the toolchain is in a directory like arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi in this tools directory.
Also ensure the Linux installation is up-to-date and then install:
sudo apt-get -y install make gcc g++-multilib srecord
See the Release Notes for the exact toolchain version the SM was tested with.
To get started with the SM on an NXP board, download the github repository and then compile the SM for the target configuration.
For example, in the top directory of the code base:
make config=mx95evk all
Then copy the resulting binary image file, build/mx95evk/m33_image.bin, to the iMX95 directory of the mkimage tool. Build a boot container using mkimage, program it to the boot device, and boot the board. The SM will display a debug monitor prompt on the M33 debug UART.
The above config is for Linux+M7 system testing. Another config is delivered for MCUXpresso testing:
make config=mx95alt all
Customers will usually create their own config that partitions resources between the AP and M7 for their use-case.
To build the full documentation, install the required tools:
sudo apt-get -y install make doxygen texlive texlive-latex-extra
Then change to the documentation directory (sm/doc) and execute the following:
make html
The output is written to the build directory (sm/doc/build/html). The top level for the html output is the index.html file.
To build the release notes:
make rn
The output is sm/doc/sm-rn.pdf (also an html version in sm/doc/build/html).