How to easily run a SCMI server in various Execution Environments
Under construction
Running SCMI server with OP-TEE
The easiest way to test the SCMI server in OP-TEE is to built it for qemu Armv8Arm v8. OP-TEE documentation provides detailed information to build a qemu Armv8 dev environment here.
The SCP-firmware is not yet part of the manifest but a PR is under review to add it : https://github.com/OP-TEE/manifest/pull/252
Similarly, SCMI server is not enabled by default for qemu_v8 platform but a PR is under review to enable compiling OP-TEE os with SCMI server: https://github.com/OP-TEE/build/pull/695. In the meantime, a manifest using the PR has been created https://github.com/vingu-linaro/manifest/tree/optee-with-scmi .Arm v8 dev environment here.
You just need to add WITH_SCMI=y option in the make command to enable the SCMI server. The whole sequence to use the pending PRs setup a dev environment with a SCMI server can be summarized:
$ mkdir <project-dir>
...
$ repo init -u https://github.com/vingu-linaro/manifest.git -m qemu_v8.xml -b optee-with-scmi -m qemu_v8.xml
$ repo sync
$ cd build
$ make toolchains
...
The configuration of the scmi server is located in the directory : <project-dir>/SCP-firmware/product/optee-/fvp/fw/
. The following scmi protocols have been enable with mock devices:
...
You will have to build a kernel image using the branch above and to prepare a rootfs with your favorite tool. Then start the FVP with:
shrinkwrap -I docker.io/shrinkwraptool/base-full:latest run --rtvar=KERNEL=<path-to-Image> --rtvar=ROOTFS=<path-to-rootfs> ffa-tftf.yaml
...